WO2001084298A1 - Method and apparatus for storing and accessing data in computer systems - Google Patents

Method and apparatus for storing and accessing data in computer systems Download PDF

Info

Publication number
WO2001084298A1
WO2001084298A1 PCT/US2001/014138 US0114138W WO0184298A1 WO 2001084298 A1 WO2001084298 A1 WO 2001084298A1 US 0114138 W US0114138 W US 0114138W WO 0184298 A1 WO0184298 A1 WO 0184298A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
objects
skip
data record
record
Prior art date
Application number
PCT/US2001/014138
Other languages
French (fr)
Inventor
Stephen C. Hahn
Tim P. Marsland
Original Assignee
Sun Microsystems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems, Inc. filed Critical Sun Microsystems, Inc.
Priority to EP01934986A priority Critical patent/EP1287426A4/en
Priority to AU2001261123A priority patent/AU2001261123A1/en
Publication of WO2001084298A1 publication Critical patent/WO2001084298A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases

Definitions

  • the present invention relates to computing systems and, more particularly, to storing and accessing data in computing systems.
  • Fig. 1 A depicts a portion of an address space 100 having various data objects scattered inside
  • a data object 102 can reference a group of data objects 104, 106 and 108.
  • Each of the data objects 104, 106 and 108 contain data which can, for example, represent a particular type of data (e.g., integer, float, string, etc.) Accordingly, data objects of various types and sizes may be associated with each other in a group.
  • the data in the address space 100 may represent several layers of nesting between data objects.
  • data object 102 references data object 108 which in turn references a data object 1 10.
  • the data object 1 10 may also reference data objects 1 12 and 1 14, and so on.
  • Fig. 1 B depicts a conventional data record 120 suitable for storage of data in a sequential manner.
  • the conventional data record 120 is partitioned into equally sized portions (e.g., 122, 124, and 126).
  • the size of these equally sized portions is typically predetermined (e.g., 1 K bytes).
  • Data can be stored in the equally sized portions of the conventional data record 120.
  • data objects 102, 104, and 106 also shown in Fig.
  • data record portions 122, 124, and 126 can be respectively stored on data record portions 122, 124, and 126.
  • data record 200 is partitioned into relatively large portions.
  • the data portions are of a predetermined size, it is relatively easy to traverse the conventional data record 120 both in forward and backward directions.
  • the conventional data record 120 allows storage of data objects of various sizes, the conventional data record 120 has various drawbacks. For example, one problem is that relatively large amounts of space need to be reserved for each portion (e.g., 102, 104, and 106) regardless of the size of data that needs to be stored for a particular portion. Another problem is that the conventional data record 120 is not suitable for capturing relationships between data objects.
  • data objects associated with each other in a group cannot be adequately represented in the conventional data record 120.
  • data objects in a nested relationship (“hierarchical” relationships) cannot be adequately represented by the conventional data record 120.
  • a data packing module suitable for packing data and storing it on a data record.
  • the data packing module can store data objects of various types and sizes on the data record. In addition to data associated with each data object, various relationships between data objects can be stored on the data record by the data packing module.
  • a data unpacking module suitable for unpacking data stored on a data record is disclosed. The data unpacking module can be used to access data associated with data objects as well as various other information stored on the data record.
  • a data accessing interface is provided to enable access to data stored on the data record. For example, the data accessing interface provides the ability to read data, as well as the ability to traverse the data record in both forward and backward directions.
  • the invention can be implemented in numerous ways, including a system, an apparatus, a data record, a method, or a computer readable medium. Several embodiments of the invention are discussed below.
  • one embodiment of the invention includes at least the acts of: storing a forward-skip-indicator for an object; storing data associated with the object; and storing a back-skip-indicator for the data object.
  • one embodiment of the invention comprises: a forward- skip-indicator field capable of having a forward-skip value which can be used to determine ⁇ next-position in the data record which can represent the position of a next sequentially stored object on the data record; a data field suitable for storing data associated with one or more objects; and a back-skip-indicator field capable of having a back-skip value which can be used to determine a previous-position in the data record which can represent the position of a previous sequentially stored object on the data record.
  • one embodiment of the invention comprises: one or more data objects capable of respectively having associated data that does not have a predetermined size; a data record capable of holding data; and a data packing module operating to sequentially store the one or more data objects on the data record.
  • the data packing module operates to store at least two indicators on the data record to enable traversal of the data record in forward and backward directions.
  • another embodiment of the invention comprises: a data record having two or more data objects being sequentially stored on it, each of the two or more data objects capable of respectively having associated data that does have a predetermined size; and a data unpacking module operating to access the data record to access one or more data objects on the data record, the unpacking module capable of accessing data associated with the one or more data objects, and the unpacking module capable of traversing the data record in forward and backward directions.
  • one embodiment of the invention includes at least the acts of: reading a back-skip or a forward-skip value stored on the data record; and moving a reference to the data record by the back-skip or the forward skip value.
  • computer readable media including computer program code for storing information capable of being represented as one or more objects with associated data one embodiment of the invention comprises: computer program code for storing a forward-skip-indicator for an object; computer program code for storing data associated with the object; and computer program code for storing a back-skip-indicator for the data object.
  • the advantages of the invention are numerous. Different embodiments or implementations may have one or more of the following advantages.
  • One advantage is that the invention allows data objects of various sizes to be stored in a space efficient manner.
  • Another advantage is that the invention allows various relationships between data objects to be captured and stored in a data record.
  • Yet another advantage is that the invention provides for accessing the stored data in an efficient manner.
  • Fig. 1 A depicts a portion of an address space having various data objects scattered inside.
  • Fig. 1 B depicts a conventional data record suitable for storage of data in a sequential manner.
  • Fig. 2A illustrates an exemplary computing environment including a data packing module in accordance with one aspect of the present invention.
  • Fig. 2B illustrates an exemplary computing environment including a data unpacking module in accordance with another aspect of the present invention.
  • Figs. 3A, 3B, 3C, and 4D illustrate data record portions in accordance with various embodiments of the invention.
  • Fig. 4 illustrates an exemplary data storing method for storing data objects on a data record in accordance with one embodiment of the invention.
  • Figs. 5A and 5B illustrate a method for storing one or more data objects as a group object on a data record in accordance with one embodiment of the invention.
  • Figs. 6A and 6B illustrate an exemplary method for accessing one or more data objects stored as a group object in a data record.
  • Fig. 7 illustrates an exemplary method for advancing a current position reference over data objects stored on a data record in the forward direction.
  • Fig. 8 illustrates an exemplary method for moving a current position reference over data objects stored on a data record in the backward direction DETAILED DESCRIPTION OF THE INVENTION
  • the invention relates to techniques for storing and accessing data in computer systems.
  • a data packing module suitable for packing data and storing it on a data record is disclosed.
  • the data packing module can store data objects of various types and sizes on the data record. In addition to data associated with each data object, various relationships between data objects can be stored on the data record by the data packing module.
  • a data unpacking module suitable for unpacking data stored on a data record is disclosed.
  • the data unpacking module can be used to access data associated with data objects as well as various other information stored on the data record.
  • a data accessing interface is provided to enable access to data stored on the data record.
  • the data accessing interface provides the ability to read data, as well as the ability to traverse the data record in both forward and backward directions.
  • Fig. 2A illustrates an exemplary computing environment 200 including a data packing module 202 in accordance with one aspect of the present invention.
  • the data packing module 202 can package data resident in the computing environment 200 and store it on the data record 204.
  • the data that is packaged by the data packing module 202 can be resident in a memory 204 and/or a persistent storage device 206 (e.g., a disk).
  • the data packing module 202 may access the data directly or through an operating system (not shown in Fig. 2A) in the computing environment 200.
  • the data packaged by the data packing module 202 can be scattered in an address space format (e.g., non-contiguous memory or disk locations).
  • the size of data that is packaged by the data packing module need not be predetermined.
  • the data packing module 202 can package and store data objects of various sizes in a sequential format on the data record 204.
  • data objects of various sizes can be stored on the data record 204 without wasting a significant amount of storage space.
  • various relationships between data objects can be captured and stored on the data record 204. For example, these relationships include " peer-to-peer" relationships between data objects associated with each other in a " group”, as well as “ hierarchical” relationships between data objects " nested” in multiple layers.
  • Fig. 2B illustrates an exemplary computing environment 250 including a data unpacking module 252 in accordance with another aspect of the present invention.
  • the data unpacking module 252 can be used to access the data stored on a data record 254.
  • the data stored on record 254 could have been stored by the data packing module 202 of Fig, 2A.
  • the data unpacking module 252 can be used to access data (e.g., read data) stored on the data record 254.
  • an application 254 may utilize the data unpacking module 252 to access the data through a data accessing interface 256.
  • various functions can be provided by the data accessing interface 256 to access data and/or navigate through the data record 254 (e.g., read(), nextO- and previousO functions that can be used to read and navigate through the data record in forward and backward directions).
  • Fig. 3A illustrates a data record portion 300 in accordance with one embodiment of the invention.
  • the data record portion 300 can represent a portion of the data record 204 generated by the data packing module 202 of Fig. 2.
  • the data record 300 includes a forward- skip-indicator field 302, a variable-length-data field 304, and a back-skip- indicator field 306.
  • the size of the variable-length-data field 304 is not predetermined.
  • the forward-skip-indicator field 302 and back-skip-indicator field 306 are of predetermined sizes (e.g., n bytes of data).
  • the value indicated by the forward-skip-indicator field 302 is the size of the data portion 300.
  • the sum of the sizes of all fields in that data portion 300 is the forward-skip- indicator field 302, variable length data field 304, and back-skip-indicator field 306 respectively have the sizes of si, s2, and s3 bytes
  • the forward- skip-indicator field 302 can have the value S which is the sum of sizes of all the data fields (si + s2 + s3).
  • the value S can be used to forward-skip over the data record portion 300 from a first bit 308 to a last bit 310 of the data record portion 300.
  • the back-skip-indicator 306 can be used to back-skip over the data record portion 300 from the last bit 310 to a first bit 308 of the data record portion 300.
  • data of various sizes can be stored in a data record portion in conjunction with information which facilitates traversal of a data record in forward and backward directions.
  • Fig. 3B illustrates a data record portion 320 in accordance with another embodiment of the invention.
  • the data record portion 320 includes a type-indicator field 322 which can be used to indicate the type of data object included in the variable length data field 324.
  • the type-indicator field 322 may be used to indicate that the data object is of a particular type (e.g., integer, string, real, etc).
  • Fig. 3C illustrates a data record portion 340 in accordance with yet another embodiment of the invention.
  • the data record portion 340 includes a type-indicator field 342 which indicates that the data included in the variable length data field 344 is of the type " Group" .
  • the type- indicator "Group” indicates that the data object contained in the variable length data field 344 is a group object which can represent one or more data objects.
  • the one or more data objects are associated with each other and collectively can be represented as a group.
  • each of the one or more data objects in the variable length data field 344 can have a variable length-data-field, as well as other fields (e.g., forward-skip, back-skip fields).
  • the variable- length-data field 344 may include one or more fields of variable sizes (e.g., variable-length-data field 304 or 324) with corresponding forward- skip-indicator and back-skip-indicator fields, as well as additional fields (e.g., type-indicators 322, or 342).
  • each data object in the group can have various sizes, Furthermore, these sizes need not be predetermined.
  • variables integer I, real , and string S which are of various sizes, can be grouped together and represented as a group.
  • a data object in a group can itself represent another group (one or more data objects).
  • data portions 300, 320, and 340 may be utilized to represent various relationships between data objects.
  • a group object may be a group without any data objects (i.e., an empty group without any members). These relationships include " peer-to-peer" relationships between data objects associated with each other in a group, as well as “ hierarchical” relationships between data objects nested in multiple layers.
  • Fig. 3D illustrates a data record portion 360 in accordance with still another embodiment of the invention.
  • the data record portion 360 represents a group of data objects contained in a variable-length-data field 364.
  • the forward-skip-indicator and back-skip- indicator fields 368 and 370 can be used to traverse the data record portion 360.
  • a number-of-objects indicator field can represent the number of objects in the group.
  • the variable length data field 364 includes one or more data record portions (320A...320B) which are stored sequentially. It should be noted that each one of the data objects in the group can be represented by a data record portion (320A...320B) which includes the fields shown in data record portion 320 of Fig. 3A.
  • the forward-skip-indicator and back-skip-indicator fields associated with each data object represented in the variable-length- data field 364 can respectively be used to skip over each data object in the group in the forward and backward directions.
  • Fig. 4 illustrates an exemplary data storing method 400 for storing data objects on a data record in accordance with one embodiment of the invention.
  • a reference to a data object is received.
  • a forward-skip-indicator field for the data object is stored on the data record.
  • a type- indicator field for the data object is stored on the data record.
  • the data associated with the data object is stored on the data record at operation 408.
  • a back-skip-indicator field is stored on the data record.
  • Figs. 5A and 5B illustrate a method 500 for storing one or more data objects as a group object on a data record in accordance with one embodiment of the invention.
  • the data storing method 400 can be utilized by the data packing module of 202 to store data on the data record 204 of Fig. 2A.
  • the group object (or group) can represent one or more data objects associated with each other.
  • the group data object does not itself include another group data object.
  • a group data object includes at least one data object.
  • the group data object may include one or more other group data objects.
  • a group data object may be a group without any data objects (i.e., an empty group without any members).
  • references to one or more data objects which are to be represented as a group on the data record are received. Initially, the reference points to the first data object in the group.
  • a forward-skip-indicator field is stored on the data record. This field can be of a predetermined size. Accordingly, the appropriate size (e.g., number of bytes) can be reserved and initialized to zero.
  • a type-indicator field which can have a predetermined size is stored on the data record. The type-indicator field is set to " Group" to indicate the group object type.
  • a number-of- objects indicator field which can have a predetermined size is stored on the data record. The number-of-objects indicator field can be set to a value which indicates the number of objects in the group.
  • a reference to the next data object in the group is obtained. Initially, this reference would be a reference to the first data object in the group.
  • a forward-skip-indicator field is stored for the first data object in the group. As noted above, this field can be used to forward-skip over the first data object (e.g., to the next data object in the group, the next group, etc.)
  • a type- indicator field is stored for the first data object in the group. This field can be set to indicate the type of data for the first data object in the data group. It should be noted that the data objects not having any data associated with them may be represented, for example, as the type " Null" .
  • the value indicated by the forward-skip-indicator field of the first object in the group (stored in operation 512) is added to the value indicated by the forward-skip-indicator of the group (initially set to zero at operation 504).
  • a determination is made as to whether there are more data objects in the group. If it is determined at operation 524 that there are one or more data objects in the group, the method 500 proceeds back to operation 510 where a reference to the next object (e.g., second data object in the group) can be obtained.
  • the next object in the group can be processed in accordance with operations 512-522 as discussed above.
  • the method 500 proceeds to operation 526 where a back-skip-indicator field for the group is stored on the data record and set to the appropriate value. Following operation 526, the method 500 ends.
  • Figs. 6A and 6B illustrate an exemplary method 600 for accessing one or more data objects stored as a group object in a data record.
  • the method 600 can be utilized by the unpacking data module 252 to access the data record 254 of Fig. 2B.
  • the method 600 can represent one or more functions (methods) provided by the data accessing interface 256 of Fig. 2B (e.g., a read function).
  • the method 600 can utilize a data record stored in accordance with the embodiment depicted in Fig. 3D. (data record portion 360).
  • data objects in the group do not represent another group of data objects.
  • the group contains at least one data object having data associated with it.
  • a reference to the current position (reference) in the data record is obtained. It should be noted that the current reference position points to the beginning of a data portion in the data record (e.g., the left-most bit of the forward-skip-indicator 368 of Fig. 3D),
  • the current reference position is advanced over the forward-indicator field.
  • the type-indicator field is read. As shown in Fig. 4D, the type-indicator field follows the forw ⁇ rd-skip-indic ⁇ tor field.
  • the current reference position is advanced over the type-indicator field at operation 608.
  • the number-of-objects indicator field is read. As depicted in Fig.
  • the number-of-objects indicator field follows a group type-indicator field.
  • the current reference position is advanced over the number-of-objects-indicator field. It should be noted that at this point the current reference points to the first data object in the group (e.g., leftmost bit of the data record portion 320A).
  • a group- index is set to zero.
  • the current reference position is advanced over the forward-skip field of the first data object in the group. It should be noted that each data object in the group can include the fields shown in data record portion 320 of Fig. 3B.
  • the type-indicator field of the first data object is read.
  • the current reference position is advanced over the type-indicator field (e.g., the type-indicator field 322 of Fig, 3B) at operation 620,
  • the data in the variable length data field is read.
  • the current reference position is advanced over the back- skip-indicator field of the next data object in the group.
  • the group-index is incremented by one.
  • a determination is made as to whether the group-index is equal to the number of objects in the group as indicated by the number-of-objects indicator field of the group (read at operation 610). If it is determined at operation 628 that the group-index is not equal to the number of objects in the group, the method 600 proceeds to operation 616 where the next data object (e.g. second data object) in the group can be processed.
  • Fig. 7 illustrates an exemplary method 700 for advancing a current position reference over data objects stored on a data record in the forward direction (e.g., from left to right of data record portion 360 of Fig. 3D).
  • the method 700 can be utilized by the unpacking data module 252 to access data record 254 of Fig. 2B.
  • the method 700 can represent one or more functions (methods) provided by the data accessing interface 256 of Fig. 2B (e.g., a next function for traversing the data record in the forward direction).
  • the method 700 can utilize that a data record stored in accordance with the embodiment depicted in Fig. 3D (data record portion 360).
  • a reference to the current position (reference) in the data record is obtained. It should be noted that the current reference position points to the beginning of a data portion in the data record (e.g., the left-most bit of the forward-skip-indicator field 368 of Fig. 3D).
  • the forward-skip-indicator field is read.
  • the current reference position is advanced over the forward-indicator field.
  • the type-indicator field is read. As shown in Fig. 4D, the type-indicator field follows the forward-skip- indicator field.
  • a determination is made as to whether the type-indicator field indicates the " Group" type.
  • the method 700 proceeds to operation 712 where the current position reference is moved back over the forward- skip-indicator field. Following the operation 712, at operation 714, the current reference position is advanced by the value indicated by the forward-skip-indicator (read at operation 704). The method 700 ends following the operation 714.
  • the method 700 proceeds to operation 716 where the current reference position is advanced over the forward-skip-indicator field. Following the operation 716, the current reference position is advanced over the number-of- objects-indicator field at operation 718. It should be noted that upon completion of the operation 718, the current reference position points to the first data object in the group. The method 700 ends following operation 718.
  • Fig, 8 illustrates an exemplary method 800 for moving a current position reference (reference) over data objects stored on a data record in the backward direction (e.g., from right to left of data record portion 360 of Fig. 3D).
  • the method 800 can be utilized by the unpacking data module 252 to access data record 254 of Fig. 2B.
  • the method 700 can represent one or more functions (methods) provided by the data accessing interface 256 of Fig. 2B (e.g., a previous function to locate the previous data object stored on the data record).
  • the method 800 can utilize a data record stored in the accordance with the embodiment depicted in Fig. 3D (the data record portion 360).
  • the current reference position points to the end of a data portion in the data record (e.g., the right-most bit of the back-skip-indicator field 368 of Fig. 3D).
  • the current position reference is moved back over the back-skip-indicator field.
  • the back-skip-indicator field is read at operation 806,
  • the current position reference is moved back by the value (e.g. number of bytes) indicated by the back- skip-indicator field (read at operation 808).
  • the invention can use a combination of hardware and software components.
  • the software can be embodied as computer readable code (or computer program code) on a computer readable medium.
  • the computer readable medium is any data storage device that can store data which can thereafter be read by a computer system.
  • Examples of the computer readable medium include read-only memory, random-access memory, CD-ROMs, magnetic tape, and optical data storage devices.
  • the computer readable medium can also be distributed over ⁇ network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
  • the advantages of the invention are numerous. Different embodiments or implementations may have one or more of the following advantages.
  • One advantage is that the invention allows data objects of various sizes to be stored in a space efficient manner.
  • Another advantage is that the invention allows various relationships between data objects to be captured and stored in a data record.
  • Yet another advantage is that the invention provides for accessing the stored data in an efficient manner.

