9195611

Efficiently Updating and Deleting Data in a Data Storage System

PublishedNovember 24, 2015
Assigneenot available in USPTO data we have
Technical Abstract

Patent Claims
20 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A method for storing data, comprising: on an electronic system having one or more processors and memory storing data and one or more programs for execution by the one or more processors: receiving a first data request, the request including a first range of one or more keys and an associated first value; receiving a second data request, the request including a second range of one or more keys and an associated second value; determining whether the first range overlaps, at least in part, the second range; in accordance with a determination that the first range overlaps, at least in part, the second range, identifying one or more overlap points associated with the first range and the second range; for each of the identified overlap points, creating respective data items including respective ranges of keys, the respective ranges of each respective data item including one or more keys that are either: (a) the one or more keys between a terminal key of the first or second range and the overlap point, or (b) the one or more keys between two adjacent overlap points; and storing the created data items in the memory, wherein all the keys included in the first and second data requests are included in one of the created data items.

2

2. The method of claim 1 , further comprising: recording the first and second data request in a data request log.

3

3. The method of claim 1 , wherein the created data items in memory are stored in a data request buffer.

4

4. The method of claim 3 , further comprising: detecting when a predetermined amount of data is stored in the data request buffer; and writing the data stored in the data request buffer to an immutable data file.

5

5. The method of claim 1 , wherein the first value associated the first with the first range of one or more keys is a deletion marker.

6

6. The method of claim 1 , further comprising: for each respective created data item in the plurality of created data items: determining whether the respective created data item includes keys originally found in both the first data request and the second data request; in accordance with a determination that the respective created data item includes keys originally found in both the first data request and the second data request, associating the range of key values in the created data item with both the first value and the second value.

7

7. The method of claim 1 , wherein each data request includes a time stamp.

8

8. The method of claim 1 , further comprising: for each respective created data item in the plurality of created data items: determining whether the respective created data item includes keys originally found in both the first data request and the second data request; in accordance with a determination that the respective created data item includes keys originally found in both the first data request and the second data request: determining, based on time stamps associated with the data requests, which value of the first value and the second is the most recent; and associating the range of key values in the created data item with the most recent value of the first and second value.

9

9. A method for data storage and retrieval, comprising: on an electronic system having one or more processors and memory storing data and one or more programs for execution by the one or more processors: storing one or more immutable data files, each immutable data file including one or more key ranges, and each key range including one or more keys and an associated value; in response to receiving a data request: for each immutable data file in the one or more immutable data files: reading one or more respective key ranges out of the immutable data file and storing the respective key ranges in memory; identifying, for all the respective key ranges, overlap points that identify, in one or more key ranges, keys that overlap with keys in other key ranges; creating one or more data items, each data item including a range of one or more keys, each range including one or more keys that are either 1) the one or more keys between two overlap points, 2) the one or more keys between a terminal key of a key range and an overlap point, or 3) the one or more keys between two terminal keys of a single key range, such that the none of the created data items include any overlap points; for each respective created data item: determining whether the respective created data item key range matches the key range of another created data item; in accordance with a determination that the respective created data item key range matches the key range of another created data item, removing the older data item; determining whether any other data item has a key range which is adjacent to the key range of the respective data item; in accordance with a determination that a second data item has a key range adjacent to the key range of the respective data item; determining whether a value associated with the key ranges in the respective created data item and a value associated with the key ranges in the identified second created data item are the same; and in accordance with a determination that the value associated with the key ranges in the respective created data item is the same as the value associated with the key ranges in the identified second created data item: merging the respective data item and the identified second data item into a single data item including a key range covering the combined key ranges of both data items.

10

10. The method of claim 9 , wherein the data request is a read request for a value associated with a key stored in the immutable data files.

11

11. The method of claim 10 , further including: merging the created one or more data items into a single, merged, table of data, and returning the specific value associated with the key specified by the read request.

12

12. The method of claim 9 , wherein the data request is a compaction request.

13

13. The method of claim 12 further comprising: saving the created one or more data items into a new immutable data file; and deleting the immutable data files such that those data files are no longer stored on the data storage system.

14

14. The method of claim 9 , wherein at least one value associated with at least on range of one or more keys is a deletion marker.

15

15. The method of claim 14 , further comprising: for each range of one or more keys in the created one or more data items: determining whether the most recent associated value is a deletion marker; and in accordance with a determination that the most recent associated value is a deletion marker, removing the range of keys from memory.

16

16. The method of claim 9 , further comprising: for each respective created data item in the plurality of created data items: determine whether the respective created data item includes keys originally found more than one key range; in accordance with a determination that the respective created data item includes keys originally found in more than one key range, associating the range of key values in the created data item with the all the values associated with the more than one key ranges.

17

17. The method of claim 9 , wherein each key range includes a time stamp.

18

18. The method of claim 17 , further comprising: for each respective created data item in the plurality of created data items: determining whether the respective created data item includes keys originally found in both the first data request and the second data request; in accordance with a determination that the respective created data item includes keys originally found in both the first data request and the second data request; determining, based on time stamps associated with the data requests, which value of the first value and the second value is the most recent; and associating the range of key values in the created data item with the most recent value of the first and second value.

19

19. A data storage server system for storing data, comprising: one or more processors; memory storing one or more programs to be executed by the one or more processors; the one or more programs comprising instructions for: receiving a first data request, the request including a first range of one or more keys and an associated first value; receiving a second data request, the request including a second range of one or more keys and an associated second value; determining whether the first range overlaps, at least in part, the second range; in accordance with a determination that the first range overlaps, at least in part, the second range, identifying one or more overlap points associated with the first range and the second range; for each of the identified overlap points, creating respective data items including respective ranges of keys, the respective ranges of each respective data item including one or more keys that are either: (a) the one or more keys between a terminal key of the first or second range and the overlap point, or (b) the one or more keys between two adjacent overlap points; and storing the created data items in the memory, wherein all the keys included in the first and second data requests are included in one of the created data items.

20

20. The system of claim 19 , the one or more programs further including instructions for: recording the first and second data request in a data request log.

Patent Metadata

Filing Date

Unknown

Publication Date

November 24, 2015

Inventors

Jeffrey Adgate Dean
Sanjay Ghemawat
Andrew Fikes

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Efficiently Updating and Deleting Data in a Data Storage System” (9195611). https://patentable.app/patents/9195611

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.