Hash-ordered databases and methods, systems and computer program products for use of a hash-ordered database
First Claim
Patent Images
1. A method of searching a database, the method comprising:
- generating a hash key value based on a plurality of selector values;
selecting an entry in the database having an address corresponding to the hash key value, wherein entries in the database include corresponding hash values;
evaluating the selected entry to determine if the entry in the database corresponds to the plurality of selector values;
incrementing the address corresponding to the hash key value if the selected entry does not correspond to the plurality of selector values;
wherein the selecting, the evaluating and the incrementing are repeated until the hash value included in selected entry has a value which indicates that entries subsequent to the selected entry will not correspond to the plurality of selector values.
4 Assignments
0 Petitions
Accused Products
Abstract
Data structures and methods, systems and computer program products for searching, inserting and/or deleting entries in a database which includes a hash value corresponding to data of the entry and which are stored in a hash-ordered sequence such that a linear search for an entry from an address corresponding to the hash value of the entry will result in the data being located by examining entries in consecutive addresses before an address without an entry is reached are provided. Such methods, systems, computer program products and data structures may be particularly useful for Internet Protocol Security (IPSec) security association databases (SADs).
95 Citations
62 Claims
-
1. A method of searching a database, the method comprising:
-
generating a hash key value based on a plurality of selector values;
selecting an entry in the database having an address corresponding to the hash key value, wherein entries in the database include corresponding hash values;
evaluating the selected entry to determine if the entry in the database corresponds to the plurality of selector values;
incrementing the address corresponding to the hash key value if the selected entry does not correspond to the plurality of selector values;
wherein the selecting, the evaluating and the incrementing are repeated until the hash value included in selected entry has a value which indicates that entries subsequent to the selected entry will not correspond to the plurality of selector values. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method of inserting data for entries into a database, comprising:
-
generating a hash key value based on a plurality of selector values associated with the data for entry into the database; and
incorporating the data and the hash key value as an entry into the database at an address in the database which maintains entries in the database in hash key value sequence such that a linear search for the data from an address corresponding to the hash key value will result in the data being located by examining entries in consecutive addresses in the database before an address in the database without an entry is reached. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A method of deleting data from a database, the method comprising:
-
generating a hash key value based on a plurality of selector values associated with the data for deletion from the database;
locating an entry in the database which includes the data and the hash key value;
deleting the located entry; and
reordering a subset of the entries in the database so as to maintain entries in the database in hash key value sequence such that a linear search for the data from an address corresponding to the hash key value will result in the data being located by examining entries in consecutive addresses in the database before an address in the database without an entry is reached. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. A system searching a database, comprising:
-
means for generating a hash key value based on a plurality of selector values;
means for selecting an entry in the database having an address corresponding to the hash key value, wherein entries in the database include corresponding hash values;
means for evaluating the selected entry to determine if the entry in the database corresponds to the plurality of selector values;
means for incrementing the address corresponding to the hash key value if the selected entry does not correspond to the plurality of selector values;
means for repeatedly selecting, evaluating and incrementing until the selected entry has a null value or the hash value included in selected entry has a value other than the hash key value.
-
-
38. A system for inserting data for entries into a database, comprising:
-
means for generating a hash key value based on a plurality of selector values associated with the data for entry into the database; and
means for incorporating the data and the hash key value as an entry into the database at an address in the database which maintains entries in the database in hash key value sequence such that a linear search for the data from an address corresponding to the hash key value will result in the data being located by examining entries in consecutive addresses in the database before an address in the database without an entry is reached.
-
-
39. A system deleting data from a database, comprising:
-
means for generating a hash key value based on a plurality of selector values associated with the data for deletion from the database;
means for locating an entry in the database which includes the data and the hash key value;
means for deleting the located entry; and
means for reordering a subset of the entries in the database so as to maintain entries in the database in hash key value sequence such that a linear search for the data from an address corresponding to the hash key value will result in the data being located by examining entries in consecutive addresses in the database before an address in the database without an entry is reached.
-
-
40. A computer program product for searching a database, comprising:
-
a computer-readable storage medium having computer-readable program code embodied therein, the computer readable program code comprising;
computer-readable program code which generates a hash key value based on a plurality of selector values;
computer-readable program code which selects an entry in the database having an address corresponding to the hash key value, wherein entries in the database include corresponding hash values;
computer-readable program code which evaluates the selected entry to determine if the entry in the database corresponds to the plurality of selector values;
computer-readable program code which increments the address corresponding to the hash key value if the selected entry does not correspond to the plurality of selector values;
computer-readable program code which repeatedly selects, evaluates and increments until the selected entry has a null value or the hash value included in selected entry has a value other than the hash key value.
-
-
41. A computer program product for inserting data for entries into a database, comprising:
-
a computer-readable storage medium having computer-readable program code embodied therein, the computer readable program code comprising;
computer-readable program code which generates a hash key value based on a plurality of selector values associated with the data for entry into the database; and
computer-readable program code which incorporates the data and the hash key value as an entry into the database at an address in the database which maintains entries in the database in hash key value sequence such that a linear search for the data from an address corresponding to the hash key value will result in the data being located by examining entries in consecutive addresses in the database before an address in the database without an entry is reached.
-
-
42. A computer program product for deleting data from a database, comprising:
-
a computer-readable storage medium having computer-readable program code embodied therein, the computer readable program code comprising;
computer-readable program code which generates a hash key value based on a plurality of selector values associated with the data for deletion from the database;
computer-readable program code which locates an entry in the database which includes the data and the hash key value;
computer-readable program code which deletes the located entry; and
computer-readable program code which reorders a subset of the entries in the database so as to maintain entries in the database in hash key value sequence such that a linear search for the data from an address corresponding to the hash key value will result in the data being located by examining entries in consecutive addresses in the database before an address in the database without an entry is reached.
-
-
43. A data structure comprising:
-
a plurality of data entries, each of the plurality of data entries including a hash value associated with the data and which is generated from a plurality of selector values which uniquely identify the data and having an address associated therewith;
a plurality of null entries having an associated address other than an address in the data structure associated with a data entry;
wherein the address associated with a data entry is based on the hash value of the data entry such that a linear search for the data entry from an address corresponding to the hash value of the data entry will result in the data entry being located by examining entries in consecutive addresses before an address with a null entry is reached. - View Dependent Claims (44, 45, 46, 47, 48, 49, 50)
-
-
51. A system for managing Internet Protocol Security (IPSec) security associations (SAs), comprising:
-
a hash key generator configured to generate hash key values based on modified selectors fields of Internet Protocol (IP) packets, the modified selector fields identifying a SA associated with the packet; and
a SA data structure operably associated with the hash key generator and configured to store SA information and associated hash key values in hash-ordered sequence such that a linear search for a SA from an address of the data structure corresponding to a hash key value generated from the modified selector fields identifying the SA will result in the SA being located by examining SAs at consecutive addresses before an address with a null entry is reached. - View Dependent Claims (52, 53)
-
-
54. A method of searching a database stored in a circular memory, the method comprising:
-
generating a hash key value based on a plurality of selector values;
selecting an entry in the database having an address corresponding to the hash key value, wherein entries in the database include corresponding hash values;
evaluating the selected entry to determine if the entry in the database corresponds to the plurality of selector values;
evaluating most significant bits of a hash value of the selected entry and most significant bits of the hash key value to determine if a wrap condition has occurred;
inverting the most significant bits of the hash value of the selected entry and the most significant bits of the hash key value if a wrap condition has occurred;
comparing the hash key value to the hash value of the selected entry to determine if the hash value of the selected entry is greater than the hash key value; and
incrementing the address corresponding to the hash key value if the selected entry does not correspond to the plurality of selector values and the hash value of the selected entry is greater than the hash key value. - View Dependent Claims (55, 56, 57)
-
-
58. A method of inserting data for entries into a database stored in a circular memory, comprising:
-
generating a hash key value based on a plurality of selector values associated with the data for entry into the database;
selecting an entry in the database having an address corresponding to the hash key value, wherein entries in the database include corresponding hash values;
determining an end of a cluster of database entries by incrementing the address corresponding to the hash key value and selecting the corresponding entry in the database until an entry after the selected entry is empty;
evaluating most significant bits of a hash value of the selected entry and most significant bits of the hash key value to determine if a wrap condition has occurred;
inverting the most significant bits of the hash value of the selected entry and the most significant bits of the hash key value if a wrap condition has occurred;
comparing the hash key value to the hash value of the selected entry to determine if the hash value of the selected entry is greater than the hash key value;
copying the selected entry to an entry immediately after the selected entry if the hash value of the selected entry is greater than the hash key value;
decrementing the address corresponding to the hash key value if the hash value of the selected entry is greater than the hash key value; and
copying the data into an entry immediately after the selected entry if the hash value of the selected entry is greater than the hash key value. - View Dependent Claims (59, 60, 61, 62)
-
Specification