Abstract

Improved techniques for storing and accessing data in computer systems (200) are provided. A data packing module (202) suitable for packing data and storing it on a data record (204) is disclosed. The data packing module can store data objects of various types and sizes on the data record. In addition to data associated with each data object, various relationships between data objects can be stored on the data record by the data packing module. A data unpacking module suitable for unpacking data stored on a data record is also disclosed. The data unpacking module can be used to access data associated with data objects as well as various other information stored on the data record. A data accessing interface can be provided to enable access to data stored on the data record. For example, the data accessing interface can be implemented to provide the ability to read data and traverse the data record in both forward and backward directions.

Description

METHOD AND APPARATUS FOR STORING AND ACCESSING DATA IN
COMPUTER SYSTEMS
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to computing systems and, more particularly, to storing and accessing data in computing systems.
2. Description of the Related Art
In a computing environment data may be scattered over an address space on memory or on a persistent storage device (e.g., disk). Fig. 1 A depicts a portion of an address space 100 having various data objects scattered inside, As depicted in Fig. 1 A, a data object 102 can reference a group of data objects 104, 106 and 108. Each of the data objects 104, 106 and 108 contain data which can, for example, represent a particular type of data (e.g., integer, float, string, etc.) Accordingly, data objects of various types and sizes may be associated with each other in a group. In addition, the data in the address space 100 may represent several layers of nesting between data objects. For example, data object 102 references data object 108 which in turn references a data object 1 10. The data object 1 10 may also reference data objects 1 12 and 1 14, and so on.
For various applications, it is desirable to collect related data and store it on a data record in a space efficient manner. Furthermore, it is desirable to store data in a manner which allows relatively easy access to data (e.g., traversal of the data record in both forward and backward directions is possible). Fig. 1 B depicts a conventional data record 120 suitable for storage of data in a sequential manner. The conventional data record 120 is partitioned into equally sized portions (e.g., 122, 124, and 126). The size of these equally sized portions is typically predetermined (e.g., 1 K bytes). Data can be stored in the equally sized portions of the conventional data record 120. For example, data objects 102, 104, and 106 (also shown in Fig. 1 A) can be respectively stored on data record portions 122, 124, and 126. It should be noted that in order to store data objects of various sizes, typically, data record 200 is partitioned into relatively large portions. It should also be noted that since the data portions are of a predetermined size, it is relatively easy to traverse the conventional data record 120 both in forward and backward directions. Although the conventional data record 120 allows storage of data objects of various sizes, the conventional data record 120 has various drawbacks. For example, one problem is that relatively large amounts of space need to be reserved for each portion (e.g., 102, 104, and 106) regardless of the size of data that needs to be stored for a particular portion. Another problem is that the conventional data record 120 is not suitable for capturing relationships between data objects. For example, data objects associated with each other in a group (" peer-to-peer" relationship) cannot be adequately represented in the conventional data record 120. As another example, data objects in a nested relationship (" hierarchical" relationships) cannot be adequately represented by the conventional data record 120.
In view of the foregoing, there is a need for improved methods for storing and accessing data in computing systems.
SUMMARY OF THE INVENTION
Broadly speaking, the invention relates to techniques for storing and accessing data in computer systems. In accordance with one aspect of the invention, a data packing module suitable for packing data and storing it on a data record is disclosed. The data packing module can store data objects of various types and sizes on the data record. In addition to data associated with each data object, various relationships between data objects can be stored on the data record by the data packing module. In accordance with another aspect of the invention, a data unpacking module suitable for unpacking data stored on a data record is disclosed. The data unpacking module can be used to access data associated with data objects as well as various other information stored on the data record. In one embodiment, a data accessing interface is provided to enable access to data stored on the data record. For example, the data accessing interface provides the ability to read data, as well as the ability to traverse the data record in both forward and backward directions.
The invention can be implemented in numerous ways, including a system, an apparatus, a data record, a method, or a computer readable medium. Several embodiments of the invention are discussed below.
As a method of storing information capable of being represented as one or more objects which can have associated data, one embodiment of the invention includes at least the acts of: storing a forward-skip-indicator for an object; storing data associated with the object; and storing a back-skip-indicator for the data object.
As a data record capable of sequentially representing one or more objects capable of having associated data with a data size that is not predetermined, one embodiment of the invention comprises: a forward- skip-indicator field capable of having a forward-skip value which can be used to determine α next-position in the data record which can represent the position of a next sequentially stored object on the data record; a data field suitable for storing data associated with one or more objects; and a back-skip-indicator field capable of having a back-skip value which can be used to determine a previous-position in the data record which can represent the position of a previous sequentially stored object on the data record.
As a computer system, one embodiment of the invention comprises: one or more data objects capable of respectively having associated data that does not have a predetermined size; a data record capable of holding data; and a data packing module operating to sequentially store the one or more data objects on the data record. The data packing module operates to store at least two indicators on the data record to enable traversal of the data record in forward and backward directions.
As a computer system, another embodiment of the invention comprises: a data record having two or more data objects being sequentially stored on it, each of the two or more data objects capable of respectively having associated data that does have a predetermined size; and a data unpacking module operating to access the data record to access one or more data objects on the data record, the unpacking module capable of accessing data associated with the one or more data objects, and the unpacking module capable of traversing the data record in forward and backward directions.
As a method of accessing data on a data record having two or more data objects sequentially stored with each of the two or more data objects capable of respectively having associated data that does not have a predetermined size, one embodiment of the invention includes at least the acts of: reading a back-skip or a forward-skip value stored on the data record; and moving a reference to the data record by the back-skip or the forward skip value. As α computer readable media including computer program code for storing information capable of being represented as one or more objects with associated data, one embodiment of the invention comprises: computer program code for storing a forward-skip-indicator for an object; computer program code for storing data associated with the object; and computer program code for storing a back-skip-indicator for the data object.
The advantages of the invention are numerous. Different embodiments or implementations may have one or more of the following advantages. One advantage is that the invention allows data objects of various sizes to be stored in a space efficient manner. Another advantage is that the invention allows various relationships between data objects to be captured and stored in a data record. Yet another advantage is that the invention provides for accessing the stored data in an efficient manner.
Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements, and in which:
Fig. 1 A depicts a portion of an address space having various data objects scattered inside.
Fig. 1 B depicts a conventional data record suitable for storage of data in a sequential manner. Fig. 2A illustrates an exemplary computing environment including a data packing module in accordance with one aspect of the present invention.
Fig. 2B illustrates an exemplary computing environment including a data unpacking module in accordance with another aspect of the present invention.
Figs. 3A, 3B, 3C, and 4D illustrate data record portions in accordance with various embodiments of the invention.
Fig. 4 illustrates an exemplary data storing method for storing data objects on a data record in accordance with one embodiment of the invention.
Figs. 5A and 5B illustrate a method for storing one or more data objects as a group object on a data record in accordance with one embodiment of the invention.
Figs. 6A and 6B illustrate an exemplary method for accessing one or more data objects stored as a group object in a data record.
Fig. 7 illustrates an exemplary method for advancing a current position reference over data objects stored on a data record in the forward direction.
Fig. 8 illustrates an exemplary method for moving a current position reference over data objects stored on a data record in the backward direction DETAILED DESCRIPTION OF THE INVENTION
The invention relates to techniques for storing and accessing data in computer systems. In accordance with one aspect of the invention, a data packing module suitable for packing data and storing it on a data record is disclosed. The data packing module can store data objects of various types and sizes on the data record. In addition to data associated with each data object, various relationships between data objects can be stored on the data record by the data packing module. In accordance with another aspect of the invention, a data unpacking module suitable for unpacking data stored on a data record is disclosed. The data unpacking module can be used to access data associated with data objects as well as various other information stored on the data record. In one embodiment, a data accessing interface is provided to enable access to data stored on the data record. For example, the data accessing interface provides the ability to read data, as well as the ability to traverse the data record in both forward and backward directions.
Embodiments of the invention are discussed below with reference to Figs. 2-8. However, those skilled in the art will readily appreciate that the detailed description given herein with respect to these figures is for explanatory purposes as the invention extends beyond these limited embodiments.
Fig. 2A illustrates an exemplary computing environment 200 including a data packing module 202 in accordance with one aspect of the present invention. The data packing module 202 can package data resident in the computing environment 200 and store it on the data record 204. For example, the data that is packaged by the data packing module 202 can be resident in a memory 204 and/or a persistent storage device 206 (e.g., a disk). The data packing module 202 may access the data directly or through an operating system (not shown in Fig. 2A) in the computing environment 200.
The data packaged by the data packing module 202 can be scattered in an address space format (e.g., non-contiguous memory or disk locations). In addition, the size of data that is packaged by the data packing module need not be predetermined. As will be appreciated by those skilled in the art, the data packing module 202 can package and store data objects of various sizes in a sequential format on the data record 204. Moreover, data objects of various sizes can be stored on the data record 204 without wasting a significant amount of storage space. Furthermore, various relationships between data objects can be captured and stored on the data record 204. For example, these relationships include " peer-to-peer" relationships between data objects associated with each other in a " group", as well as " hierarchical" relationships between data objects " nested" in multiple layers.
Fig. 2B illustrates an exemplary computing environment 250 including a data unpacking module 252 in accordance with another aspect of the present invention. The data unpacking module 252 can be used to access the data stored on a data record 254. For example, the data stored on record 254 could have been stored by the data packing module 202 of Fig, 2A. The data unpacking module 252 can be used to access data (e.g., read data) stored on the data record 254. For example, an application 254 may utilize the data unpacking module 252 to access the data through a data accessing interface 256. As will be discussed below, various functions (methods) can be provided by the data accessing interface 256 to access data and/or navigate through the data record 254 (e.g., read(), nextO- and previousO functions that can be used to read and navigate through the data record in forward and backward directions).
Fig. 3A illustrates a data record portion 300 in accordance with one embodiment of the invention. For example, the data record portion 300 can represent a portion of the data record 204 generated by the data packing module 202 of Fig. 2. The data record 300 includes a forward- skip-indicator field 302, a variable-length-data field 304, and a back-skip- indicator field 306. The size of the variable-length-data field 304 is not predetermined. Thus, data objects with various sizes can be stored in the variable-length-data field 304. The forward-skip-indicator field 302 and back-skip-indicator field 306 are of predetermined sizes (e.g., n bytes of data). These fields can respectively hold values which can be used to forward-skip and back-skip to the next and previous data record portions in a data record. For example, in one particular embodiment, the value indicated by the forward-skip-indicator field 302 (or back-skip-indicator field 306) is the size of the data portion 300. In other words, the sum of the sizes of all fields in that data portion 300. For example, if the forward-skip- indicator field 302, variable length data field 304, and back-skip-indicator field 306 respectively have the sizes of si, s2, and s3 bytes, the forward- skip-indicator field 302 can have the value S which is the sum of sizes of all the data fields (si + s2 + s3). Accordingly, the value S can be used to forward-skip over the data record portion 300 from a first bit 308 to a last bit 310 of the data record portion 300. Similarly, the back-skip-indicator 306 can be used to back-skip over the data record portion 300 from the last bit 310 to a first bit 308 of the data record portion 300. In this manner, data of various sizes can be stored in a data record portion in conjunction with information which facilitates traversal of a data record in forward and backward directions.
Fig. 3B illustrates a data record portion 320 in accordance with another embodiment of the invention. In addition to the fields described above, the data record portion 320 includes a type-indicator field 322 which can be used to indicate the type of data object included in the variable length data field 324. For example, the type-indicator field 322 may be used to indicate that the data object is of a particular type (e.g., integer, string, real, etc). Fig. 3C illustrates a data record portion 340 in accordance with yet another embodiment of the invention. The data record portion 340 includes a type-indicator field 342 which indicates that the data included in the variable length data field 344 is of the type " Group" . The type- indicator " Group" indicates that the data object contained in the variable length data field 344 is a group object which can represent one or more data objects. The one or more data objects are associated with each other and collectively can be represented as a group. It should be noted that each of the one or more data objects in the variable length data field 344 can have a variable length-data-field, as well as other fields (e.g., forward-skip, back-skip fields). Accordingly, the variable- length-data field 344 may include one or more fields of variable sizes (e.g., variable-length-data field 304 or 324) with corresponding forward- skip-indicator and back-skip-indicator fields, as well as additional fields (e.g., type-indicators 322, or 342). It should be noted that each data object in the group can have various sizes, Furthermore, these sizes need not be predetermined. For example, variables integer I, real , and string S, which are of various sizes, can be grouped together and represented as a group. It should also be noted that a data object in a group can itself represent another group (one or more data objects). Accordingly, data portions 300, 320, and 340 may be utilized to represent various relationships between data objects. It should be noted that a group object may be a group without any data objects (i.e., an empty group without any members). These relationships include " peer-to-peer" relationships between data objects associated with each other in a group, as well as " hierarchical" relationships between data objects nested in multiple layers.
Fig. 3D illustrates a data record portion 360 in accordance with still another embodiment of the invention. As the type-indicator field 362 indicates, the data record portion 360 represents a group of data objects contained in a variable-length-data field 364. The forward-skip-indicator and back-skip- indicator fields 368 and 370 can be used to traverse the data record portion 360. A number-of-objects indicator field can represent the number of objects in the group. The variable length data field 364 includes one or more data record portions (320A...320B) which are stored sequentially. It should be noted that each one of the data objects in the group can be represented by a data record portion (320A...320B) which includes the fields shown in data record portion 320 of Fig. 3A. Thus, the forward-skip-indicator and back-skip-indicator fields associated with each data object represented in the variable-length- data field 364 can respectively be used to skip over each data object in the group in the forward and backward directions.
Fig. 4 illustrates an exemplary data storing method 400 for storing data objects on a data record in accordance with one embodiment of the invention. Initially, at operation 402, a reference to a data object is received. Next, at operation 404, a forward-skip-indicator field for the data object is stored on the data record. At operation 406, a type- indicator field for the data object is stored on the data record. The data associated with the data object is stored on the data record at operation 408. Finally, at operation 410, a back-skip-indicator field is stored on the data record.
Figs. 5A and 5B illustrate a method 500 for storing one or more data objects as a group object on a data record in accordance with one embodiment of the invention. For example, the data storing method 400 can be utilized by the data packing module of 202 to store data on the data record 204 of Fig. 2A. The group object (or group) can represent one or more data objects associated with each other. For simplicity, it is assumed that the group data object does not itself include another group data object. Furthermore, it is assumed that a group data object includes at least one data object. However, it should be noted that the group data object may include one or more other group data objects. It should also be noted that a group data object may be a group without any data objects (i.e., an empty group without any members). At operation 502, references to one or more data objects which are to be represented as a group on the data record are received. Initially, the reference points to the first data object in the group. Next, at operation 506, a forward-skip-indicator field is stored on the data record. This field can be of a predetermined size. Accordingly, the appropriate size (e.g., number of bytes) can be reserved and initialized to zero. At operation 506, a type-indicator field which can have a predetermined size is stored on the data record. The type-indicator field is set to " Group" to indicate the group object type. Next, at operation 508, a number-of- objects indicator field which can have a predetermined size is stored on the data record. The number-of-objects indicator field can be set to a value which indicates the number of objects in the group.
At operation 510, a reference to the next data object in the group is obtained. Initially, this reference would be a reference to the first data object in the group. Next, at operation 512, a forward-skip-indicator field is stored for the first data object in the group. As noted above, this field can be used to forward-skip over the first data object (e.g., to the next data object in the group, the next group, etc.) At operation 514, a type- indicator field is stored for the first data object in the group. This field can be set to indicate the type of data for the first data object in the data group. It should be noted that the data objects not having any data associated with them may be represented, for example, as the type " Null" . Accordingly, at operation 516, a determination is made as to whether the first data object in the group is of type " Null" . If it is determined at operation 516 that the data is not of type " Null" , the method 500 proceeds to operation 518 where the data associated with the first data object is stored on the data record. On the other hand, when it is determined at operation 516 that the first data object is of type " Null", the method 500 skips operation 518 and proceeds directly to the operation 520. Following the operation 518, the method 500 proceeds to operation 520 where a back-skip-indicator field associated with the first data object is stored and set to the appropriate value. Next, at operation 522, the value indicated by the forward-skip-indicator field of the first object in the group (stored in operation 512) is added to the value indicated by the forward-skip-indicator of the group (initially set to zero at operation 504). At operation 524, a determination is made as to whether there are more data objects in the group. If it is determined at operation 524 that there are one or more data objects in the group, the method 500 proceeds back to operation 510 where a reference to the next object (e.g., second data object in the group) can be obtained. The next object in the group can be processed in accordance with operations 512-522 as discussed above. On the other hand, if it is determined at operation 522 that there are no more data objects in the group, the method 500 proceeds to operation 526 where a back-skip-indicator field for the group is stored on the data record and set to the appropriate value. Following operation 526, the method 500 ends.
Figs. 6A and 6B illustrate an exemplary method 600 for accessing one or more data objects stored as a group object in a data record. For example, the method 600 can be utilized by the unpacking data module 252 to access the data record 254 of Fig. 2B. The method 600 can represent one or more functions (methods) provided by the data accessing interface 256 of Fig. 2B (e.g., a read function). For example, the method 600 can utilize a data record stored in accordance with the embodiment depicted in Fig. 3D. (data record portion 360). For simplicity, it is assumed that the data objects in the group do not represent another group of data objects. Furthermore, it is assumed that the group contains at least one data object having data associated with it.
Initially, at operation 602, a reference to the current position (reference) in the data record is obtained. It should be noted that the current reference position points to the beginning of a data portion in the data record (e.g., the left-most bit of the forward-skip-indicator 368 of Fig. 3D), Next, at operation 604, the current reference position is advanced over the forward-indicator field. At operation 606, the type-indicator field is read. As shown in Fig. 4D, the type-indicator field follows the forwαrd-skip-indicαtor field. The current reference position is advanced over the type-indicator field at operation 608. Next, at operation 610, the number-of-objects indicator field is read. As depicted in Fig. 3D, the number-of-objects indicator field follows a group type-indicator field. Next, at operation 612 the current reference position is advanced over the number-of-objects-indicator field. It should be noted that at this point the current reference points to the first data object in the group (e.g., leftmost bit of the data record portion 320A). At operation 614, a group- index is set to zero. Next, at operation 616, the current reference position is advanced over the forward-skip field of the first data object in the group. It should be noted that each data object in the group can include the fields shown in data record portion 320 of Fig. 3B. At operation 618, the type-indicator field of the first data object is read. The current reference position is advanced over the type-indicator field (e.g., the type-indicator field 322 of Fig, 3B) at operation 620, Next, at operation 622, the data in the variable length data field is read. At operation 624, the current reference position is advanced over the back- skip-indicator field of the next data object in the group. At operation 626, the group-index is incremented by one. Next, at operation 628, a determination is made as to whether the group-index is equal to the number of objects in the group as indicated by the number-of-objects indicator field of the group (read at operation 610). If it is determined at operation 628 that the group-index is not equal to the number of objects in the group, the method 600 proceeds to operation 616 where the next data object (e.g. second data object) in the group can be processed.
On the other hand, if it is determined at operation 628 that the group-index is equal to the number of objects in the group, the method 600 proceeds to operation 630 where the current reference position is advanced over the back-skip-indicator field for the group (e.g., the back- skip-indicator field 370 of Fig. 3D). The method 600 ends following the operation 630. Fig. 7 illustrates an exemplary method 700 for advancing a current position reference over data objects stored on a data record in the forward direction (e.g., from left to right of data record portion 360 of Fig. 3D). For example, the method 700 can be utilized by the unpacking data module 252 to access data record 254 of Fig. 2B. The method 700 can represent one or more functions (methods) provided by the data accessing interface 256 of Fig. 2B (e.g., a next function for traversing the data record in the forward direction). The method 700 can utilize that a data record stored in accordance with the embodiment depicted in Fig. 3D (data record portion 360).
Initially, at operation 702, a reference to the current position (reference) in the data record is obtained. It should be noted that the current reference position points to the beginning of a data portion in the data record (e.g., the left-most bit of the forward-skip-indicator field 368 of Fig. 3D). Next, at operation 704, the forward-skip-indicator field is read. At operation 706, the current reference position is advanced over the forward-indicator field. At operation 708, the type-indicator field is read. As shown in Fig. 4D, the type-indicator field follows the forward-skip- indicator field. Next, at operation 710, a determination is made as to whether the type-indicator field indicates the " Group" type. If it is determined at operation 710 that the type-indicator field does not indicate the " Group" type, the method 700 proceeds to operation 712 where the current position reference is moved back over the forward- skip-indicator field. Following the operation 712, at operation 714, the current reference position is advanced by the value indicated by the forward-skip-indicator (read at operation 704). The method 700 ends following the operation 714.
On the other hand, if it is determined at operation 710 that the type-indicator field indicates the " Group" type, the method 700 proceeds to operation 716 where the current reference position is advanced over the forward-skip-indicator field. Following the operation 716, the current reference position is advanced over the number-of- objects-indicator field at operation 718. It should be noted that upon completion of the operation 718, the current reference position points to the first data object in the group. The method 700 ends following operation 718.
Fig, 8 illustrates an exemplary method 800 for moving a current position reference (reference) over data objects stored on a data record in the backward direction (e.g., from right to left of data record portion 360 of Fig. 3D). For example, the method 800 can be utilized by the unpacking data module 252 to access data record 254 of Fig. 2B. The method 700 can represent one or more functions (methods) provided by the data accessing interface 256 of Fig. 2B (e.g., a previous function to locate the previous data object stored on the data record). The method 800 can utilize a data record stored in the accordance with the embodiment depicted in Fig. 3D (the data record portion 360).
Initially, at operation 802, a reference to the current position
(reference) in the data record is obtained, It should be noted that the current reference position points to the end of a data portion in the data record (e.g., the right-most bit of the back-skip-indicator field 368 of Fig. 3D). Next, at operation 804, the current position reference is moved back over the back-skip-indicator field. The back-skip-indicator field is read at operation 806, Finally, at operation 808, the current position reference is moved back by the value (e.g. number of bytes) indicated by the back- skip-indicator field (read at operation 808).
The invention can use a combination of hardware and software components. The software can be embodied as computer readable code (or computer program code) on a computer readable medium.
The computer readable medium is any data storage device that can store data which can thereafter be read by a computer system.
Examples of the computer readable medium include read-only memory, random-access memory, CD-ROMs, magnetic tape, and optical data storage devices. The computer readable medium can also be distributed over α network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
The advantages of the invention are numerous. Different embodiments or implementations may have one or more of the following advantages. One advantage is that the invention allows data objects of various sizes to be stored in a space efficient manner. Another advantage is that the invention allows various relationships between data objects to be captured and stored in a data record. Yet another advantage is that the invention provides for accessing the stored data in an efficient manner.
The many features and advantages of the present invention are apparent from the written description, and thus, it is intended by the appended claims to cover all such features and advantages of the invention. Further, since numerous modifications and changes will readily occur to those skilled in the art, it is not desired to limit the invention to the exact construction and operation as illustrated and described. Hence, all suitable modifications and equivalents may be resorted to as falling within the scope of the invention.
What is claimed is:

