HYBRID HASH TABLES
First Claim
1. A computer-implemented method for inserting a new entry in a hash table system in a data storage system, the method comprising:
- providing the hash table system having a first hash table and a second hash table;
computing a first index for the new entry, the first index corresponding to a first element in the first hash table;
computing a second index for the new entry, the second index corresponding to a second element in the second hash table;
inserting a first entry corresponding to the new entry into the first element in the first hash table; and
when the first hash table reaches a threshold load factor, flushing the first entry from the first hash table,wherein flushing comprises inserting a value associated with the new entry into the second element in the second hash table, and removing the first entry from the first element in the first hash table.
2 Assignments
0 Petitions
Accused Products
Abstract
A hash table system having a first hash table and a second hash table is provided. The first hash table may be in-memory and the second hash table may be on-disk. Inserting an entry to the hash table system comprises inserting the entry into the first hash table, and, when the first hash table reaches a threshold load factor, flushing entries into the second hash table. Flushing the first hash table into the second hash table may comprise sequentially flushing the first hash table segments into corresponding second hash table segments. When looking up a key/value pair corresponding to a selected key in the hash table system, the system checks both the first and second hash tables for values corresponding to the selected key. The first and second hash tables may be divided into hash table segments and collision policies may be implemented within the hash table segments.
125 Citations
43 Claims
-
1. A computer-implemented method for inserting a new entry in a hash table system in a data storage system, the method comprising:
-
providing the hash table system having a first hash table and a second hash table; computing a first index for the new entry, the first index corresponding to a first element in the first hash table; computing a second index for the new entry, the second index corresponding to a second element in the second hash table; inserting a first entry corresponding to the new entry into the first element in the first hash table; and when the first hash table reaches a threshold load factor, flushing the first entry from the first hash table, wherein flushing comprises inserting a value associated with the new entry into the second element in the second hash table, and removing the first entry from the first element in the first hash table. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computer-implemented method for identifying a value associated with a selected key, the method comprising:
-
providing a computer system having a processor, an in-memory hash table, and an on-disk hash table; checking, by the processor, the in-memory hash table for an entry corresponding to the selected key, wherein the entry corresponding to the selected key identifies the value associated with the selected key, and when the entry corresponding to the selected key is not found in the in-memory hash table, checking, by the processor, the on-disk hash table for the entry corresponding to the selected key. - View Dependent Claims (17)
-
-
18. A computer-implemented method for identifying a set of values associated with a selected key, the method comprising:
-
providing a computer system having a processor, an in-memory hash table, and an on-disk hash table; computing, by the processor, a first index for the selected key; selecting first candidate elements from the in-memory hash table using the first index, the first candidate elements having associated first candidate keys; computing, by the processor, a second index for the selected key; selecting second candidate elements from the on-disk hash table using the second index, the second candidate elements having associated second candidate keys; examining, by the processor, the first candidate elements to determine whether a first candidate key matches the selected key, and, when the first candidate key matches the selected key, identifying, as a member of the set of values, a first value associated with a first candidate element that is associated with the first candidate key; and examining, by the processor, the second candidate elements to determine whether a second candidate key matches the selected key, and, when the second candidate key matches the selected key, identifying, as a member of the set of values, a second value associated with a second candidate element that is associated with the second candidate key. - View Dependent Claims (19, 20, 21)
-
-
22. A data storage system comprising:
-
a hash table system comprising a first hash table and a second hash table; an insertion module for inserting a new entry in the hash table system, wherein inserting comprises computing a first index for the new entry, the first index corresponding to a first element in the first hash table; computing a second index for the new entry, the second index corresponding to a second element in the second hash table; inserting a first entry corresponding to the new entry into the first element in the first hash table; and an entry flushing module for flushing the first entry from the first hash table when the first hash table reaches a threshold load factor, wherein flushing comprises inserting a value associated with the new entry into the second element in the second hash table, and removing the first entry from the first element in the first hash table. - View Dependent Claims (23, 24, 25, 26, 27)
-
-
28. A data storage system comprising:
-
a hash table system comprising an in-memory hash table and an on-disk hash table; and an identification module for identifying a value associated with a selected key, wherein identifying comprises checking the in-memory hash table for an entry corresponding to the selected key, wherein the entry corresponding to the selected key identifies the value associated with the selected key, and when the entry corresponding to the selected key is not found in the in-memory hash table, checking the on-disk hash table for the entry corresponding to the selected key.
-
-
29. A data storage system comprising:
-
a hash table system comprising a first hash table and a second hash table; and an identification module for identifying a set of values associated with a selected key, wherein identifying comprises computing a first index for the selected key; selecting first candidate elements from the in-memory hash table using the first index, the first candidate elements having associated first candidate keys; computing a second index for the selected key; selecting second candidate elements from the on-disk hash table using the second index, the second candidate elements having associated second candidate keys; examining the first candidate elements to determine whether a first candidate key matches the selected key, and when the first candidate key matches the selected key, identifying, as a first member of the set of values, a first value associated with a first candidate element that is associated with the first candidate key; and examining the second candidate elements to determine whether a second candidate key matches the selected key, and when the second candidate key matches the selected key, identifying, as a second member of the set of values, a second value associated with a second candidate element that is associated with the second candidate key. - View Dependent Claims (30, 31, 32)
-
-
33. A computer program product comprising a computer usable medium having computer-executable instructions that control a computer to perform a method for inserting a new entry in a hash table system, the method comprising the computer-implemented steps of:
-
providing the hash table system comprising a first hash table and a second hash table; computing a first index for the new entry, the first index corresponding to a first element in the first hash table; computing a second index for the new entry, the second index corresponding to a second element in the second hash table; inserting a first entry corresponding to the new entry into the first element in the first hash table; and when the first hash table reaches a threshold load factor, flushing the first entry from the first hash table, wherein flushing comprises inserting a value associated with the new entry into the second element in the second hash table, and removing the first entry from the first element in the first hash table. - View Dependent Claims (34, 35, 36, 37, 38)
-
-
39. A computer program product comprising a computer usable medium having computer-executable instructions that control a computer to perform a method for identifying a value associated with a selected key, the method comprising the computer-implemented steps of:
-
providing a hash table system comprising an in-memory hash table and an on-disk hash table; checking the in-memory hash table for an entry corresponding to the selected key, wherein the entry corresponding to the selected key identifies the value associated with the selected key, and when the entry corresponding to the selected key is not found in the in-memory hash table, checking the on-disk hash table for the entry corresponding to the selected key.
-
-
40. A computer program product comprising a computer usable medium having computer-executable instructions that control a computer to perform a method for identifying a set of values associated with a selected key, the method comprising the computer-implemented steps of:
-
providing a hash table system comprising an in-memory hash table and an on-disk hash table; computing a first index for the selected key; selecting first candidate elements from the in-memory hash table using the first index, the first candidate elements having associated first candidate keys; computing a second index for the selected key; selecting second candidate elements from the on-disk hash table using the second index, the second candidate elements having associated second candidate keys; examining the first candidate elements to determine whether a first candidate key matches the selected key, and, when the first candidate key matches the selected key, identifying, as a member of the set of values, a first value associated with a first candidate element that is associated with the first candidate key; and examining the second candidate elements to determine whether a second candidate key matches the selected key, and, when the second candidate key matches the selected key, identifying, as a member of the set of values, a second value associated with a second candidate element that is associated with the second candidate key. - View Dependent Claims (41, 42, 43)
-
Specification