IP Library Granted Patent US 8,037,096
Granted Patent B2
US 8,037,096 · App. 11/771,163 · Granted Oct 11, 2011

Memory efficient data processing

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,037,096
App. No.
11/771,163
Granted
Oct 11, 2011
Kind
B2
Abstract

Memory efficient data processing is provided in a computer environment. A data representation or description is utilized to reduce memory footprint. A data structure can be serialized iteratively utilizing the representation rather than first loading the entire data structure to memory. Portions of the data structure can be materialized to and removed from memory as function of operational need.

Claims (42)

1. A structured data processing system, comprising:

a processor;

system memory;

an inferring component that infers an operation from a plurality of available operations to be performed on a data structure from contextual information about the data structure, wherein the plurality of operations use different portions of data during execution of the data depending on which operation is performed, and wherein the contextual information includes one or more previous runs and execution behavior;

an analyzer component that analyzes the inferred operation to determine which portion of data the inferred operation is to use and is to be materialized into memory;

a constructor component that constructs a data representation that is separate from and external to the data that is to be materialized, according to the analyzer component's determination of which data is to be materialized into memory, wherein the data representation describes computations of the data structures that are to be materialized rather than comprising the structures in their original format or in another format, such that a declarable set of data structures is identifiable and accessible using the data representation;

an evaluation component that evaluates the declarable set of data structures represented by the data representation in accordance with the operation to produce a result; and

a materializing component that materializes the data structures based on the data representation that describes the data structures, wherein the materializing component identifies an optimal amount of data to materialize based on current processing resource use for the system such that determined current need for the data is balanced against processing resource use, deferring materializing of an optimal portion of the data structures into memory until after the inferred operation is determined and the data portion is indicated as being needed when balanced with the current processing resource use.

2. The system of claim 1 , the constructor component materializes a data structure described by the representation in memory.

3. The system of claim 1 , the constructor component saves the data representation to memory.

4. The system of claim 3 , the evaluation component performs a serialization operation.

5. The system of claim 4 , the evaluation component executes the data representation iteratively and outputs results as they are determined.

6. The system of claim 5 , memory space is immediately made available for recapture after each result is output.

7. The system of claim 3 , the constructor component materializes a portion of the structure described by the representation in memory to enable further processing.

8. The system of claim 7 , the constructor component constructs only the minimum structured necessary to effect the further processing.

9. The system of claim 7 , further comprising an optimization component that determines whether or not the constructed portion should remain in memory after an evaluation as a function of memory space and likelihood of reuse.

10. The system of claim 1 , the components are part of an application programming interface.

11. The system of claim 1 , the components are part of a program language implementation.

12. A method of processing data, comprising:

inferring an operation from a plurality of available operations to be performed on a data structure from contextual information about the data structure, wherein the plurality of operations use different portions of data during execution of the data depending on which operation is performed, and wherein the contextual information includes one or more previous runs and execution behavior;

analyzing the inferred operation to determine which portion of data the inferred operation is to use and is to be materialized into memory;

constructing a data representation that is separate from and external to the data that is to be materialized, according to the analyzer component's determination of which data is to be materialized into memory, wherein the data representation describes computations of the data structures that are to be materialized rather than comprising the structures in their original format or in another format, such that a declarable set of data structures is identifiable and accessible using the data representation;

materializing in memory the data structures based on the data representation that describes the data structures, wherein the materializing component identifies an optimal amount of data to materialize based on current processing resource use for the system such that determined current need for the data is balanced against processing resource use, deferring materializing of an optimal portion of the data structures into memory until after the inferred operation is determined and the data portion is indicated as being needed when balanced with the current processing resource use;

producing data utilizing the data representation; and

performing the operation using the produced data.

13. The method of claim 12 , further comprising evaluating the description iteratively to acquire the data.

14. The method of claim 13 , further comprising serializing data to a computer readable medium or communication stream.

15. The method of claim 12 , further comprising:

identifying a data producing operation; and

materializing a portion of structured data identified by the description in memory as a function of the operation.

16. The method of claim 15 , identifying a query operation over a segment of structured data.

17. The method of claim 15 , further comprising removing the materialized portion from memory subsequent to data production.

18. The method of claim 15 , materializing a portion of structured data comprises determining and saving one or more relationships between data elements as a function of the operation.

19. The method of claim 12 , comprising producing one of XML data, a database table, a comma separated file, a stream, music and video.

20. A structured data processing system, comprising:

processing means;

memory means;

means for inferring an operation from a plurality of available operations to be performed on a data structure from contextual information about the data structure, wherein the plurality of operations use different portions of data during execution of the data depending on which operation is performed, and wherein the contextual information includes one or more previous runs and execution behavior;

means for analyzing the inferred operation to determine which portion of data the inferred operation is to use and is to be materialized into memory;

means for constructing a descriptive data representation that is separate from and external to the data that is to be materialized, according to the analyzer component's determination of which data is to be materialized into memory, wherein the data representation describes computations of the data structures that are to be materialized rather than comprising the structures in their original format or in another format, such that a declarable set of data structures is identifiable and accessible using the data representation;

means for materializing in memory the data structures based on the data representation that describes the data structures, wherein the materializing component identifies an optimal amount of data to materialize based on current processing resource use for the system such that determined current need for the data is balanced against processing resource use, deferring materializing of an optimal portion of the data structures into memory until after the inferred operation is determined and the data portion is indicated as being needed when balanced with the current processing resource use; and

means for executing the descriptive data representation iteratively to serialize structured data described by the representation without loading an entire data structure in memory.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2008
From: CHAMPION, MICHAEL; HEJLSBERG, ANDERS; KIMBALL, ANDREW; LAMMEL, RALF; MEIJER, HENRICUS JOHANNES MARIA; VASILIAN, ION
To: MICROSOFT CORPORATION
Reel/Frame 020572/0088 →
Continuity (1)
Related Publication 20090006450A1 · Jan 1, 2009