Claims

1. A method of storing information suitable for use in a computer system, said information being capable of being represented as one or more objects, each of said one or more objects capable of having associated data, said method comprising:
storing a forward-skip-indicator for an object-
storing data associated with said object; and
storing a back-skip-indicator for said data object.
2. A method as recited in claim 1, herein said data associated with said object does not have a predetermined size.
3. A method as recited in claim 1, wherein said forward-skip-indicator and back-skip-indicator have a predetermined size.
4. A method as recited in claim 1, wherein said method further comprises:
storing a type-indicator for said object.
5. A method as recited in claim 1, wherein at least one of said one or more objects is a group object capable of representing one or more other objects, each of said one or more other objects capable of having associated data,
6. A method as recited in claim 5, wherein said associated data with said one or more other objects is capable of having a size that is not predetermined.
7. A method as recited in claim 5, wherein at least one of said one or more other objects can represent yet another one or more other objects.
8. A method as recited in claim 5,
wherein said group object comprises at least one member object, and
wherein said method further comprises:
storing a forward-indicator associated with said at least one member object;
storing data associated with said at least one member object; and
storing a back-skip-indicator associated with said at least one member object.
9. A method as recited in claim 5, wherein said method comprises:
storing a type-indicator associated with said at least one member object.
10. A method as recited in claim 5, wherein said method comprises:
storing a number-of-objects-indicator for said group object.
1 1. A data record for storing information suitable for use in a computer system; said information being capable of being represented as one or more data objects; said data record comprising:
a forward-skip-indicator field capable of having a forward-skip value which can be used to determine a next-position in said data record, said next-position representing the position of a next sequentially stored data object on said data record;
a variable-length-data field for storing one or more data objects; said variable-length-data field having a size that in not predetermined; and
a back-skip-indicator field capable of having a back-skip value which can be used to determine a previous-position in said data record, said previous-position representing the position of a previous sequentially stored object on said data record.
12. A data record as recited in claim 1 1, wherein said data record further includes:
a type-indicator field capable of having a type value suitable for representing the type of a data object.
13. A data record as recited in claim 1 1, wherein the data record further includes:
a number-of objects-indicator field capable of having a value that represents the number of objects associated with a group object,
14. A computer system comprising: one or more data objects capable of respectively having associated data that does not have a predetermined size;
a data record capable of holding data; and
a data packing module operating to sequentially store said one or more data objects on said data record, said data packing module operating to store at least two indicators on said data record to enable traversal of said data record in forward and backward directions,
15. A computer system as recited in claim 14, wherein at least one of said one or more data objects sequentially stored by said data packing module is a group data object representing one or more other data objects.
16. A computer system as recited in claim 14,
wherein at least one of said one or more data objects has an associated type value, and
wherein said type value is stored on said data record by said data packing module.
17. A computer system comprising:
a data record having two or more data objects being sequentially stored thereon, each of said two or more data objects capable of respectively having associated data that does have a predetermined size; and
a data unpacking module operating to access said data record to access one or more data objects on said data record, said unpacking module capable of accessing data associated with said one or more data objects, and said unpacking module capable of traversing said data record in forward and backward directions.
18. A computer system as recited in claim 17, wherein at least one of said one or more data objects accessed by said data unpacking module is a group data object representing one or more other data objects.
19. A computer system as recited in claim 17,
wherein at least one of said one or more data objects accessed by said data packing module has an associated type value, and
wherein said type value is accessed by said data unpacking module.
20. A method of accessing data on a data record, said data record having two or more data objects sequentially stored, each of said two or more data objects capable of respectively having associated data that does not have a predetermined size, said method comprising:
reading a back-skip or a forward-skip value stored on said data record; said back-skip or forward-skip value being associated with a data object stored on said data record; and
moving a reference to said data record by said back-skip or said
forward skip value.
21. A method as recited in claim 20, wherein said method further comprises:
reading data associated with a data object stored on said data record.
22. A method as recited in claim 21,
wherein said data object read is a group object representing one or more other data objects, and
wherein reading data associated with said data objects comprises:
reading data for said one or more other data objects represented by the group object.
23. A method as recited in claim 22, wherein said method further comprises:
reading a number-of-objects indicator associated with the group object.
24. A method as recited in claim 21, wherein said method further comprises:
reading a data type associated with a data object stored on said record.
25. A computer readable media including computer program code for storing information suitable for use in a computer system, said information being capable of being represented as one or more objects, each of said one or more objects capable of having associated data, said computer readable media comprising:
computer program code for storing a forward-skip-indicator for an object; computer program code for storing data associated with said object; and
computer program code for storing a back-skip-indicator for said data object,
26. A computer readable media as recited in claim 25, wherein the data associated with the said object does not have a predetermined size.
27. A computer readable media as recited in claim 25, wherein said forward-skip-indicator and back-skip-indicator have a predetermined size.
28. A computer readable media as recited in claim, wherein said computer readable media further comprises:
computer program code for storing a type-indicator for said object.
PCT/US2001/014138 2000-05-01 2001-05-01 Method and apparatus for storing and accessing data in computer systems WO2001084298A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP01934986A EP1287426A4 (en) 2000-05-01 2001-05-01 Method and apparatus for storing and accessing data in computer systems
AU2001261123A AU2001261123A1 (en) 2000-05-01 2001-05-01 Method and apparatus for storing and accessing data in computer systems

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US56205100A 2000-05-01 2000-05-01
US09/562,051 2000-05-01

Publications (1)

Publication Number Publication Date
WO2001084298A1 true WO2001084298A1 (en) 2001-11-08

Family

ID=24244573

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/014138 WO2001084298A1 (en) 2000-05-01 2001-05-01 Method and apparatus for storing and accessing data in computer systems

Country Status (3)

Country Link
EP (1) EP1287426A4 (en)
AU (1) AU2001261123A1 (en)
WO (1) WO2001084298A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037148B2 (en) * 2016-01-05 2018-07-31 Microsoft Technology Licensing, Llc Facilitating reverse reading of sequentially stored, variable-length data
US10191693B2 (en) 2016-10-14 2019-01-29 Microsoft Technology Licensing, Llc Performing updates on variable-length data sequentially stored and indexed to facilitate reverse reading

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5524202A (en) * 1991-03-01 1996-06-04 Fuji Xerox Co., Ltd. Method for forming graphic database and system utilizing the method
US5649196A (en) * 1993-07-01 1997-07-15 Legent Corporation System and method for distributed storage management on networked computer systems using binary object identifiers
US5729738A (en) * 1994-06-29 1998-03-17 Fuji Xerox Co., Ltd. Data management system utilizing behavioral objects with linking relationships
US5857203A (en) * 1996-07-29 1999-01-05 International Business Machines Corporation Method and apparatus for dividing, mapping and storing large digital objects in a client/server library system
US5890152A (en) * 1996-09-09 1999-03-30 Seymour Alvin Rapaport Personal feedback browser for obtaining media files
US6032160A (en) * 1995-02-10 2000-02-29 International Business Machines Corporation Buddy system space allocation management
US6044377A (en) * 1995-11-07 2000-03-28 Sun Microsystem, Inc. User-defined object type and method of making the object type wherein a file associated with a rule is invoked by accessing the file which generates code at run time

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226161A (en) * 1987-08-21 1993-07-06 Wang Laboratories, Inc. Integration of data between typed data structures by mutual direct invocation between data managers corresponding to data types
US5297279A (en) * 1990-05-30 1994-03-22 Texas Instruments Incorporated System and method for database management supporting object-oriented programming
US5864864A (en) * 1995-09-27 1999-01-26 Sun Microsystems, Inc. Method and apparatus for providing transparent persistent data support to foreign data types
US6192370B1 (en) * 1998-06-19 2001-02-20 Sap Aktiengesellschaft Method and system for rapid memory-resident processing of transactional data

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524202A (en) * 1991-03-01 1996-06-04 Fuji Xerox Co., Ltd. Method for forming graphic database and system utilizing the method
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5649196A (en) * 1993-07-01 1997-07-15 Legent Corporation System and method for distributed storage management on networked computer systems using binary object identifiers
US5729738A (en) * 1994-06-29 1998-03-17 Fuji Xerox Co., Ltd. Data management system utilizing behavioral objects with linking relationships
US6032160A (en) * 1995-02-10 2000-02-29 International Business Machines Corporation Buddy system space allocation management
US6044377A (en) * 1995-11-07 2000-03-28 Sun Microsystem, Inc. User-defined object type and method of making the object type wherein a file associated with a rule is invoked by accessing the file which generates code at run time
US5857203A (en) * 1996-07-29 1999-01-05 International Business Machines Corporation Method and apparatus for dividing, mapping and storing large digital objects in a client/server library system
US5890152A (en) * 1996-09-09 1999-03-30 Seymour Alvin Rapaport Personal feedback browser for obtaining media files

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1287426A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037148B2 (en) * 2016-01-05 2018-07-31 Microsoft Technology Licensing, Llc Facilitating reverse reading of sequentially stored, variable-length data
US10191693B2 (en) 2016-10-14 2019-01-29 Microsoft Technology Licensing, Llc Performing updates on variable-length data sequentially stored and indexed to facilitate reverse reading

Also Published As

Publication number Publication date
AU2001261123A1 (en) 2001-11-12
EP1287426A1 (en) 2003-03-05
EP1287426A4 (en) 2007-03-21

Similar Documents

Publication Publication Date Title
US8543782B2 (en) Content-based, compression-enhancing routing in distributed, differential electronic-data storage systems
US5305295A (en) Efficient method and apparatus for access and storage of compressed data
KR100855139B1 (en) Partial migration of an object to another storage location in a computer system
JP2000515284A (en) IC card containing files classified in a tree structure
US5274807A (en) Method for reducing magnetic storage volume for computer disk image backup
US5734892A (en) Efficient method and apparatus for access and storage of compressed data
US7788299B2 (en) File formatting on a non-tape media operable with a streaming protocol
US8205025B2 (en) Efficient buffered reading with a plug-in for input buffer size determination
WO2005050381B1 (en) Systems and methods for performing storage operations using network attached storage
TW201941189A (en) Recording device, reading device, recording method, recording program storage medium, reading method, reading program storage medium, and magnetic tape
WO2015093026A1 (en) Write information storage device, method, and recording medium
US7523221B2 (en) Mechanism for applying transforms to multi-part files
CN107817946A (en) For mixing the method and device of storage device read-write data
US8055839B2 (en) Maintaining reserved free space at the end of a physical volume for creating new segments of segmented logical volumes in the reserved free space
US5829005A (en) Circular size-bounded file technique for a computer operating system
US9767216B2 (en) Method and system for capturing and applying changes to a data structure
WO2001084298A1 (en) Method and apparatus for storing and accessing data in computer systems
EP1611511A1 (en) Method of addressing data in a shared memory by means of an offset
US20050097125A1 (en) Centralised data position information storage system
AU2003241506B2 (en) Mechanism for applying transforms to multi-part files
GB2400927A (en) Method of managing memory by checking that none of the sectors in a block is needed before erasing the block.
US6985325B2 (en) Updateable centralized data position information storage system
CN112131193B (en) Application program compression method and device
US8655929B2 (en) Modification of data within a file
JP2005129173A (en) File management method

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2001934986

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2001934986

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP