IP Library Granted Patent US 11,580,162
Granted Patent B2
US 11,580,162 · App. 16/440,978 · Granted Feb 14, 2023

Key value append

Inventors: Balakrishnan Ganeshan (Foster City, CA); Alex Dininno (Morgan Hill, CA); Giridhar G. Basava (Sammamish, WA)
G06F16/9014G06F3/0604G06F3/0644G06F3/0679G06F9/54G06F16/907
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,580,162
App. No.
16/440,978
Granted
Feb 14, 2023
Kind
B2
Abstract

Software that may be implemented using a circuit is disclosed. The software may include an Application Programming Interface (API) to receive a request from an application relating to a key-value pair for a Key-Value Solid State Drive (KV-SSD). The key-value pair may include a key and a value; the application may be executed by a processor. The software may also include combiner software to combine the key with an index to produce an indexed key, and execution software to execute an operation on the KV-SSD using the indexed key and the value.

Claims (60)

1. An article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:

receiving a request at an Application Programming Interface (API) from an application, the request relating to a key-value pair for a Key-Value Solid State Drive (KV-SSD), the key-value pair including a key and a value, the application being executed by a processor;

concatenating the key with an index to produce an indexed key;

the request includes a read request;

executing an operation on the KV-SSD using the indexed key and the value includes reading at least two values associated with at least two indexed keys on the KV-SSD based on the read request and to combine the at least two values to produce the value.

2. The article according to claim 1 , further comprising generating a metadata for the key.

3. The article according to claim 2 , further comprising using a hash table in a memory storing the metadata associated with the key.

4. The article according to claim 1 , wherein:

the request includes a delete request; and

executing the operation on the KV-SSD using the indexed key and the value includes deleting at least two indexed keys on the KV-SSD based on the delete request.

5. A method, comprising:

receiving a write request from an application to store a value associated with a key on a Key-Value Solid State Drive (KV-SSD) as a key-value pair, the application being executed by a processor;

determining a base index for the key;

concatenating the base index with the key to produce an indexed key;

performing a store operation on the KV-SSD associating the indexed key with the value;

establishing a first metadata for the key;

concatenating the value with the first metadata to produce a first modified value;

performing a store operation on the KV-SSD associating the indexed key with the value includes performing the store operation on the KV-SSD associating the indexed key with the first modified value.

6. The method according to claim 5 , further comprising returning a write result of the store operation to the application.

7. The method according to claim 5 , wherein the first metadata includes the base index for the key.

8. The method according to claim 7 , further comprising storing the first metadata in a hash table in a memory, the first metadata associated with the key.

9. The method according to claim 5 , wherein:

the method further comprises, based at least in part on the value exceeding a maximum size for an object on the KV-SSD, determining a number of objects needed to store the value;

concatenating the base index with the key to produce an indexed key includes concatenating at least two indices with the key to produce at least two indexed keys, wherein the at least two indexed keys is at least as large as the number of objects needed to store the value; and

performing a store operation on the KV-SSD associating the indexed key with the value includes:

performing a first store operation on the KV-SSD associating a first indexed key with a first portion of the value; and

performing a second store operation on the KV-SSD associating a second indexed key with a second portion of the value.

10. The method according to claim 5 , further comprising:

receiving an append request from the application to append a second value to the value associated with the key on the KV-SSD;

determining a highest append index for the key;

incrementing the highest append index to produce a new highest append index;

concatenating the new highest append index with the key to produce an append indexed key; and

performing a second store operation on the KV-SSD associating the append indexed key with the second value.

11. A method comprising:

receiving an append request from an application to append a second value to a value associated with a key on a Key-Value Solid State Drive (KV-SSD) as a key-value pair, the application being executed by a processor;

determining a highest append index for the key;

incrementing the highest append index to produce a new highest append index;

combining the new highest append index with the key to produce an append indexed key; and

performing a second store operation on the KV-SSD associating the append indexed key with the second value.

12. The method according to claim 11 , further comprising returning an append result of the second store operation to the application.

13. The method according to claim 11 , wherein:

the KV-SSD stores a first metadata associated with the key, the first metadata including at least one of the highest append index, a first offset, a first length, and a first data structure of append requests for the key-value pair;

the method further comprises:

establishing a second metadata for the key; and

combining the second value with the second metadata to produce a second modified value; and

performing a second store operation on the KV-SSD associating the append indexed key with the second value includes performing the second store operation on the KV-SSD associating the append indexed key with the second modified value.

14. The method according to claim 13 , wherein the second metadata includes the new highest append index for the key.

15. The method according to claim 14 , further comprising storing the second metadata in a hash table in a memory, the second metadata associated with the key.

16. The method according to claim 15 , wherein storing the second metadata in a hash table in a memory, the second metadata associated with the key includes:

determining that the hash table does not store the first metadata associated with the key;

determining the highest append index for the key; and

accessing the first metadata from the KV-SSD responsive to the highest append index for the key.

17. The method according to claim 16 , wherein determining the highest append index for the key includes systematically requesting data associated with keys from the KV-SSD until the highest append index for the key is determined.

18. The method according to claim 17 , wherein systematically requesting data associated with keys from the KV-SSD until the highest append index for the key is determined includes:

determining a range of possible highest append indices for the key;

selecting a middle append index in the middle of the range of possible highest append indices for the key;

combining the middle append index with the key to produce a test key;

attempting to access the data associated with the test key;

based at least in part on part on the KV-SSD response to the attempt to access the data associated with the test key, narrowing the range of possible highest append indices for the key to one of a first half range and a second half range; and

repeating the operations of selecting a middle append index, combining the middle append index with the key, narrowing the range of possible highest append indices for the key, and attempting to access the data associated with the test key until the range includes a single possible highest append index.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2021
From: STELLUS TECHNOLOGIES, INC.
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 055122/0093 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2020
From: STELLUS TECHNOLOGIES, INC.
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 054798/0626 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2020
From: GANESHAN, BALAKRISHNAN; DININNO, ALEX; BASAVA, GIRIDHAR G.
To: STELLUS TECHNOLOGIES, INC.
Reel/Frame 054479/0172 →
Continuity (2)
Provisional Application 62836065 · Apr 18, 2019
Related Publication 20200334292A1 · Oct 22, 2020
Cited By (1)
US 12,625,621