Patent
Systems and methods for fragment-based serialization
العنوان: | Systems and methods for fragment-based serialization |
---|---|
Patent Number: | 7,702,637 |
تاريخ النشر: | April 20, 2010 |
Appl. No: | 11/154496 |
Application Filed: | June 15, 2005 |
مستخلص: | A method and system for fragment-based serialization places one or more object members in fragments. Fragments may comprise a header and a payload. A header can provide useful information about the fragment, such as an indication of fragment type and an indication of fragment length. A payload may comprise one or more members of an object. Primitive members may be stored in a Binary Fragment with a record format payload. LOB and FS members may be stored in fragments that have a Value Type field for setting forth additional properties of the fragment. Collections may be stored in a series of fragments, a first fragment to indicate a start of a collection, one or more second fragments to serialize collection elements, and a Terminator Fragment to indicate the end of a collection. Fragment-serialized objects minimize storage overhead while providing fast instantiation and low-cost location and updating. |
Inventors: | Terek, F. Soner (Bellevue, WA, US); Kalhan, Ajay (Redmond, WA, US); Ponnekanti, Nagavamsi (Bellevue, WA, US); Rangarajan, Srikumar (Sammamish, WA, US); Zwilling, Michael J. (Redmond, WA, US) |
Assignees: | Microsoft Corporation (Redmond, WA, US) |
Claim: | 1. A method for storing or transmitting a data object made of one or more data members, comprising: dividing a plurality of sequentially located bytes in a computing device into at least one header section and at least one payload section; representing at least one data member in the payload section, said at least one data member being associated with a data type, the data type having multiple sub-types, the data type being associated with a value type, the data type specifying a predefined type of the at least one data members, the value type further specifying the predefined type of the at least one data member as one of the multiple sub-types of the data type of the at least one data member, and describing the at least one data member by including at least one attribute of the at least one data member, the at least one data member having a length and having a related data member, the related data member being locatable by locator information; representing the data type of the at least one data member in the header section; representing the value type of the at least one data member in the header section, the at least one data member being associated with the value type; representing the length of the at least one data member in the header section, the length being required in the header section by at least one of the represented data type and the represented value type; representing the locator information of the at least one data member in the header section, the locator information being required in the header section by at least one of the represented data type and the represented value type; placing the at least one data member in the payload section in a record format, wherein the record format defines a predictable location for said at least one data member in relation to any other members in the payload section; and storing the data object with the at least one data member in the payload section thereof and the data type, value type, length, and locator information in the header section thereof in a computer-readable storage medium. |
Claim: | 2. The method of claim 1 , wherein the at least one data member is associated with a primitive data type. |
Claim: | 3. The method of claim 1 , further comprising representing a payload length in the header section. |
Claim: | 4. The method of claim 1 , further comprising: further dividing the plurality of sequentially located bytes into at least one second header section and at least one second payload section, wherein said at least one second header section and said at least one second payload section are located proximally to each other; and representing location information for the at least one second data member in the at least one second payload section, wherein the location information specifies a location of a location type; and identifying the location type in the second header section. |
Claim: | 5. The method of claim 4 , further comprising placing a LOB type data member in the at least one second payload section. |
Claim: | 6. The method of claim 4 , further comprising placing a FS type data member in the at least one second payload section. |
Claim: | 7. The method of claim 4 , further comprising representing a payload length in the at least one second header section. |
Claim: | 8. The method of claim 1 , further comprising: further dividing the plurality of sequentially located bytes into at least one second header section; and marking with said at least one second header section the start of a collection of related data members located substantially proximally to said at least one second header section. |
Claim: | 9. The method of claim 8 , further comprising indicating in said at least one second header section whether the collection of related data members is ordered or unordered. |
Claim: | 10. The method of claim 1 , further comprising: further dividing the plurality of sequentially located bytes into at least one second header section; and marking with said at least one second header section the end of the data object. |
Claim: | 11. A computer readable storage medium bearing instructions for storing or transmitting a data object made of one or more data members, comprising: instructions for dividing a plurality of sequentially located bytes in a computing device into at least one header section and at least one payload section; instructions for representing at least one data member in the payload section, said at least one data member being associated with a data type, the data type having multiple sub-types, the data type being associated with a value type, the data type specifying a predefined type of the at least one data member, the value type further specifying the predefined type of the at least one data member as one of the multiple sub-types of the data type of the at least one data member, and describing the at least one data member by including at least one attribute of the at least one data member, the at least one data member having a length and having a related data member, the related data member being locatable by locator information; instructions for representing the data type of the at least one data member in the header section; instructions for representing the value type of the at least one data member in the header section, the at least one data member being associated with the value type; instructions for representing the length of the at least one data member in the header section, the length being required in the header section by at least one of the represented data type and the represented value type; instructions for representing the locator information of the at least one data member in the header section, the locator information being required in the header section by at least one of the represented data type and the represented value type; and instructions for placing the at least one data member in the payload section in a record format, wherein the record format defines a predictable location for said at least one data member in relation to any other members in the payload section. |
Claim: | 12. The computer readable storage medium of claim 11 wherein the at least one data member is associated with a primitive data type. |
Claim: | 13. The computer readable storage medium of claim 11 , further comprising instructions for representing a payload length in the header section. |
Claim: | 14. The computer readable storage medium of claim 11 , further comprising: instructions for further dividing the plurality of sequentially located bytes into at least one second header section and at least one second payload section, wherein said at least one second header section and said at least one second payload section are located proximally to each other; instructions for representing location information for the at least one second data member in the at least one second payload section, wherein the location information specifies a location of a location type; and instructions for identifying the location type in the second header section. |
Claim: | 15. The computer readable storage medium of claim 14 , further comprising instructions for representing a payload length in the at least one second header section. |
Claim: | 16. The computer readable storage medium of claim 11 , further comprising: instructions for further dividing the plurality of sequentially located bytes into at least one second header section; and instructions for marking with said at least one second header section the start of a collection of related data members located substantially proximally to said at least one second header section. |
Current U.S. Class: | 707/100 |
Patent References Cited: | 5568639 October 1996 Wilcox et al. 5634123 May 1997 Bennion 5727203 March 1998 Hapner et al. 5768578 June 1998 Kirk et al. 6012067 January 2000 Sarkar 6266673 July 2001 Hong et al. 6904454 June 2005 Stickler 7523111 April 2009 Walmsley 2002/0143521 October 2002 Call 2004/0078467 April 2004 Grosner et al. 2004/0220946 November 2004 Krishnaprasad et al. 2005/0091228 April 2005 Venkatesh et al. 2005/0234986 October 2005 Terek et al. |
Other References: | U.S. Appl. No. 10/775,282, filed Feb. 10, 2004, Venkatesh et al. cited by other U.S. Appl. No. 10/776,371, filed Feb. 10, 2004, Carlin et al. cited by other U.S. Appl. No. 10/821,687, filed Apr. 9, 2004, Terek et al. cited by other Berg, C., “How Do I Create Persistent Java Objects?” Dr. Dobb's J., 1997, 22(4), 98-101. cited by other Chien, a.A., “Concurrent Aggregates (Ca) — Design and Experience with a Concurrent Object — Oriented Language Based on Aggregates,” J. Parallel and Distributed Computing, 1995, 25(2), 174-196. cited by other Darby, C., “Object Serialization in Java 1.1. Making Objects Persistent,” WEB Techniques, 1997, 2(9), 55, 58-59. cited by other Haverlock, K., “Object Serialization, Java, and C++,” Dr. Dobb's J., 1998, 23(8), 32, 34, 36-37. cited by other Lim, J.B. et al., “Transaction Processing in Mobile, Heterogeneous Database Systems,” IEEE Trans. on Knowledge and Data Engineering, 2002, 14(6), 1330-1346. cited by other Fuh, Y-C. et al., “Implementation of SQL3 Structured Types with Inheritance and Value Substitutability,” Digital Symposium Collection 2000, 2000, Abstract only, 2 pages, www.acm.orgisigmod/disc/p. implementationoyostw.htm. cited by other |
Assistant Examiner: | Colan, Giovanna |
Primary Examiner: | Breene, John E |
Attorney, Agent or Firm: | Woodcock Washburn LLP |
رقم الانضمام: | edspgr.07702637 |
قاعدة البيانات: | USPTO Patent Grants |
الوصف غير متاح. |