← Back to Patent Explorer
US5706504A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and system for storing data objects using a small object data stream

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1995-06-07
•
Granted: 1998-01-06
•
Expires: 2015-06-07
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and system for interfacing an application program with a compound document storage system. The present invention provides an interface which an application program uses to manipulate compound documents. In a preferred embodiment, this interface is implemented in a multilayered architecture. The first layer provides methods which an application program uses to access a compound document using the functions of the second layer. The second layer maps requests to store data in the compound document to a storage format using the functions of the third layer. The third layer maps requests to write to a file to an arbitrary storage medium.

Inventors

  • 👤 Robert G. Atkinson
  • 👤 Andrew L. Bliss
  • 👤 Philip J. Lafornara
  • 👤 Philip Ljubicich
  • 👤 Alexander G. Tilles
  • 👤 Antony S. Williams

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-31 10:24
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/22; G06F9/24; G06F3/00; G06F3/06; G06F3/0601; G06F3/0668; G06F3/0671; G06F3/0673; G06F3/0674; G06F16/00; G06F16/10; G06F16/90; G06F16/901; G06F16/9017; G06F16/93; G06F3/0602; G06F3/0604; G06F3/0605; G06F3/0628; G06F3/0638; G06F3/0643; Y; Y10; Y10S; Y10S707/00; Y10S707/953; Y10S707/956; Y10S707/99931

Claims Analysis

