Claims
- 1. A method of adding an entry to a data structure having a plurality of entries, at least some of the entries corresponding to a range of elements that share a common attribute, the method comprising steps of:
identifying an existing entry in the data structure having a range that overlaps the range of the entry to be added; and replacing the existing entry with one or more new entries including a new entry for any portion of the range of the existing entry that is not overlapped by the entry to be added, the new entry for the portion of the existing entry not overlapped having the common attribute of the existing entry, and the one or more new entries further including an entry for the portion of the range of the entry to be added that overlaps the range of the existing entry, the entry for the portion that overlaps having the common attribute of the entry to be added.
- 2. The method according to claim 1, wherein the elements include redundantly stored data blocks.
- 3. The method according to claim 2, wherein the common attribute shared by the redundantly stored data blocks includes a timestamp that indicates when the corresponding redundantly stored data blocks were last updated.
- 4. The method according to claim 3, wherein each entry is of the form [start, end, timestamp] wherein start indicates a beginning of the range, end indicates an end of the range and timestamp includes the timestamp that indicates when the corresponding redundantly stored data blocks were last updated.
- 5. The method according to claim 3, wherein each entry includes a key-value pair, wherein the key indicates the beginning of the range.
- 6. The method according to claim 5, wherein the entries are ordered in the data structure according to the key
- 7. The method according to claim 1, wherein said identifying is performed using one or more operations selected from the group consisting of: find-largest (base) and find-next (base).
- 8. The method according to claim 1, wherein said replacing the existing entry with one or more new entries is performed using one or more operations selected from the group consisting of: insert (entry) and replace (entry).
- 9. The method according to claim 1, further comprising identifying an additional existing entry in the data structure having a range that overlaps the range of the entry to be added and replacing the additional existing entry with one or more new entries.
- 10. A method of adding an entry to a data structure having a plurality of entries, at least some of the entries corresponding to a range of elements that share a common attribute and each entry including a key-value pair wherein the key identifies a beginning of the range for the entry, the method comprising steps of:
identifying a position in the data structure for insertion of the entry wherein the entries are ordered in the data structure according to the key; determining whether an existing entry in the data structure has a range that overlaps the range of the entry to be added and if an existing entry in the data structure has a range that does not overlap the range of the entry to be added, inserting the entry to be added at the identified position, and, otherwise, replacing the existing entry with one or more new entries including a new entry for any portion of the range of the existing entry that is not overlapped by the entry to be added, the new entry for the portion of the existing entry not overlapped having the common attribute of the existing entry, and the one or more new entries further including an entry for the portion of the range of the entry to be added that overlaps the range of the existing entry, the entry for the portion that overlaps having the common attribute of the entry to be added.
- 11. The method according to claim 10, wherein the elements include redundantly stored data blocks.
- 12. The method according to claim 11, wherein the common attribute shared by the redundantly stored data blocks includes a timestamp that indicates when the corresponding redundantly stored data blocks were last updated.
- 13. The method according to claim 12, wherein each entry is of the form [start, end, timestamp] wherein start indicates a beginning of the range, end indicates an end of the range and timestamp includes the timestamp that indicates when the corresponding redundantly stored data blocks were last updated.
- 14. The method according to claim 10, wherein said identifying is performed using one or more operations selected from the group consisting of: find-largest (base) and find-next (base).
- 15. The method according to claim 10, wherein said replacing the existing entry with one or more new entries is performed using one or more operations selected from the group consisting of: insert (entry) and replace (entry).
- 16. The method according to claim 10, further comprising identifying an additional existing entry in the data structure having a range that overlaps the range of the entry to be added and replacing the additional existing entry with one or more new entries.
- 17. A system for redundant storage of data comprising a plurality of storage devices and a communication medium for interconnecting the storage devices wherein at least two of the storage devices are designated devices for storing a block of data and wherein each designated device stores a version of the data and a first timestamp that is indicative of when the version of data was last updated and a second timestamp that is indicative of a pending update to the block of data wherein when the update to the block of data is completed at one of the designated devices, the device discards the second timestamp.
- 18. The system according to claim 17, wherein one of the storage devices acts as coordinator for a data update operation, and wherein the coordinator instructs the device to discard the second timestamp.
- 19. The system according to claim 17, wherein one of the storage devices acts as coordinator for a data update operation, and wherein the coordinator instructs the device to discard the first timestamp.
- 20. The system according to claim 17, wherein the designated storage devices each store a plurality of blocks of data and also store timestamps corresponding to ranges of the data blocks in a data structure.
- 21. The system according to claim 18, further comprising non-volatile memory at each designated storage device for storing the data structure.
- 22. The system according to claim 20, wherein at least some of the entries in the data structure correspond to a range of data blocks that share a common timestamp.
- 23. The system according to claim 20, wherein each designated storage device inserts entries into the data structure such that the ranges do not overlap.
- 24. The system according to claim 23, wherein each designated storage device inserts a new entry to be added to the data structure by determining whether an existing entry in the data structure has a range that overlaps the range of the entry to be added and if an existing entry in the data structure has a range that does not overlap the range of the entry to be added, inserting the entry to be added at the identified position.
- 25. The system according to claim 24, wherein if an existing entry in the data structure has a range that overlaps the range of the entry to be added, the designated storage device identifies an existing entry in the data structure having a range that overlaps the range of the entry to be added and replaces the existing entry with one or more new entries including a new entry for any portion of the range of the existing entry that is not overlapped by the entry to be added, the new entry for the portion of the existing entry not overlapped having the timestamp of the existing entry, and the one or more new entries further including an entry for the portion of the range of the entry to be added that overlaps the range of the existing entry, the entry for the portion that overlaps having the timestamp of the entry to be added.
- 26. A system for redundant storage of data comprising a plurality of storage devices and a communication medium for interconnecting the storage devices, each storage device being designated for storing each of a plurality of blocks of data, and for each of the blocks of data stored by a storage device, wherein the storage device stores a timestamp that is indicative of when the data was last updated and when a plurality of the blocks are updated concurrently, the timestamp corresponds to a range of the data blocks.
- 27. The system according to claim 26, wherein the timestamps are arranged according to a data structure.
- 28. The system according to claim 27, further comprising non-volatile memory at each designated storage device for storing the data structure.
- 29. The system according to claim 27, wherein at least some of the entries in the data structure correspond to a range of data blocks that share a common timestamp.
- 30. The system according to claim 29, wherein each designated storage device inserts entries into the data structure such that the ranges do not overlap.
- 31. The system according to claim 30, wherein each designated storage device inserts a new entry to be added to the data structure by determining whether an existing entry in the data structure has a range that overlaps the range of the entry to be added and if an existing entry in the data structure has a range that does not overlap the range of the entry to be added, inserting the entry to be added at the identified position.
- 32. The system according to claim 31, wherein if an existing entry in the data structure has a range that overlaps the range of the entry to be added, the designated storage device identifies an existing entry in the data structure having a range that overlaps the range of the entry to be added and replaces the existing entry with one or more new entries including a new entry for any portion of the range of the existing entry that is not overlapped by the entry to be added, the new entry for the portion of the existing entry not overlapped having the timestamp of the existing entry, and the one or more new entries further including an entry for the portion of the range of the entry to be added that overlaps the range of the existing entry, the entry for the portion that overlaps having the timestamp of the entry to be added.
- 33. The system according to claim 32, wherein if an additional existing entry in the data structure has a range that overlaps the range of the entry to be added and the additional existing entry is replaced with one or more new entries.
- 34. A data structure stored in a machine-readable memory device including a plurality of entries, each entry corresponding to a range of redundantly stored data blocks and each entry including a key-value pair, wherein the key identifies a first data block of the range and the value identifies a last data block in the range and at least one timestamp associated with the range of redundantly stored data blocks.
- 35. The data structure according to claim 34, wherein the entries are ordered in the data structure according to the key for each entry.
- 36. The data structure according to claim 35, wherein the ranges of the entries do not overlap.
- 37. The data structure according to claim 36, wherein a new entry to be added is added by determining whether an existing entry in the data structure has a range that overlaps the range of the entry to be added and if an existing entry in the data structure has a range that does not overlap the range of the entry to be added, inserting the entry to be added at the identified position.
- 38. The system according to claim 37, wherein if an existing entry in the data structure has a range that overlaps the range of the entry to be added, an existing entry is identified in the data structure having a range that overlaps the range of the entry to be added and the existing entry is replaced with one or more new entries including a new entry for any portion of the range of the existing entry that is not overlapped by the entry to be added, the new entry for the portion of the existing entry not overlapped having the timestamp of the existing entry, and the one or more new entries further including an entry for the portion of the range of the entry to be added that overlaps the range of the existing entry, the entry for the portion that overlaps having the timestamp of the entry to be added.
Parent Case Info
[0001] This application is related to U.S. Application Nos. (Attorney Docket Nos. 200310507-1 and 200310143-1), filed, (the same day as this application), the contents of which are hereby incorporated by reference.