US12355876B2 - Key value storage device with hashing - Google Patents
Key value storage device with hashing Download PDFInfo
- Publication number
- US12355876B2 US12355876B2 US17/506,647 US202117506647A US12355876B2 US 12355876 B2 US12355876 B2 US 12355876B2 US 202117506647 A US202117506647 A US 202117506647A US 12355876 B2 US12355876 B2 US 12355876B2
- Authority
- US
- United States
- Prior art keywords
- instruction
- key
- log
- value
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Definitions
- One or more aspects of embodiments according to the present disclosure relate to persistent storage, and more particularly to a system and method for key value storage device with perfect hashing.
- KV storage devices have various uses for data storage, e.g., in server systems.
- data may be stored as values, each value being identified by a respective key, and a host using the KV storage device may, for example, send a read request including a key, the key identifying the value to be read from storage.
- a KV persistent storage device e.g., a KV SSD
- a locality converter, a Bloom filter over the locality converter and a tail pointer table are employed between episodic updates to the perfect hash.
- instructions that affect the set of keys may be recorded in the locality converter, and received instructions may check the locality converter (after first checking the Bloom filter) to ensure that any reads from the principal key-value store are valid.
- Key updates e.g., Puts or Deletes
- a method including: receiving, by a persistent key-value storage device including a hash for mapping keys to value addresses, a first instruction, the first instruction being an instruction for accessing a first key, in a first key-value collection; and recording the first instruction in an instruction log of the persistent key-value storage device.
- the hash is a hash function configured to avoid collisions.
- the recording of the first instruction in the instruction log includes recording the first instruction at a first position in the instruction log, the method further including: receiving a second instruction, the second instruction being an instruction for accessing a second value, in the first key-value collection; and recording the second instruction, with a pointer to the first position, at a second position in the instruction log.
- the recording of the first instruction in the instruction log includes storing a pointer to the first position in a location, corresponding to the first key-value collection, in a tail pointer table.
- the recording of the second instruction in the second position in the instruction log includes storing a pointer to the second position in the location, corresponding to the first key-value collection, in the tail pointer table.
- the first instruction is a delete instruction
- the method further includes adding the first key to a blacklist.
- the method further includes: receiving, by the persistent key-value storage device, a second instruction, the second instruction being an instruction for accessing the first key; determining that the first key is in the blacklist; and reporting the absence of the first key.
- the recording of the first instruction in the instruction log further includes adding the first key to a Bloom filter.
- the determining that the first key is present in the instruction log includes: determining, based on the Bloom filter, that the first key may be present in the instruction log.
- the hash is a hash function configured to avoid collisions.
- the recording of the first instruction in the instruction log includes recording the first instruction at a first position in the instruction log
- the processing circuit is further configured to: receive a second instruction, the second instruction being an instruction for accessing a second value, in the first key-value collection; and record the second instruction, with a pointer to the first position, at a second position in the instruction log.
- the recording of the first instruction in the instruction log includes storing a pointer to the first position in a location, corresponding to the first key-value collection, in a tail pointer table.
- the recording of the second instruction in the second position in the instruction log includes storing a pointer to the second position in the location, corresponding to the first key-value collection, in the tail pointer table.
- the first instruction is a delete instruction
- the processing circuit is further configured to add the first key to a blacklist.
- the processing circuit is further configured to: receive a second instruction, the second instruction being an instruction for accessing the first key; determine that the first key is in the blacklist; and report the absence of the first key.
- the recording of the first instruction in the instruction log further includes adding the first key to a Bloom filter.
- the processing circuit is further configured to: receive a second instruction, the second instruction being an instruction for accessing the first key; determine that the first key is present in the instruction log; and in response to determining that the first key is present in the instruction log, access a value, associated with the first key, the value being at a first address, the first address being stored in the instruction log with the first key.
- a persistent key-value storage device including: means for processing; and persistent storage media, the storage device including a hash for mapping keys to value addresses, the hash including an instruction log, the means for processing being configured to: receive a first instruction, the first instruction being an instruction for accessing a first key, in a first key-value collection; and record the first instruction in the instruction log.
- FIG. 1 A is a block diagram of a storage device, according to an embodiment of the present disclosure
- FIG. 1 B is a schematic illustration of hash functions and bitmap sections, according to an embodiment of the present disclosure
- FIG. 2 is a flowchart of a method for operating a KV persistent storage device, according to an embodiment of the present disclosure
- FIG. 3 is a flowchart of a method for updating a perfect hash, according to an embodiment of the present disclosure
- FIG. 4 is a flowchart of a method for handling an instruction for accessing a first value, according to an embodiment of the present disclosure
- FIG. 5 is a schematic illustration of a set of backup files and corresponding bitmaps, according to an embodiment of the present disclosure
- FIG. 6 is a flowchart for handling orphaned data in a backup appliance, according to an embodiment of the present disclosure
- FIG. 7 is a block diagram of a host and a storage device, according to an embodiment of the present disclosure.
- FIG. 8 is a flow chart of a method for handling an instruction, according to an embodiment of the present disclosure.
- FIG. 9 is a flow chart of another method for handling an instruction, according to an embodiment of the present disclosure.
- KV key-value
- Some KV store implementations use a fixed hash function to hash a (time-moving) set of keys to buckets. Keys thus hashed into buckets may cause collisions, with collision chain length causing long tail latency. A worst-case tail latency may be proportional to the length of longest collision chain in buckets of the hash map.
- NAND Not-AND
- locating a key may take several Not-AND (NAND) page reads, and the longest tail latency reads may require a relatively large number of NAND page reads (e.g., as many as 18 to 22 NAND page reads). As such, collisions may result in significant performance degradation. For workloads in which KV uploads happen in bulk and episodically, and which have a read-intensive access pattern, even the occasional avoiding of a single NAND page key lookup may result in a considerable performance improvement.
- NAND Not-AND
- KV SSDs and KV stores may implement a hashmap within the storage device wherein a single key is stored in a NAND page, resulting in higher device write amplification factor (WAF) when processing Delete instructions and higher read amplification factor (RAF) when processing Put, Get, or Exist instructions.
- WAF device write amplification factor
- RAF read amplification factor
- NAND pages containing keys that collide on a bucket number may be chained together.
- the worst-case tail latency of such a KV store may be proportional to the length of longest collision chain in buckets of the hashmap. As mentioned above, in such an approach, collision may result in performance degradation.
- a KV persistent storage device uses a dynamic perfect hash to guarantee at most a single page read to look up a key.
- a locality converter (which may also be referred to as an “instruction log”), a Bloom filter over the locality converter and a tail pointer table are employed between episodic updates to the perfect hash.
- Key updates (e.g., Puts or Deletes) may be processed in a delayed fashion when the locality converter has gathered a sufficient number of updates.
- the locality converter, the Bloom filter, and the tail pointer table may be employed for accessing the keys (e.g., upon receipt of corresponding instructions from a host).
- an instruction for “accessing” a key in the persistent storage device is any instruction (such as a Put, a Get, a Delete, or an Exist) that reads or writes the key or determines whether it is stored in the storage device.
- the buckets of the hashmap are grouped together into bucket groups (which may also be referred to as “key-value collections”).
- a fixed hash function (different from the perfect hash) is employed to first map each key to a bucket group; this fixed hash function may map a plurality of keys to each bucket group.
- the fixed hash function may be a single, unchanging hash function (i.e., unlike the has functions used to implement the perfect hash (discussed in further detail below), it may not be replaced with a different hash function during operation).
- a respective perfect hash is then employed, within each bucket group, to map each key to a bucket, without collisions.
- the keys belonging to multiple buckets in a group may be packed into a single NAND page.
- a “bucket” is a storage location in which a value is stored, or, equivalently, the stored value itself.
- a “bucket group” is a collection of such buckets, grouped together, for example, for purposes of facilitating access.
- a first table which may be referred to as a hash map 105 , is used to store one entry for each bucket group.
- the hash map 105 may be sized to fit in a region of dynamic random-access memory (DRAM) that may be provided in the persistent storage for use with a hash function in which collisions may occur and keys are chained to accommodate collisions.
- DRAM dynamic random-access memory
- Such a region may have a size of, e.g., four bytes per bucket; as such, the entries of the hash map 105 may be sized accordingly.
- Each entry of the hash map 105 includes: (i) a base page pointer 110 , (ii) a set of hash function selectors 115 , (iii) a stored key bitmap 120 , and (iv) a blacklist array 125 (each of which is discussed in further detail below).
- the hash function selectors select hash functions from a universal hash function generator.
- the hash map 105 includes between 3 and 5 such selectors for each bucket group.
- the stored key bitmap (which may be referred to simply as the “bitmap”) is an injective transformation that maps a bit location, or “bit offset” within the bitmap to a unique key offset, which specifies the logical address at which the key is stored, relative to the base page address.
- Each set bit in the bitmap corresponds to a key in the packed keys stored in the key storage area, which may be a set of NAND pages beginning at the base page address for that bucket group.
- the keys may be stored in the key storage area in consecutive fields referred to as “key slots”, each key slot having a width sufficient to accommodate the largest possible key (e.g., a width of between 32 and 255 bytes).
- the keys are written in the key storage area so that the n th set bit of the bitmap corresponds to the n th key slot in the key storage area; for example, the 10 th set bit (which could be at bit offset 25 , say, in the bitmap) corresponds to key slot number 10 from the base page address. For example, if each NAND page can store 64 keys total, then the 100th set bit in the bitmap corresponds to the 36 th key in the second NAND page.
- the blacklist array stores the indexes of any keys that have been deleted (as a result of a Delete instruction received from the host) but the deletion of which is not yet reflected in the bitmap and in the key storage area containing the packed keys.
- the keys are packed into the NAND pages of the key storage area such that there are at most P keys in each NAND page, where P is calculated for the longest key name (e.g., key sizes could be, say, less than 24 bytes or less than 256 bytes based on the applications).
- the logical-to-physical (L2P) table is repurposed to store the hash map 105 (which contains the hash function selectors, the bitmap for stored keys and the blacklist array of deleted key indexes).
- a “hash” is a system or method (or combination thereof) for mapping keys to values.
- a “perfect hash” is a hash function that avoids collisions.
- the following method may be used.
- the bits in the bitmap space of the bucket group are all set to 0 and the bitmap space is partitioned into K sections 170 .
- a family of hash functions 175 is selected, at 205 , a first hash function is selected from a family of hash functions 175 , and all keys in the bucket group are hashed (e.g., mapped to a respective bit offset), at 210 , such that each key is represented in the first section of the hash map 105 .
- each key that is represented in the first section of the bitmap without a collision the corresponding bit in the stored key bitmap is set to 1. If any collisions occurred, then another hash function is selected, and the keys that collided with other keys (i.e., the keys which were mapped to a bit that was already set to 1) are hashed into the 2 nd section of the bitmap. As in the first iteration, each key is mapped to a bit of the second section of the bitmap; if this bit is not already set, it is set to 1; if it is already set, then the key is added to a list of keys that collided upon being hashed.
- This approach is repeated, each time with the next section of the stored key bitmap and with a new hash function, until no collisions occur in a section of the stored key bitmap, or until the Kth section is used and a collision occurs. At the end of the K iterations (or sooner), either all keys will have been exhausted or some keys will have collided in the Kth section of the bitmap. If there are collisions in the Kth section of the bitmap the entire process may be repeated, after clearing the stored key bitmap, by selecting a new hash function for the 1 st section of the bitmap. In some embodiments, a perfect hash may be created by the method described, for about 40 to 100 million keys per second per ARM core.
- Each value may be stored in persistent storage.
- the values may have variable sizes and they may be large; as such, some of the values may be fragmented in storage.
- the key storage area may store, along with each key, a pointer to an address (e.g., a physical address) in an extent mapper 140 (which may be the (possibly fragmented) storage area for storing values.
- an extent mapper 140 which may be the (possibly fragmented) storage area for storing values.
- each value may be stored as one or more entries in a linked list, as shown.
- a locality converter 150 and blacklist array may be employed (at 205 , as discussed in further detail below) to continue performing Get, Put, and Delete instructions without regenerating the perfect hash as described above.
- This mode of operation may result in a gradual increase in the size of the locality converter and of the blacklist array.
- the hash may be updated or reconstructed. In FIG. 2 , this process is illustrated as follows.
- the key updates (each of which is saved in the locality converter as part of a corresponding instruction recorded in the locality converter) are collated per bucket, and at 220 , a dynamic perfect hash computation is performed.
- a family of hash functions is selected to create the perfect hash for representing all keys in the bucket group, at 230 , a bitmap of hash values for the keys is created (this bitmap also serves to determine offsets in the key storage area), and, at 235 , the keys are packed into the key storage area and the values are stored in the extent mapper.
- the hash map (or L2P table) may be updated with indexes of hash functions selected for creating the perfect hash for the bucket group and the bitmap containing the offsets of keys in the NAND pages of packed keys may be updated.
- the process is repeated for each bucket group; if, as determined at 245 , more bucket groups remain to be processed, the process returns to step 225 .
- FIG. 3 shows a process for updating the perfect hash.
- the key additions and deletions for the bucket group, in the locality converter are collated (keys in the locality converter that were inserted and subsequently deleted are excluded).
- the blacklist array is updated with the indexes of the keys to be deleted.
- new keys are to be added, then, if, as determined at 325 , the keys can be added to the existing perfect hash (choosing new hash functions as needed to update the last few sections only), the stored key bitmap is updated and the keys are packed in new NAND pages, at 330 .
- the bit corresponding to any deleted key may be cleared and the bit corresponding to any added key may be set (if it is not already set; if it is, mapping to other sections of the bit map may be attempted). If the existing hash functions are able to accommodate the updated keys using this process, the contents of the key storage area may be updated accordingly. If the existing hash functions are unable to accommodate the updated keys, the hash functions of only the last few sections of the bitmap may be changed, such that the new set of keys can be represented as a perfect hash with minimal compute effort.
- the perfect hash is re-computed for all the new and old keys to be stored in the bucket group, the blacklist array is cleared as needed, the keys are packed in new NAND pages (i.e., forming a new key storage area), and the old NAND pages (of the previously used key storage area) are ready for device garbage collection.
- instructions that add or delete keys may be handled by recording each such instruction in (e.g., appending each such instruction to) the locality converter, which is a storage area, organized as a log-structured store, for recording such instructions.
- “recording an instruction” in the locality converter means storing, in the locality converter, sufficient information for the instruction to be performed later (e.g., storing the operation to be performed (e.g., whether it is a Put, a Get, a Delete, or an Exist), storing the key, and storing the value (or a pointer to the value) if the value is to be written or modified).
- a “locality converter” is any data structure suitable for storing sufficient information for an instruction to be performed later.
- the instructions may be saved in the locality converter as a linked list for each bucket group.
- a tail pointer table 155 ( FIG. 1 ), for each bucket group, may point to the last entry added, for the bucket group.
- the Bloom filter 160 is updated to record the presence of the key by setting appropriate bits.
- the instructions for each bucket group are saved to a separate respective locality converter for the bucket group (instead of all of the instructions being saved to a locality converter shared by several (e.g., all) of the bucket groups).
- the position of the deleted keys in the stored key bitmap is marked in the blacklist array (which, as mentioned above, is maintained per bucket group). During subsequent lookups, if a key is found in the bitmap, its position is also checked in the blacklist array to ensure that it has not been deleted (without the key storage area having been updated yet to reflect the deletion).
- a key lookup operation may include checking whether the key is in the locality converter by consulting, at 405 , the Bloom filter of the locality converter. If, as determined at 410 , the key is not present in the locality converter, it is hashed (using the fixed hash function) to one of the bucket groups. Based on the bucket group the key is mapped into, the hash function for the bucket group is chosen according to the hash function selectors for the bucket group, and the bitmap is checked to see whether the bit corresponding to the key is set.
- the system concludes, at 420 , that the key is not stored (the system may then report the absence of the first key to the host). In this situation it is not necessary to compare the key received with the Get instruction to any key stored in the key storage area. As such, a failed key lookup may be quite fast, which may be particularly advantageous for Purpose-Built Backup Appliance and cloud backup applications.
- Backup appliances may store the keys (finger prints) in backup file descriptors (potentially storing thousands to millions of such keys). A single key may potentially be stored in multiple backups. When backups are deleted, some keys may be orphaned; orphaned keys are not tracked by the appliances. As such, some embodiments enable appliances to access the bitmap of stored keys within a bucket group. In such an embodiment, the appliance may identify which bucket and bucket group a key in a live backup belongs to and obtain the bitmap of stored keys in that bucket group. This may be done for all keys in live backups. The appliance may then return a modified bitmap per bucket group indicating which keys must be retained and which are to be deleted. The device may then process this list and perform an appropriate delete action on each key that is no longer needed.
- FIG. 7 is a block diagram of a host 705 and a storage device 710 (which may be a KV storage device, e.g., a KV SSD).
- the storage device 710 may have a form factor that is any one of a plurality of form factors suitable for persistent storage devices, including but not limited to 2.5′′, 1.8′′, MO-297, MO-300, M.2, and Enterprise and Data Center SSD Form Factor (EDSFF), and it may have an electrical interface, through which it may be connected to the host 705 , that is any one of a plurality of interfaces suitable for persistent storage devices, including Peripheral Component Interconnect (PCI), PCI express (PCIe), Ethernet, Small Computer System Interface (SCSI), Serial AT Attachment (SATA), and Serial Attached SCSI (SAS).
- PCI Peripheral Component Interconnect
- PCIe PCI express
- SCSI Small Computer System Interface
- SATA Serial AT Attachment
- SAS Serial Attached SCSI
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Power Engineering (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims (16)
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/506,647 US12355876B2 (en) | 2021-08-18 | 2021-10-20 | Key value storage device with hashing |
| KR1020220089638A KR20230026946A (en) | 2021-08-18 | 2022-07-20 | Key value storage device with hashing |
| EP22188237.6A EP4137963A1 (en) | 2021-08-18 | 2022-08-02 | Persistent key value storage device with hashing and method for operating the same |
| CN202210982139.5A CN115708080A (en) | 2021-08-18 | 2022-08-16 | Key value storage device with hash |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163234613P | 2021-08-18 | 2021-08-18 | |
| US17/506,647 US12355876B2 (en) | 2021-08-18 | 2021-10-20 | Key value storage device with hashing |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20230054127A1 US20230054127A1 (en) | 2023-02-23 |
| US12355876B2 true US12355876B2 (en) | 2025-07-08 |
Family
ID=83115587
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/506,647 Active 2042-05-17 US12355876B2 (en) | 2021-08-18 | 2021-10-20 | Key value storage device with hashing |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US12355876B2 (en) |
| EP (1) | EP4137963A1 (en) |
| KR (1) | KR20230026946A (en) |
| CN (1) | CN115708080A (en) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110175176A (en) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | A kind of KV configuration method for database, querying method, equipment and storage medium |
| KR102471966B1 (en) * | 2021-11-25 | 2022-11-30 | (주)글루시스 | Data input and output method using storage node based key-value srotre |
| US12105691B1 (en) * | 2023-09-05 | 2024-10-01 | Hewlett Packard Enterprise Development Lp | Distributable hash filter for nonprobabilistic set inclusion |
| CN117539408B (en) * | 2024-01-09 | 2024-03-12 | 华中科技大学 | Integrated index system for memory and calculation and key value pair memory system |
Citations (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5692177A (en) | 1994-10-26 | 1997-11-25 | Microsoft Corporation | Method and system for data set storage by iteratively searching for perfect hashing functions |
| WO2008037201A1 (en) | 2006-09-29 | 2008-04-03 | Huawei Technologies Co., Ltd. | Method and apparatus for solving hash collision |
| WO2011029212A1 (en) | 2009-09-08 | 2011-03-17 | 中国科学院计算技术研究所 | Hash method and hash device based on double-counting bloom filters |
| US20120158674A1 (en) | 2010-12-20 | 2012-06-21 | Mark David Lillibridge | Indexing for deduplication |
| US8271500B2 (en) | 2007-09-11 | 2012-09-18 | Microsoft Corporation | Minimal perfect hash functions using double hashing |
| US8880544B2 (en) | 2009-06-26 | 2014-11-04 | Simplivity Corporation | Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system |
| US20150058595A1 (en) * | 2013-08-26 | 2015-02-26 | Oracle International Corporation | Systems and Methods for Implementing Dynamically Configurable Perfect Hash Tables |
| US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
| US20170068700A1 (en) | 2015-09-04 | 2017-03-09 | Arista Networks, Inc. | System And Method Of A Dynamic Shared Memory Hash Table With Notifications |
| US9612955B2 (en) | 2013-01-09 | 2017-04-04 | Wisconsin Alumni Research Foundation | High-performance indexing for data-intensive systems |
| US20170206231A1 (en) * | 2016-01-19 | 2017-07-20 | Nvidia Corporation | Tree traversal with backtracking in constant time |
| US9892237B2 (en) | 2014-02-06 | 2018-02-13 | Reference Genomics, Inc. | System and method for characterizing biological sequence data through a probabilistic data structure |
| US20190042571A1 (en) * | 2018-05-07 | 2019-02-07 | Intel Corporation | Update-Insert for Key-Value Storage Interface |
| US10261913B2 (en) | 2017-04-20 | 2019-04-16 | Alibaba Group Holding Limited | Persistent memory for key-value storage |
| US20190138612A1 (en) | 2017-11-08 | 2019-05-09 | Samsung Electronics Co., Ltd. | Key-value storage device and method of operating the same |
| WO2019156309A1 (en) | 2018-02-09 | 2019-08-15 | 연세대학교 산학협력단 | Key-value-based data access device and method using internal parallelism of flash storage device |
| US20190332303A1 (en) | 2018-04-27 | 2019-10-31 | Hewlett Packard Enterprise Development Lp | Expandable index with pages to store object records |
| US10496283B2 (en) | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
| US10558705B2 (en) | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
| US20200159629A1 (en) | 2017-06-30 | 2020-05-21 | Intel Corporation | Log structure with compressed keys |
| US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
| US10783186B2 (en) | 2017-08-31 | 2020-09-22 | Micron Technology, Inc. | Heterogenous key-value sets in tree database |
| US20200334258A1 (en) | 2019-04-17 | 2020-10-22 | Oath Inc. | Method and system for searching a key-value storage |
| US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
| US10956324B1 (en) * | 2013-08-09 | 2021-03-23 | Ellis Robinson Giles | System and method for persisting hardware transactional memory transactions to persistent memory |
| US20220035737A1 (en) * | 2018-09-27 | 2022-02-03 | Sony Corporation | Storage apparatus, high dimensional gaussian filtering circuit, stereo depth calculation circuit, and information processing apparatus |
| US20220207013A1 (en) * | 2018-06-12 | 2022-06-30 | Chicago Mercantile Exchange Inc. | Optimized data structure |
| US11474699B1 (en) * | 2021-06-07 | 2022-10-18 | The Florida International University Board Of Trustees | Systems and methods for optimizing data management within key value storage |
-
2021
- 2021-10-20 US US17/506,647 patent/US12355876B2/en active Active
-
2022
- 2022-07-20 KR KR1020220089638A patent/KR20230026946A/en active Pending
- 2022-08-02 EP EP22188237.6A patent/EP4137963A1/en active Pending
- 2022-08-16 CN CN202210982139.5A patent/CN115708080A/en active Pending
Patent Citations (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5692177A (en) | 1994-10-26 | 1997-11-25 | Microsoft Corporation | Method and system for data set storage by iteratively searching for perfect hashing functions |
| WO2008037201A1 (en) | 2006-09-29 | 2008-04-03 | Huawei Technologies Co., Ltd. | Method and apparatus for solving hash collision |
| US8271500B2 (en) | 2007-09-11 | 2012-09-18 | Microsoft Corporation | Minimal perfect hash functions using double hashing |
| US8880544B2 (en) | 2009-06-26 | 2014-11-04 | Simplivity Corporation | Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system |
| WO2011029212A1 (en) | 2009-09-08 | 2011-03-17 | 中国科学院计算技术研究所 | Hash method and hash device based on double-counting bloom filters |
| US10558705B2 (en) | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
| US20120158674A1 (en) | 2010-12-20 | 2012-06-21 | Mark David Lillibridge | Indexing for deduplication |
| US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
| US9612955B2 (en) | 2013-01-09 | 2017-04-04 | Wisconsin Alumni Research Foundation | High-performance indexing for data-intensive systems |
| US10956324B1 (en) * | 2013-08-09 | 2021-03-23 | Ellis Robinson Giles | System and method for persisting hardware transactional memory transactions to persistent memory |
| US20150058595A1 (en) * | 2013-08-26 | 2015-02-26 | Oracle International Corporation | Systems and Methods for Implementing Dynamically Configurable Perfect Hash Tables |
| US9892237B2 (en) | 2014-02-06 | 2018-02-13 | Reference Genomics, Inc. | System and method for characterizing biological sequence data through a probabilistic data structure |
| US20170068700A1 (en) | 2015-09-04 | 2017-03-09 | Arista Networks, Inc. | System And Method Of A Dynamic Shared Memory Hash Table With Notifications |
| US20170206231A1 (en) * | 2016-01-19 | 2017-07-20 | Nvidia Corporation | Tree traversal with backtracking in constant time |
| US10496283B2 (en) | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
| US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
| US10261913B2 (en) | 2017-04-20 | 2019-04-16 | Alibaba Group Holding Limited | Persistent memory for key-value storage |
| US20200159629A1 (en) | 2017-06-30 | 2020-05-21 | Intel Corporation | Log structure with compressed keys |
| US10783186B2 (en) | 2017-08-31 | 2020-09-22 | Micron Technology, Inc. | Heterogenous key-value sets in tree database |
| US20190138612A1 (en) | 2017-11-08 | 2019-05-09 | Samsung Electronics Co., Ltd. | Key-value storage device and method of operating the same |
| WO2019156309A1 (en) | 2018-02-09 | 2019-08-15 | 연세대학교 산학협력단 | Key-value-based data access device and method using internal parallelism of flash storage device |
| US20190332303A1 (en) | 2018-04-27 | 2019-10-31 | Hewlett Packard Enterprise Development Lp | Expandable index with pages to store object records |
| US20190042571A1 (en) * | 2018-05-07 | 2019-02-07 | Intel Corporation | Update-Insert for Key-Value Storage Interface |
| US20220207013A1 (en) * | 2018-06-12 | 2022-06-30 | Chicago Mercantile Exchange Inc. | Optimized data structure |
| US20220035737A1 (en) * | 2018-09-27 | 2022-02-03 | Sony Corporation | Storage apparatus, high dimensional gaussian filtering circuit, stereo depth calculation circuit, and information processing apparatus |
| US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
| US20200334258A1 (en) | 2019-04-17 | 2020-10-22 | Oath Inc. | Method and system for searching a key-value storage |
| US11474699B1 (en) * | 2021-06-07 | 2022-10-18 | The Florida International University Board Of Trustees | Systems and methods for optimizing data management within key value storage |
Non-Patent Citations (10)
| Title |
|---|
| Anand, Ashok, et al., "Cheap and Large CAMs for High Performance Data-Intensive Networked Systems," USENIX, The Advanced Computing Systems Association, 2019, 16 pages. |
| Biplob Debnath, et al., SkimpyStash: RAM Space Skimpy Key Value Store on Flash-based Storage, Jun. 12-16, 2011, SIGMOD' 11, Athens, Greece, pp. 25-36. (Year: 2011). * |
| Chai, Y. et al., "LDC: A Lower-Level Driven Compaction Method to Optimize SSD-Oriented Key-Value Stores", 2019 IEEE 35th International Conference on Data Engineering, 2019, pp. 722-733, IEEE. |
| Debnath, Biplob, et al., "Revisiting Hash Table Design for Phase Change Memory," Interactions of NVM/Flash With Operating Systems and Workloads, ACM, Oct. 2015, 9 pages. |
| Debnath, Biplob, et al., "SkimpyStash: RAM Space Skimpy Key-Value Store on Flash-based Storage," Proceedings of the 2011 ACM Sigmod International Conference on Management of Data, 2011, 12 pages. |
| EPO Extended European Search Report dated Jan. 13, 2023, issued in corresponding European Patent Application No. 22188237.6 (11 pages). |
| Kelly, Robert, et al., "Lock-Free Hopscotch Hashing," arxiv.org, Cornell University Library, 2019, 15 pages. |
| Lessley, Brenton, "Data-Parallel Hashing Techniques for GPU Architectures," arxiv.org, Cornell University Library, 2018, 26 pages. |
| Lim, Hyeontaek, et al., "SILT: A Memory-Efficient, High-Performance Key-Value Store," ACM 2012 Conference on Computer Supported Cooperative Work Companion, ACM, 2011,13 pages. |
| Menon, P. et al., "CaSSanDra: An SSD Boosted Key-Value Store", 2014 IEEE 30th International Conference on Data Engineering, 2014, 6 pages, IEEE. |
Also Published As
| Publication number | Publication date |
|---|---|
| US20230054127A1 (en) | 2023-02-23 |
| CN115708080A (en) | 2023-02-21 |
| EP4137963A1 (en) | 2023-02-22 |
| KR20230026946A (en) | 2023-02-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12355876B2 (en) | Key value storage device with hashing | |
| US8892846B2 (en) | Metadata management for virtual volumes | |
| US10592348B2 (en) | System and method for data deduplication using log-structured merge trees | |
| CN108984420B (en) | Managing multiple namespaces in non-volatile memory (NVM) | |
| US11232073B2 (en) | Method and apparatus for file compaction in key-value store system | |
| CN103080910B (en) | Storage System | |
| JP5996088B2 (en) | Cryptographic hash database | |
| US8484427B1 (en) | System and method for efficient backup using hashes | |
| US10303363B2 (en) | System and method for data storage using log-structured merge trees | |
| US10678654B2 (en) | Systems and methods for data backup using data binning and deduplication | |
| US11093454B2 (en) | Speeding deduplication using a most wanted digest cache | |
| WO2020061398A1 (en) | Efficient memory footprint in deduplicated system storing with content based addressing | |
| CN105683898A (en) | Group-related hash table organization for efficient storage and retrieval of data in storage systems | |
| AU2010200866B1 (en) | Data reduction indexing | |
| CN111143285A (en) | Small file storage file system and small file processing method | |
| US10007436B2 (en) | Storage control apparatus and control method of storage control apparatus | |
| US11016884B2 (en) | Virtual block redirection clean-up | |
| US20200019539A1 (en) | Efficient and light-weight indexing for massive blob/objects | |
| US12164480B2 (en) | Optimizing file system defrag for deduplicated block storage | |
| TWI900800B (en) | Key-value persistent storage device and method for two-level indexing therefor | |
| CN119739329A (en) | Computing system, data processing method and related equipment | |
| CN120123549A (en) | Data processing device, method, apparatus and computer-readable storage medium | |
| WO2023041141A1 (en) | Deduplication using cache eviction for strong and weak hashes |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| AS | Assignment |
Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PATWARDHAN, KEDAR SHRIKRISHNA;RAMAKRISHNAN, NITHYA;REEL/FRAME:058136/0728 Effective date: 20211020 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |