Data storage system having mutable objects incorporating time
AssigneeDataDirect Networks, Inc.
InventorDonald J. Molaro
Life of this patent
Estimating the term…
Abstract
A data storage system having mutable objects incorporating time is described herein. According to the systems and methods described herein, a data item may be partitioned into parts (data objects) and stored as an index object. As the object storage system provides immutable objects, when a new version of a data item needs to be stored, only those parts (data objects) of the data item that changed need be saved rather than the entire data item. The systems and methods described herein allow for efficient storage, access and manipulation of mutable data items using an underlying immutable object system.
Claims18
A storage system comprising:
- a first node of a plurality of storage nodes, the storage nodes including a plurality of storage devices allowing for storing immutable objects including data objects and index objects, the first node having instructions which when executed cause a first processor included in a first controller in the first node to perform actions including:
- receiving a storage request from a client of the system to store a data item
- partitioning the data item into a plurality of data objects, each object including an object identifier, a timestamp and a data portion
- creating a first index object for the data item, the first index object including an index object identifier, a first timestamp and a list of constituent data objects, the list of constituent data objects including an object identifier and a hash value for each data object
- storing the first index object and the plurality of data objects
- providing an object identifier for the first index object to the client.
A storage system comprising:
- a first node of a plurality of storage nodes, the storage nodes including a plurality of storage devices allowing for storing immutable objects including data objects and index objects, the first node having instructions which when executed cause a first processor included in a first controller in the first node to perform actions including:
- receiving a storage request from a client of the system to store a data item
- evaluating whether the data item was earlier stored
- when the data item was not earlier stored,
- partitioning the data item into a plurality of data objects, each object including an object identifier, a timestamp and a data portion
- creating a first index object for the data item, the first index object including an index object identifier, a timestamp and a list of constituent data objects, the list of constituent data objects including an object identifier and a hash for each data object
- storing the first index object and the plurality of data objects
- providing an object identifier for the first index object to the client when the data item was earlier stored,
- determining which data objects of the data item have been modified
- creating data objects for only the data objects that have been modified
- creating a second index object for the data item including in the listing of constituent data objects information about the data objects from the first index object that have not been modified and information about new data objects that represent the data objects that have been modified, the second index object including a parent index object identifier of an earlier version of the data item
- incrementing a reference count value in the index object of the parent of the second index object identified by the parent index object identifier in the second index object
- storing the second index object and the new data objects
- providing a second object identifier for the second index object to the client.
Dependencies are inferred from the claim text.