Total Claims: 32
Claim 1
Independent Claim 164 words
A method in a computer system for storing a plurality of objects of varying sizes in a storage area, the method comprising the steps of: storing a directory structure in the storage area, the directory structure for referencing streams of data; allocating a small object stream for storing multiple objects each not larger than a small object size and updating the directory structure to refer to the small object stream using a single reference; for each object of the plurality of objects that is larger than the small object size, allocating a stream for the object and updating the directory structure to refer to the allocated stream; and storing the object in the allocated stream; and for each object of the plurality of objects that is not larger than the small object size, storing the object in a portion of the small object stream such that all objects stored in the small object stream are accessed using the single reference of the directory structure.
Claim 2
Independent Claim 164 words
A method in a computer system for storing a plurality of objects of varying sizes in a storage area, the method comprising the steps of: storing a directory structure in the storage area, the directory structure for referencing streams of data; allocating a small object stream for storing multiple objects each not larger than a small object size and updating the directory structure to refer to the small object stream using a single reference; for each object of the plurality of objects that is larger than the small object size, allocating a stream for the object and updating the directory structure to refer to the allocated stream; and storing the object in the allocated stream; and for each object of the plurality of objects that is not larger than the small object size, storing the object in a portion of the small object stream such that all objects stored in the small object stream are accessed using the single reference of the directory structure.
Claim 3
Dependent Claim 33 words
The method of claim 1 wherein the step of storing the object in a portion of the small object stream includes updating a small object allocation table stored within the small object stream.
Claim 4
Dependent Claim 26 words
The method of claim 2 wherein the small object allocation table stored within the small object stream is arranged according to a miniFAT data structure definition.
Claim 5
Dependent Claim 37 words
The method of claim 2 including the steps of: designating a very small object size; and for each object that is not larger than the very small object size, storing the object directly in the directory structure.
Claim 6
Dependent Claim 56 words
The method of claim 1 including the step of: when an object increases in size to be larger than the small object size, removing the object from the small object stream; allocating a stream for the object and updating the directory structure to refer to the allocated stream; and storing the object in the allocated stream.
Claim 7
Dependent Claim 79 words
The method of claim 1 wherein the storage area has a plurality of fixed-size sectors, including the steps of: storing a storage allocation table on the storage area for linking together the sectors that comprise a stream; designating a small object stream sector size; and storing within the small object stream another storage allocation table for linking together objects that are larger than the small object stream sector size and that are not larger than the small object size.
Claim 8
Dependent Claim 53 words
The method of claim 1, further comprising the steps of: receiving a request for an object that is not larger than the small object size; and using the single reference of the directory structure that refers to the small object stream, retrieving the stored object from the portion of the small object stream.
Claim 9
Dependent Claim 18 words
The method of claim 1 wherein the directory structure is arranged according to an MS-DOS file system architecture.
Claim 10
Dependent Claim 16 words
The method of claim 1 wherein the storage area is used to implement a file system.
Claim 11
Dependent Claim 14 words
The method of claim 1 wherein the storage area is located in computer memory.
Claim 12
Dependent Claim 20 words
The method of claim 1 wherein the storage area is located in external computer memory such as on a disk.
Claim 13
Independent Claim 135 words
A method in a computer system for storing objects of varying sizes in a data storage area, the data storage area having a plurality of data storage sub-areas, the method comprising the steps of: allocating a data storage sub-area for storing multiple objects that are less than a predefined size; when an object is greater than or equal to the predefined size, allocating a data storage sub-area for the object; and storing the object in the allocated data storage sub-area for the object; and when an object is less than the predefined size, storing the object in a portion of the allocated data storage sub-area for storing objects that are less than the predefined size, such that a plurality of objects that are less than the predefined size are stored within a single storage sub-area.
Claim 14
Independent Claim 135 words
A method in a computer system for storing objects of varying sizes in a data storage area, the data storage area having a plurality of data storage sub-areas, the method comprising the steps of: allocating a data storage sub-area for storing multiple objects that are less than a predefined size; when an object is greater than or equal to the predefined size, allocating a data storage sub-area for the object; and storing the object in the allocated data storage sub-area for the object; and when an object is less than the predefined size, storing the object in a portion of the allocated data storage sub-area for storing objects that are less than the predefined size, such that a plurality of objects that are less than the predefined size are stored within a single storage sub-area.
Claim 15
Dependent Claim 169 words
A computer-readable memory medium containing instructions for controlling a computer processor in a computer system to store objects of varying sizes in a storage area by performing the steps of: storing a directory structure in the storage area, the directory structure for referencing streams of data; allocating a small object stream for storing multiple objects each not larger than a small object size and updating the directory structure to refer to the small object stream using a single reference; for each object of the plurality of objects that is larger than the small object size, allocating a stream for the object and updating the directory structure to refer to the allocated stream; and storing the object in the allocated stream; and for each object of the plurality of objects that is not larger than the small object size, storing the object in a portion of the small object stream such that all objects stored in the small object stream are accessed using the single reference of the directory structure.
Claim 16
Dependent Claim 169 words
A computer-readable memory medium containing instructions for controlling a computer processor in a computer system to store objects of varying sizes in a storage area by performing the steps of: storing a directory structure in the storage area, the directory structure for referencing streams of data; allocating a small object stream for storing multiple objects each not larger than a small object size and updating the directory structure to refer to the small object stream using a single reference; for each object of the plurality of objects that is larger than the small object size, allocating a stream for the object and updating the directory structure to refer to the allocated stream; and storing the object in the allocated stream; and for each object of the plurality of objects that is not larger than the small object size, storing the object in a portion of the small object stream such that all objects stored in the small object stream are accessed using the single reference of the directory structure.
Claim 17
Dependent Claim 35 words
The computer-readable memory medium of claim 13 wherein the step of storing the object in a portion of the small object stream includes updating a small object allocation table stored within the small object stream.
Claim 18
Dependent Claim 40 words
The computer-readable memory medium of claim 13 further including performing the steps of: designating a very small object size; and for each object that is not larger than the very small object size, storing the object directly in the direct.
Claim 19
Dependent Claim 60 words
The computer-readable memory medium of claim 13 further including performing the steps of: when an object increases in size to be larger than the small object size, removing the object from the small object stream; allocating a stream for the object and updating the directory structure to refer to the allocated stream; and storing the object in the allocated stream.
Claim 20
Dependent Claim 81 words
The computer-readable memory medium of claim 13 wherein the storage area has a plurality of fixed-size sectors, including the steps of: storing a storage allocation table on the storage area for linking together the sectors that comprise a stream; designating a small object stream sector size; and storing within the small object stream another storage allocation table for linking together objects that are larger than the small object stream sector size and that are not larger than the small object size.
Claim 21
Dependent Claim 56 words
The computer-readable memory medium of claim 13 further including performing the steps of: receiving a request for an object that is not larger than the small object size; and using the single reference of the directory structure that refers to the small object stream, retrieving the stored object from the portion of the small object stream.
Claim 22
Dependent Claim 157 words
A memory for storing data for access by a program being executed on a computer system, comprising: a data structure stored in the memory, the data structure having data that represents a file system, the data structure containing: a small object data stream containing a plurality of objects that are not larger than a small object size; a plurality of data streams, each of which contains an object that is larger than the small object size; and a directory structure containing a single reference to the small object data stream and a plurality of references each of which refers to one of the plurality of data streams, such that an object that is larger than the small object size is retrieved from the directory structure using its own reference and an object that is not larger than the small object size is retrieved from the directory structure using the single reference to the small object data stream.
Claim 23
Dependent Claim 157 words
A memory for storing data for access by a program being executed on a computer system, comprising: a data structure stored in the memory, the data structure having data that represents a file system, the data structure containing: a small object data stream containing a plurality of objects that are not larger than a small object size; a plurality of data streams, each of which contains an object that is larger than the small object size; and a directory structure containing a single reference to the small object data stream and a plurality of references each of which refers to one of the plurality of data streams, such that an object that is larger than the small object size is retrieved from the directory structure using its own reference and an object that is not larger than the small object size is retrieved from the directory structure using the single reference to the small object data stream.
Claim 24
Dependent Claim 42 words
The memory of claim 19 wherein the small object data stream of the data structure further contains a small object allocation table used to locate an object that is not larger than the small object size within the small object data stream.
Claim 25
Independent Claim 300 words
A method in a computer system for storing a plurality of objects of varying sizes in a storage area and for dynamically changing a location where the objects of varying sizes are stored, the method comprising: storing a directory structure in the storage area, the directory structure having entries that reference streams of data; allocating a small object directory entry in the directory structure for storing multiple objects each not larger than a small object size; for each object of the plurality of objects that is not larger than the small object size, when there is sufficient remaining storage in the small object directory entry for storing the object, storing the object in a portion of the small object directory entry such that all objects that are not larger than the small object size are accessed using a single reference to the small object directory entry; and when there is not sufficient remaining storage in the small object directory entry for storing the object, allocating a small object stream for storing multiple objects that are not larger than the small object size; copying each of the objects stored in the small object directory entry to a portion of the allocated small object stream; updating the small object directory entry to refer to the small object stream using a single reference; and storing the object in another portion of the small object stream such that all objects stored in the small object stream are accessed using the single reference of the small object directory entry; and for each object of the plurality of objects that is larger than the small object size, allocating a stream for the object and updating a directory entry in the directory structure to refer to the allocated stream; and storing the object in the allocated stream.
Claim 26
Independent Claim 300 words
A method in a computer system for storing a plurality of objects of varying sizes in a storage area and for dynamically changing a location where the objects of varying sizes are stored, the method comprising: storing a directory structure in the storage area, the directory structure having entries that reference streams of data; allocating a small object directory entry in the directory structure for storing multiple objects each not larger than a small object size; for each object of the plurality of objects that is not larger than the small object size, when there is sufficient remaining storage in the small object directory entry for storing the object, storing the object in a portion of the small object directory entry such that all objects that are not larger than the small object size are accessed using a single reference to the small object directory entry; and when there is not sufficient remaining storage in the small object directory entry for storing the object, allocating a small object stream for storing multiple objects that are not larger than the small object size; copying each of the objects stored in the small object directory entry to a portion of the allocated small object stream; updating the small object directory entry to refer to the small object stream using a single reference; and storing the object in another portion of the small object stream such that all objects stored in the small object stream are accessed using the single reference of the small object directory entry; and for each object of the plurality of objects that is larger than the small object size, allocating a stream for the object and updating a directory entry in the directory structure to refer to the allocated stream; and storing the object in the allocated stream.
Claim 27
Dependent Claim 42 words
The method of claim 21 wherein the copying of each of the objects stored in the small object directory entry to the portion of the allocated small object stream includes updating a small object allocation table stored within the small object stream.
Claim 28
Dependent Claim 36 words
The method of claim 22 wherein the small object stream comprises a plurality of fixed-size minisectors and the small object allocation table is a miniFAT that links together the fixed-size minisectors of the small object stream.
Claim 29
Dependent Claim 41 words
The method of claim 23 wherein the storage area has a plurality of fixed-size sectors and wherein each minisector is 64 bytes, such that a plurality of minisectors can be stored in one of the fixed-size sectors of the storage area.
Claim 30
Dependent Claim 67 words
The method of claim 21, further comprising: when an object increases in size to be larger than the small object size and when the object has been previously store in the small object stream, removing the object from the small object stream; allocating a stream for the object and updating the directory structure to refer to the allocated stream; and storing the object in the allocated stream.
Claim 31
Dependent Claim 330 words
A computer-readable memory medium containing instructions for controlling a computer processor in a computer system to storing a plurality of data collections of varying sizes in a storage area and for dynamically changing a location where the data collections of varying sizes are stored, by performing: storing a directory structure in the storage area, the directory structure having entries that reference streams of data; allocating a small data collection directory entry in the directory structure for storing multiple data collections each smaller than a chosen small size; for each data collection of the plurality of data collections that is smaller than the chosen small size, when there is sufficient remaining storage in the small data collection directory entry for storing the data collection, storing the data collection in a portion of the small data collection directory entry such that all data collections that are smaller than the chosen small size are accessed using a single reference to the small data collection directory entry; and when there is not sufficient remaining storage in the small data collection directory entry for storing the data collection, allocating a small data stream for storing multiple data collections that are smaller than the chosen small size; copying each of the data collections stored in the small data collection directory entry to a portion of the allocated small data stream; updating the small data collection directory entry to refer to the small data stream using a single reference; and storing the data collection in another portion of the small data stream such that all data collections stored in the small data stream are accessed using the single reference of the small data collection directory entry; and for each data collection of the plurality of data collections that is not smaller than the chosen small size, allocating a stream for the data collection and updating a directory entry in the directory structure to refer to the allocated stream; and storing the data collection in the allocated stream.
Claim 32
Dependent Claim 330 words
A computer-readable memory medium containing instructions for controlling a computer processor in a computer system to storing a plurality of data collections of varying sizes in a storage area and for dynamically changing a location where the data collections of varying sizes are stored, by performing: storing a directory structure in the storage area, the directory structure having entries that reference streams of data; allocating a small data collection directory entry in the directory structure for storing multiple data collections each smaller than a chosen small size; for each data collection of the plurality of data collections that is smaller than the chosen small size, when there is sufficient remaining storage in the small data collection directory entry for storing the data collection, storing the data collection in a portion of the small data collection directory entry such that all data collections that are smaller than the chosen small size are accessed using a single reference to the small data collection directory entry; and when there is not sufficient remaining storage in the small data collection directory entry for storing the data collection, allocating a small data stream for storing multiple data collections that are smaller than the chosen small size; copying each of the data collections stored in the small data collection directory entry to a portion of the allocated small data stream; updating the small data collection directory entry to refer to the small data stream using a single reference; and storing the data collection in another portion of the small data stream such that all data collections stored in the small data stream are accessed using the single reference of the small data collection directory entry; and for each data collection of the plurality of data collections that is not smaller than the chosen small size, allocating a stream for the data collection and updating a directory entry in the directory structure to refer to the allocated stream; and storing the data collection in the allocated stream.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-01-05 2001-07-07 2002-01-06 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-01-05 2005-07-07 2006-01-06 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-01-05 2009-07-07 2010-01-06 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag