US20080155229A1 - System and method for generating a cache-aware bloom filter - Google Patents
System and method for generating a cache-aware bloom filter Download PDFInfo
- Publication number
- US20080155229A1 US20080155229A1 US11/614,790 US61479006A US2008155229A1 US 20080155229 A1 US20080155229 A1 US 20080155229A1 US 61479006 A US61479006 A US 61479006A US 2008155229 A1 US2008155229 A1 US 2008155229A1
- Authority
- US
- United States
- Prior art keywords
- cache
- bloom filter
- aware
- size
- item
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims description 15
- 230000015654 memory Effects 0.000 claims description 26
- 238000003780 insertion Methods 0.000 abstract description 9
- 230000037431 insertion Effects 0.000 abstract description 9
- 238000012545 processing Methods 0.000 description 7
- 230000011218 segmentation Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
Definitions
- the present invention generally relates to data structures and in particular to Bloom filters. More specifically, the present invention relates to a Bloom filter that minimizes cache faults when accessing items encoded in the Bloom filter.
- a Bloom filter is a space-efficient probabilistic data structure used to test whether an element is a member of a set. This member test can yield false positives but not false negatives. The more elements that are added to the set contained in the Bloom filter, the larger the probability of false positives. Bloom filters have a strong space advantage over other data structures, such as self-balancing search trees, tries, hash tables, or simple arrays or linked lists of the entries.
- a Bloom filter is an approximate encoding of a set of items or keys using a bit vector of b bits. During encoding, the item is hashed to a number between 1 to b and the corresponding bit in the bit vector is set. To check if an item is a member of the set, the item is hashed and the status of the bit is checked. If the bit is not set, then the item is definitely not in the set. If the bit is set, then either the item is in the set or the hash value of this item collided with the hash value of some other item that is in the set. Because of hash collisions, a Bloom filter can produce false positives (the item is reported as in the set, but it is not), but it never produces false negatives (the item is in the set, but not reported).
- Conventional Bloom filters have control points comprising the number of items in the input (n), the amount of memory (b), the number of hash functions (k), and the probability of a false positive (i.e., the false positive rate or fpr). Fixing the size of the input allows the choice of two of the other control point parameters. Memory and the number of hash functions are related. If the number of hashes is fixed and memory is increased, the false positive rate continually decreases. However, if the memory is fixed and the number of hash functions is increased, the false positive rate exhibits a minimum when an expected density (i.e., the percentage of bits set to 1) for the conventional Bloom filter is approximately 50%.
- an expected density i.e., the percentage of bits set to 1
- a conventional Bloom filter is built and then populated with a set of items or keys.
- a user has to know approximately how many keys will populate the conventional Bloom filter to know how much memory to allocate to the conventional Bloom filter.
- the number of keys is not known prior to building the conventional Bloom filter. Consequently, a user is forced to overestimate the number of keys anticipated for the conventional Bloom filter, leading to inefficient use of memory. Furthermore, inefficient use of memory may lead to a false positive rate that is less than optimum.
- the set of bits may be widely distributed throughout the Bloom filter and located on different pages in the memory.
- Each bit accessed by the query may require a different page; each page accessed requires a cache fault.
- Cache faults are expensive in terms of processing time.
- the present invention satisfies this need, and presents a system, a service, a computer program product, and an associated method (collectively referred to herein as “the system” or “the present system”) for generating a cache-aware Bloom filter.
- the present system segments a bit vector of the cache-aware Bloom filter into fixed-size blocks.
- the present system further hashes an item to be inserted into the cache-aware Bloom filter to identify one of the fixed-size blocks as a selected block for receiving the item and hashes the item k times to generate k hashed values for encoding the item for insertion in the cache-aware Bloom filter in the selected block.
- the present system sets bits within the selected block with addresses corresponding to the k hashed values such that accessing the item in the cache-aware Bloom filter requires accessing only the selected block to check the k hashed values.
- the size of the fixed-size block corresponds to a cache-line size of an associated computer architecture on which the cache-aware Bloom filter is installed. In one embodiment, the size of the fixed-size block is 128 bytes. In another embodiment, the size of the fixed-size block is 256 bytes.
- the block size can be determined by the cache size at any level of the memory hierarchy depending upon how large the Bloom filter is and where it is stored.
- the block size could be any small multiple of the following:
- FIG. 1 is a schematic illustration of an exemplary operating environment in which a cache-aware Bloom filter system of the present invention can be used;
- FIG. 2 is a block diagram of the high-level architecture of the cache-aware Bloom filter system of FIG. 1 ;
- FIG. 3 is a diagram of an exemplary bit vector of a cache-aware Bloom filter system of FIGS. 1 and 2 ;
- FIG. 4 is a process flow chart illustrating a method of operation of the cache-aware Bloom filter system of FIGS. 1 and 2 in generating a cache-aware Bloom filter;
- FIG. 5 is a process flow chart illustrating a method of operation of the cache-aware Bloom filter system of FIGS. 1 and 2 in querying a cache-aware Bloom filter.
- FIG. 1 portrays an exemplary overall environment in which a system, a computer program product, and an associated method (the cache-aware Bloom filter system 10 or the “system 10 ”) for generating and using a cache-aware Bloom filter according to the present invention may be used.
- System 10 comprises a software programming code or a computer program product that is typically embedded within, or installed on a server 15 .
- system 10 can be saved on a suitable storage medium such as a diskette, a CD, a hard drive, or like devices.
- System 10 can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements.
- system 10 is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
- system 10 can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
- a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
- the medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
- Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
- Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.
- a data processing system suitable for storing and/or executing program code includes at least one processor coupled directly or indirectly to memory elements through a system bus.
- the memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code to reduce the number of times code is retrieved from bulk storage during execution.
- I/O devices including but not limited to keyboards, displays, pointing devices, etc.
- I/O controllers can be coupled to the system either directly or through intervening I/O controllers.
- Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks.
- Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.
- a database management system 100 comprises a database (dB) 20 and system 10 .
- Users such as remote Internet users, are represented by a variety of computers such as computers 25 , 30 , 35 , and can access the host server 15 through a network 40 .
- Computers 25 , 30 , 35 access system 10 to determine whether an element is a member of a set stored in system 10 .
- System 10 returns a negative if the element is not a member of the set. System 10 returns a positive if the element is in the set. System 10 may return a false positive if the element is not in the set. System 10 does not return false negatives. While described in terms of the database management system 100 , it should be clear that system 10 is applicable as well to, for example, any implementation in which a Bloom filter may be used.
- system 10 Compared to a conventional Bloom filter, system 10 reduces L1 or L2 cache faults incurred when accessing an item inserted in a cache-aware Bloom filter. System 10 achieves reduced cache faults by setting the bits for one entry in a small range of bit locations, typically within one cache line.
- FIG. 2 illustrates a high-level hierarchy of system 10 .
- System 10 comprises a build module 205 and a use module 210 .
- the build module 205 generates the cache-aware Bloom filter 215 and populates the cache-aware Bloom filter 215 using input items 220 .
- the build module 205 comprises a cardinality estimator 225 , a filter allocation module 230 , a block segmentation module 235 , and an insertion module 240 .
- the insertion module 240 comprises a block selection module 245 and a bit set module 250 .
- the use module 210 provides query access by a user to the cache-aware Bloom filter 215 .
- the use module 210 comprises a Bloom filter query module 255 and probe module 260 .
- the probe module 260 comprises a block selection module 265 and bit test module 270 .
- FIG. 3 illustrates a block diagram of the cache-aware Bloom filter 215 .
- the cache-aware Bloom filter 215 comprises a bit vector 305 .
- the block segmentation module 230 segments the bit vector 305 into fixed-size cache-aligned blocks such as a block 1 , 310 , a block 2 , 315 , a block 3 , 320 , through block n, 325 , collectively referenced as blocks 330 .
- a block i, 335 represents in general any one of the blocks 330 .
- FIG. 4 illustrates a method 400 of system 10 in generating the cache-aware Bloom filter 215 .
- the cardinality estimator 225 estimates a cardinality, n i , for the input items 220 based on an allowable false positive rate, f (step 405 ).
- the allocation module 230 allocates memory to the cache-aware Bloom filter 215 and generates the bit vector 305 for the cache-aware Bloom filter 215 (step 410 ).
- the block segmentation module 230 segments the bit vector 305 into blocks 330 (step 415 ).
- the blocks 330 are fixed-sized, cache-aligned blocks; in one embodiment, the size of each of the blocks 330 corresponds to the size of a single cache line.
- the block segmentation module 235 segments the bit vector 305 into blocks 330 of size 128 bytes, or 1024 bits. Modern computer architectures typically have a cache-line size of 128 bytes.
- the block segmentation module 235 segments the bit vector 305 into blocks 330 of size 256 bytes for a computer architecture with a cache-line size of 256 bytes.
- the block segmentation module 235 can segment the bit vector 305 into blocks 330 of any desired size.
- the insertion module 240 selects an item from the input items 220 for insertion into the cache-aware Bloom filter 215 (step 420 ).
- the block selection module 245 hashes the selected item to identify the block i, 335 , in which to insert the selected item (step 425 ).
- the block selection module 245 selects the identified block i, 335 (step 430 ).
- the bit set module 250 hashes the selected item k times and the corresponding bits are set within the block i, 335 (step 435 ).
- the insertion module 240 determines whether additional items in the input items 220 remain for processing (decision step 440 ). If no, the insertion module 240 exits method 400 (step 445 ). Otherwise, the insertion module 240 returns to step 420 and repeats steps 420 through 440 until no additional items in the input items 220 remain for processing.
- Each of the blocks 330 acts as a mini-Bloom filter. Consequently, for each item queried in the cache-aware Bloom filter 215 , system 10 reduces the potential cache fault from k to 1, compared to a conventional Bloom filter.
- the fraction of computing time spent waiting for memory to be accessed has been increasing for the past several years and is expected to continue to increase. Therefore, any significant reduction in data cache misses will improve the processing time of an entire algorithm.
- Dividing the cache-aware Bloom filter 215 in the manner described by method 400 introduces a bias that increases the false positive rate.
- the query module 255 receives a query for an item (step 505 ).
- the block selection module 265 hashes the queried item to identify the block i, 335 , in which to search for the selected item (step 525 ).
- the bit test module 270 hashes the selected item k times and checks if the corresponding bits are set within the block i, 335 (step 535 ). If all k bits are set at step 540 , the bit test module 270 returns a positive result (i.e., the queried item might be in the encoded items) (step 545 ). Otherwise, it returns a negative result (i.e., the queried item is definitely not in the encoded items) (step 550 ).
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
A cache-aware Bloom filter system segments a bit vector of a cache-aware Bloom filter into fixed-size blocks. The system hashes an item to be inserted into the cache-aware Bloom filter to identify one of the fixed-size blocks as a selected block for receiving the item and hashes the item k times to generate k hashed values for encoding the item for insertion in the in the selected block. The system sets bits within the selected block with addresses corresponding to the k hashed values such that accessing the item in the cache-aware Bloom filter requires accessing only the selected block to check the k hashed values. The size of the fixed-size block corresponds to a cache-line size of an associated computer architecture on which the cache-aware Bloom filter is installed.
Description
- The present application relates to co-pending application titled “System and Method for Generating and Using a Dynamic Bloom Filter,” Serial number ______, which is filed concurrently herewith, and which is incorporated herein by reference in its entirety.
- The present invention generally relates to data structures and in particular to Bloom filters. More specifically, the present invention relates to a Bloom filter that minimizes cache faults when accessing items encoded in the Bloom filter.
- A Bloom filter is a space-efficient probabilistic data structure used to test whether an element is a member of a set. This member test can yield false positives but not false negatives. The more elements that are added to the set contained in the Bloom filter, the larger the probability of false positives. Bloom filters have a strong space advantage over other data structures, such as self-balancing search trees, tries, hash tables, or simple arrays or linked lists of the entries.
- A Bloom filter is an approximate encoding of a set of items or keys using a bit vector of b bits. During encoding, the item is hashed to a number between 1 to b and the corresponding bit in the bit vector is set. To check if an item is a member of the set, the item is hashed and the status of the bit is checked. If the bit is not set, then the item is definitely not in the set. If the bit is set, then either the item is in the set or the hash value of this item collided with the hash value of some other item that is in the set. Because of hash collisions, a Bloom filter can produce false positives (the item is reported as in the set, but it is not), but it never produces false negatives (the item is in the set, but not reported).
- Conventional approaches improve the effectiveness of a Bloom filter by hashing each item several times with independent hash functions. For example, k hashes are used. To encode an item x, the k bits in the bit vector that correspond to hi(x) for 1≦i≦k are set. (The same bit may be picked any number of times). To check if item y is a member of the set, item y is hashed k times using the same hash functions. The bit corresponding to hi(x) is examined to determine whether it is set for all 1≦i≦k. If any of the k bits are not set, then y cannot be a member of the set; otherwise, all k bits are set and item y is either in the set or a false positive.
- Conventional Bloom filters have control points comprising the number of items in the input (n), the amount of memory (b), the number of hash functions (k), and the probability of a false positive (i.e., the false positive rate or fpr). Fixing the size of the input allows the choice of two of the other control point parameters. Memory and the number of hash functions are related. If the number of hashes is fixed and memory is increased, the false positive rate continually decreases. However, if the memory is fixed and the number of hash functions is increased, the false positive rate exhibits a minimum when an expected density (i.e., the percentage of bits set to 1) for the conventional Bloom filter is approximately 50%.
- Although conventional Bloom filter technology has proven to be useful, it would be desirable to present additional improvements. A conventional Bloom filter is built and then populated with a set of items or keys. To build a conventional Bloom filter, a user has to know approximately how many keys will populate the conventional Bloom filter to know how much memory to allocate to the conventional Bloom filter. However, in many applications the number of keys is not known prior to building the conventional Bloom filter. Consequently, a user is forced to overestimate the number of keys anticipated for the conventional Bloom filter, leading to inefficient use of memory. Furthermore, inefficient use of memory may lead to a false positive rate that is less than optimum.
- However, in a large Bloom filter, the set of bits may be widely distributed throughout the Bloom filter and located on different pages in the memory. Each bit accessed by the query may require a different page; each page accessed requires a cache fault. Cache faults are expensive in terms of processing time.
- What is therefore needed is a system, a computer program product, and an associated method for generating a cache-aware Bloom filter that minimizes cache faults by mapping keys to bits such that bits for a key are co-located on the same memory page. The need for such a solution has heretofore remained unsatisfied.
- The present invention satisfies this need, and presents a system, a service, a computer program product, and an associated method (collectively referred to herein as “the system” or “the present system”) for generating a cache-aware Bloom filter.
- The present system segments a bit vector of the cache-aware Bloom filter into fixed-size blocks. The present system further hashes an item to be inserted into the cache-aware Bloom filter to identify one of the fixed-size blocks as a selected block for receiving the item and hashes the item k times to generate k hashed values for encoding the item for insertion in the cache-aware Bloom filter in the selected block. The present system sets bits within the selected block with addresses corresponding to the k hashed values such that accessing the item in the cache-aware Bloom filter requires accessing only the selected block to check the k hashed values.
- The size of the fixed-size block corresponds to a cache-line size of an associated computer architecture on which the cache-aware Bloom filter is installed. In one embodiment, the size of the fixed-size block is 128 bytes. In another embodiment, the size of the fixed-size block is 256 bytes.
- It is to be understood that the block size can be determined by the cache size at any level of the memory hierarchy depending upon how large the Bloom filter is and where it is stored. For example, the block size could be any small multiple of the following:
- a) the register size of the cpu;
- b) the L1 cache width of the memory subsystem;
- c) the L2 cache width of the memory subsystem;
- d) the L3 cache width of the memory subsystem;
- e) the local memory size of a cell processor;
- f) the disk block size;
- g) the file-system or database buffer size; or
- h) the network transfer unit.
- The various features of the present invention and the manner of attaining them will be described in greater detail with reference to the following description, claims, and drawings, wherein reference numerals are reused, where appropriate, to indicate a correspondence between the referenced items, and wherein:
-
FIG. 1 is a schematic illustration of an exemplary operating environment in which a cache-aware Bloom filter system of the present invention can be used; -
FIG. 2 is a block diagram of the high-level architecture of the cache-aware Bloom filter system ofFIG. 1 ; -
FIG. 3 is a diagram of an exemplary bit vector of a cache-aware Bloom filter system ofFIGS. 1 and 2 ; -
FIG. 4 is a process flow chart illustrating a method of operation of the cache-aware Bloom filter system ofFIGS. 1 and 2 in generating a cache-aware Bloom filter; and -
FIG. 5 is a process flow chart illustrating a method of operation of the cache-aware Bloom filter system ofFIGS. 1 and 2 in querying a cache-aware Bloom filter. -
FIG. 1 portrays an exemplary overall environment in which a system, a computer program product, and an associated method (the cache-awareBloom filter system 10 or the “system 10”) for generating and using a cache-aware Bloom filter according to the present invention may be used.System 10 comprises a software programming code or a computer program product that is typically embedded within, or installed on aserver 15. Alternatively,system 10 can be saved on a suitable storage medium such as a diskette, a CD, a hard drive, or like devices. -
System 10 can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In one embodiment,system 10 is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. - Furthermore,
system 10 can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. - The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.
- A data processing system suitable for storing and/or executing program code includes at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code to reduce the number of times code is retrieved from bulk storage during execution.
- Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
- Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.
- In an exemplary use of
system 10, adatabase management system 100 comprises a database (dB) 20 andsystem 10. Users, such as remote Internet users, are represented by a variety of computers such ascomputers host server 15 through anetwork 40.Computers access system 10 to determine whether an element is a member of a set stored insystem 10. -
System 10 returns a negative if the element is not a member of the set.System 10 returns a positive if the element is in the set.System 10 may return a false positive if the element is not in the set.System 10 does not return false negatives. While described in terms of thedatabase management system 100, it should be clear thatsystem 10 is applicable as well to, for example, any implementation in which a Bloom filter may be used. - Compared to a conventional Bloom filter,
system 10 reduces L1 or L2 cache faults incurred when accessing an item inserted in a cache-aware Bloom filter.System 10 achieves reduced cache faults by setting the bits for one entry in a small range of bit locations, typically within one cache line. -
FIG. 2 illustrates a high-level hierarchy ofsystem 10.System 10 comprises abuild module 205 and ause module 210. Thebuild module 205 generates the cache-aware Bloom filter 215 and populates the cache-aware Bloom filter 215 usinginput items 220. Thebuild module 205 comprises acardinality estimator 225, afilter allocation module 230, ablock segmentation module 235, and aninsertion module 240. Theinsertion module 240 comprises ablock selection module 245 and a bit setmodule 250. Theuse module 210 provides query access by a user to the cache-aware Bloom filter 215. Theuse module 210 comprises a Bloomfilter query module 255 andprobe module 260. Theprobe module 260 comprises ablock selection module 265 andbit test module 270. -
FIG. 3 illustrates a block diagram of the cache-aware Bloom filter 215. The cache-aware Bloom filter 215 comprises abit vector 305. Theblock segmentation module 230 segments thebit vector 305 into fixed-size cache-aligned blocks such as ablock block block blocks 330. -
FIG. 4 illustrates amethod 400 ofsystem 10 in generating the cache-aware Bloom filter 215. Thecardinality estimator 225 estimates a cardinality, ni, for theinput items 220 based on an allowable false positive rate, f (step 405). Theallocation module 230 allocates memory to the cache-aware Bloom filter 215 and generates thebit vector 305 for the cache-aware Bloom filter 215 (step 410). Theblock segmentation module 230 segments thebit vector 305 into blocks 330 (step 415). - The
blocks 330 are fixed-sized, cache-aligned blocks; in one embodiment, the size of each of theblocks 330 corresponds to the size of a single cache line. In another embodiment, theblock segmentation module 235 segments thebit vector 305 intoblocks 330 of size 128 bytes, or 1024 bits. Modern computer architectures typically have a cache-line size of 128 bytes. In another embodiment, theblock segmentation module 235 segments thebit vector 305 intoblocks 330 of size 256 bytes for a computer architecture with a cache-line size of 256 bytes. Theblock segmentation module 235 can segment thebit vector 305 intoblocks 330 of any desired size. - The
insertion module 240 selects an item from theinput items 220 for insertion into the cache-aware Bloom filter 215 (step 420). Theblock selection module 245 hashes the selected item to identify the block i, 335, in which to insert the selected item (step 425). Theblock selection module 245 selects the identified block i, 335 (step 430). The bit setmodule 250 hashes the selected item k times and the corresponding bits are set within the block i, 335 (step 435). Theinsertion module 240 determines whether additional items in theinput items 220 remain for processing (decision step 440). If no, theinsertion module 240 exits method 400 (step 445). Otherwise, theinsertion module 240 returns to step 420 and repeatssteps 420 through 440 until no additional items in theinput items 220 remain for processing. - Each of the
blocks 330 acts as a mini-Bloom filter. Consequently, for each item queried in the cache-aware Bloom filter 215,system 10 reduces the potential cache fault from k to 1, compared to a conventional Bloom filter. The fraction of computing time spent waiting for memory to be accessed has been increasing for the past several years and is expected to continue to increase. Therefore, any significant reduction in data cache misses will improve the processing time of an entire algorithm. - Dividing the cache-
aware Bloom filter 215 in the manner described bymethod 400 introduces a bias that increases the false positive rate. Some of theblocks 330 may have significantly more entries than others. For example, if 1 million items are encoded in 11627 blocks with 86 entries per block (typical numbers for 1 K bit block size and false positive rate= 1/256), the block i, 335, with the maximum number of entries is expected to have approximately 123 entries (derived empirically), or about 45% more entries than average. - This increase in the false positive rate depends on the block size; for smaller blocks 330 (less than 128 bytes), the effect is more pronounced. For a block size of 1 K bits, the increase in the false positive rate is modest, and can be compensated for by a small increase in the allocated memory (approximately 2%).
- Referring to
FIG. 5 , it illustratesmethod 500 for querying a cache-aware Bloom filter of theuse module 210. Thequery module 255 receives a query for an item (step 505). Theblock selection module 265 hashes the queried item to identify the block i, 335, in which to search for the selected item (step 525). Thebit test module 270 hashes the selected item k times and checks if the corresponding bits are set within the block i, 335 (step 535). If all k bits are set atstep 540, thebit test module 270 returns a positive result (i.e., the queried item might be in the encoded items) (step 545). Otherwise, it returns a negative result (i.e., the queried item is definitely not in the encoded items) (step 550). - It is to be understood that the specific embodiments of the invention that have been described are merely illustrative of certain applications of the principle of the present invention. Numerous modifications may be made to the system and method for generating a cache-aware Bloom filter described herein without departing from the spirit and scope of the present invention.
Claims (2)
1. A processor-implemented method of generating a cache-aware Bloom filter, comprising:
segmenting a bit vector of the cache-aware Bloom filter into a plurality of fixed-size blocks wherein
a block size of each fixed-size block corresponds to a cache-line size of an associated computer architecture on which the cache-aware Bloom filter is installed;
segmenting the bit vector of the cache-aware Bloom filter into a plurality of fixed-size blocks includes determining the block size by the cache size of a memory system based on a size and storage location of the Bloom filter;
segmenting the bit vector of the cache-aware Bloom filter into a plurality of fixed-size blocks includes compensating for a bias that increases a false positive rate by increasing a memory in order to compensate for an increase in the false positive rate until the false positive rate is reduced to an allowable false positive rate;
hashing an item to be inserted into the cache-aware Bloom filter to identify one of the fixed-size blocks as a selected block for receiving the item;
hashing the item k times to generate k hashed values for encoding the item in order to insert the encoded item in the cache-aware Bloom filter in the selected block; and
setting a plurality of bits within the selected block with addresses corresponding to the k hashed values so that accessing the item in the cache-aware Bloom filter requires accessing only the selected block to check the k hashed values.
2-18. (canceled)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/614,790 US20080155229A1 (en) | 2006-12-21 | 2006-12-21 | System and method for generating a cache-aware bloom filter |
US12/134,125 US8032732B2 (en) | 2006-12-21 | 2008-06-05 | System and method for generating a cache-aware bloom filter |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/614,790 US20080155229A1 (en) | 2006-12-21 | 2006-12-21 | System and method for generating a cache-aware bloom filter |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/134,125 Continuation US8032732B2 (en) | 2006-12-21 | 2008-06-05 | System and method for generating a cache-aware bloom filter |
Publications (1)
Publication Number | Publication Date |
---|---|
US20080155229A1 true US20080155229A1 (en) | 2008-06-26 |
Family
ID=39544613
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/614,790 Abandoned US20080155229A1 (en) | 2006-12-21 | 2006-12-21 | System and method for generating a cache-aware bloom filter |
US12/134,125 Expired - Fee Related US8032732B2 (en) | 2006-12-21 | 2008-06-05 | System and method for generating a cache-aware bloom filter |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/134,125 Expired - Fee Related US8032732B2 (en) | 2006-12-21 | 2008-06-05 | System and method for generating a cache-aware bloom filter |
Country Status (1)
Country | Link |
---|---|
US (2) | US20080155229A1 (en) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080154852A1 (en) * | 2006-12-21 | 2008-06-26 | Kevin Scott Beyer | System and method for generating and using a dynamic bloom filter |
US20080306954A1 (en) * | 2007-06-07 | 2008-12-11 | Hornqvist John M | Methods and systems for managing permissions data |
US20090182726A1 (en) * | 2008-01-15 | 2009-07-16 | Cheuksan Edward Wang | Bloom Filter for Storing File Access History |
US20100082648A1 (en) * | 2008-09-19 | 2010-04-01 | Oracle International Corporation | Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters |
US20100122026A1 (en) * | 2008-09-19 | 2010-05-13 | Oracle International Corporation | Selectively reading data from cache and primary storage |
US8370460B1 (en) | 2012-01-10 | 2013-02-05 | Edgecast Networks, Inc. | Optimizing multi-hit caching for long tail content |
US20130138894A1 (en) * | 2011-11-30 | 2013-05-30 | Gabriel H. Loh | Hardware filter for tracking block presence in large caches |
US20130326154A1 (en) * | 2012-05-31 | 2013-12-05 | Samsung Electronics Co., Ltd. | Cache system optimized for cache miss detection |
US20140280249A1 (en) | 2013-03-14 | 2014-09-18 | Oracle International Corporation | Predicate offload of large objects |
US8868831B2 (en) | 2009-09-14 | 2014-10-21 | Oracle International Corporation | Caching data between a database server and a storage system |
US9274967B2 (en) * | 2013-08-07 | 2016-03-01 | Nimble Storage, Inc. | FIFO cache simulation using a bloom filter ring |
US20160110292A1 (en) * | 2014-10-21 | 2016-04-21 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US9519614B2 (en) | 2012-01-10 | 2016-12-13 | Verizon Digital Media Services Inc. | Multi-layer multi-hit caching for long tail content |
US9798655B2 (en) | 2013-09-20 | 2017-10-24 | Oracle International Corporation | Managing a cache on storage devices supporting compression |
KR20180094469A (en) * | 2017-02-15 | 2018-08-23 | 삼성전자주식회사 | Hybrid memory module and operating method thereof |
US10229161B2 (en) | 2013-09-20 | 2019-03-12 | Oracle International Corporation | Automatic caching of scan and random access data in computing systems |
US10331573B2 (en) | 2016-11-04 | 2019-06-25 | Oracle International Corporation | Detection of avoidable cache thrashing for OLTP and DW workloads |
US10402337B2 (en) * | 2017-08-03 | 2019-09-03 | Micron Technology, Inc. | Cache filter |
US10528590B2 (en) | 2014-09-26 | 2020-01-07 | Oracle International Corporation | Optimizing a query with extrema function using in-memory data summaries on the storage server |
US10642837B2 (en) | 2013-03-15 | 2020-05-05 | Oracle International Corporation | Relocating derived cache during data rebalance to maintain application performance |
EP3683696A1 (en) * | 2019-01-16 | 2020-07-22 | Sqream Technologies Ltd | System and method of bloom filter for big data |
US10990596B2 (en) | 2019-06-14 | 2021-04-27 | Oracle International Corporation | Non-disruptive referencing of special purpose operators for database management systems |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
US11157478B2 (en) | 2018-12-28 | 2021-10-26 | Oracle International Corporation | Technique of comprehensively support autonomous JSON document object (AJD) cloud service |
US11200234B2 (en) | 2019-06-14 | 2021-12-14 | Oracle International Corporation | Non-disruptive dynamic ad-hoc database catalog services |
US11210280B2 (en) * | 2019-06-04 | 2021-12-28 | Alibaba Group Holding Limited | Systems and methods for fast bloom filter operations |
US11435926B2 (en) * | 2020-06-29 | 2022-09-06 | EMC IP Holding Company LLC | Method, device, and computer program product for managing storage system |
JP2023511743A (en) * | 2020-01-30 | 2023-03-22 | セールスフォース インコーポレイテッド | Reducing demands using probabilistic data structures |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8069304B2 (en) * | 2006-09-08 | 2011-11-29 | Intel Corporation | Determining the presence of a pre-specified string in a message |
US8612423B2 (en) * | 2010-10-29 | 2013-12-17 | Microsoft Corporation | Search cache for document search |
CN103299295A (en) * | 2010-12-20 | 2013-09-11 | 瑞典爱立信有限公司 | Searching in peer to peer networks |
US8626781B2 (en) | 2010-12-29 | 2014-01-07 | Microsoft Corporation | Priority hash index |
US9740714B2 (en) | 2014-02-06 | 2017-08-22 | International Business Machines Corporation | Multilevel filters for cache-efficient access |
US9940356B2 (en) | 2014-07-31 | 2018-04-10 | International Business Machines Corporation | Efficient join-filters for parallel processing |
WO2020106971A1 (en) * | 2018-11-21 | 2020-05-28 | The Salk Institute For Biological Studies | Systems and methods for enhanced novelty detection |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366994B1 (en) * | 1999-06-22 | 2002-04-02 | Sun Microsystems, Inc. | Cache aware memory allocation |
US6370622B1 (en) * | 1998-11-20 | 2002-04-09 | Massachusetts Institute Of Technology | Method and apparatus for curious and column caching |
US6567815B1 (en) * | 2000-08-01 | 2003-05-20 | International Business Machines Corporation | Technique of clustering and compaction of binary trees |
US20030208665A1 (en) * | 2002-05-01 | 2003-11-06 | Jih-Kwon Peir | Reducing data speculation penalty with early cache hit/miss prediction |
US20060161607A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Method and structure for cache aware transposition via rectangular subsections |
US20060294311A1 (en) * | 2005-06-24 | 2006-12-28 | Yahoo! Inc. | Dynamic bloom filter for caching query results |
US20070115986A1 (en) * | 2005-11-01 | 2007-05-24 | Udaya Shankara | Method to perform exact string match in the data plane of a network processor |
US20070136331A1 (en) * | 2005-11-28 | 2007-06-14 | Nec Laboratories America | Storage-efficient and collision-free hash-based packet processing architecture and method |
US20080147714A1 (en) * | 2006-12-19 | 2008-06-19 | Mauricio Breternitz | Efficient bloom filter |
US20080209133A1 (en) * | 2007-02-22 | 2008-08-28 | Arm Limited | Managing cache coherency in a data processing apparatus |
US20080256094A1 (en) * | 2007-04-12 | 2008-10-16 | Cisco Technology, Inc. | Enhanced bloom filters |
US20080313132A1 (en) * | 2007-06-15 | 2008-12-18 | Fang Hao | High accuracy bloom filter using partitioned hashing |
US7487317B1 (en) * | 2005-11-03 | 2009-02-03 | Sun Microsystems, Inc. | Cache-aware scheduling for a chip multithreading processor |
-
2006
- 2006-12-21 US US11/614,790 patent/US20080155229A1/en not_active Abandoned
-
2008
- 2008-06-05 US US12/134,125 patent/US8032732B2/en not_active Expired - Fee Related
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370622B1 (en) * | 1998-11-20 | 2002-04-09 | Massachusetts Institute Of Technology | Method and apparatus for curious and column caching |
US6366994B1 (en) * | 1999-06-22 | 2002-04-02 | Sun Microsystems, Inc. | Cache aware memory allocation |
US6567815B1 (en) * | 2000-08-01 | 2003-05-20 | International Business Machines Corporation | Technique of clustering and compaction of binary trees |
US20030208665A1 (en) * | 2002-05-01 | 2003-11-06 | Jih-Kwon Peir | Reducing data speculation penalty with early cache hit/miss prediction |
US20060161607A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Method and structure for cache aware transposition via rectangular subsections |
US20060294311A1 (en) * | 2005-06-24 | 2006-12-28 | Yahoo! Inc. | Dynamic bloom filter for caching query results |
US20070115986A1 (en) * | 2005-11-01 | 2007-05-24 | Udaya Shankara | Method to perform exact string match in the data plane of a network processor |
US7487317B1 (en) * | 2005-11-03 | 2009-02-03 | Sun Microsystems, Inc. | Cache-aware scheduling for a chip multithreading processor |
US20070136331A1 (en) * | 2005-11-28 | 2007-06-14 | Nec Laboratories America | Storage-efficient and collision-free hash-based packet processing architecture and method |
US20080147714A1 (en) * | 2006-12-19 | 2008-06-19 | Mauricio Breternitz | Efficient bloom filter |
US20080209133A1 (en) * | 2007-02-22 | 2008-08-28 | Arm Limited | Managing cache coherency in a data processing apparatus |
US20080256094A1 (en) * | 2007-04-12 | 2008-10-16 | Cisco Technology, Inc. | Enhanced bloom filters |
US20080313132A1 (en) * | 2007-06-15 | 2008-12-18 | Fang Hao | High accuracy bloom filter using partitioned hashing |
Cited By (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080243800A1 (en) * | 2006-12-21 | 2008-10-02 | International Business Machines Corporation | System and method for generating and using a dynamic blood filter |
US20080154852A1 (en) * | 2006-12-21 | 2008-06-26 | Kevin Scott Beyer | System and method for generating and using a dynamic bloom filter |
US7937428B2 (en) * | 2006-12-21 | 2011-05-03 | International Business Machines Corporation | System and method for generating and using a dynamic bloom filter |
US8209368B2 (en) * | 2006-12-21 | 2012-06-26 | International Business Machines Corporation | Generating and using a dynamic bloom filter |
US8239351B2 (en) * | 2007-06-07 | 2012-08-07 | Apple Inc. | Methods and systems for managing permissions data |
US20080306954A1 (en) * | 2007-06-07 | 2008-12-11 | Hornqvist John M | Methods and systems for managing permissions data |
US20090182726A1 (en) * | 2008-01-15 | 2009-07-16 | Cheuksan Edward Wang | Bloom Filter for Storing File Access History |
US8849838B2 (en) * | 2008-01-15 | 2014-09-30 | Google Inc. | Bloom filter for storing file access history |
US9361232B2 (en) | 2008-09-19 | 2016-06-07 | Oracle International Corporation | Selectively reading data from cache and primary storage |
US10430338B2 (en) | 2008-09-19 | 2019-10-01 | Oracle International Corporation | Selectively reading data from cache and primary storage based on whether cache is overloaded |
US8521923B2 (en) | 2008-09-19 | 2013-08-27 | Oracle International Corporation | Storage-side storage request management |
US20100122026A1 (en) * | 2008-09-19 | 2010-05-13 | Oracle International Corporation | Selectively reading data from cache and primary storage |
US8825678B2 (en) * | 2008-09-19 | 2014-09-02 | Oracle International Corporation | Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters |
US9336275B2 (en) | 2008-09-19 | 2016-05-10 | Oracle International Corporation | Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters |
US20100082648A1 (en) * | 2008-09-19 | 2010-04-01 | Oracle International Corporation | Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters |
US8874807B2 (en) | 2008-09-19 | 2014-10-28 | Oracle International Corporation | Storage-side storage request management |
US9405694B2 (en) | 2009-09-14 | 2016-08-02 | Oracle Internation Corporation | Caching data between a database server and a storage system |
US8868831B2 (en) | 2009-09-14 | 2014-10-21 | Oracle International Corporation | Caching data between a database server and a storage system |
US20130138894A1 (en) * | 2011-11-30 | 2013-05-30 | Gabriel H. Loh | Hardware filter for tracking block presence in large caches |
US8868843B2 (en) * | 2011-11-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Hardware filter for tracking block presence in large caches |
US8639780B2 (en) | 2012-01-10 | 2014-01-28 | Edgecast Networks, Inc. | Optimizing multi-hit caching for long tail content |
US9848057B2 (en) | 2012-01-10 | 2017-12-19 | Verizon Digital Media Services Inc. | Multi-layer multi-hit caching for long tail content |
US8370460B1 (en) | 2012-01-10 | 2013-02-05 | Edgecast Networks, Inc. | Optimizing multi-hit caching for long tail content |
US9519614B2 (en) | 2012-01-10 | 2016-12-13 | Verizon Digital Media Services Inc. | Multi-layer multi-hit caching for long tail content |
US20130326154A1 (en) * | 2012-05-31 | 2013-12-05 | Samsung Electronics Co., Ltd. | Cache system optimized for cache miss detection |
US8938603B2 (en) * | 2012-05-31 | 2015-01-20 | Samsung Electronics Co., Ltd. | Cache system optimized for cache miss detection |
US20140280249A1 (en) | 2013-03-14 | 2014-09-18 | Oracle International Corporation | Predicate offload of large objects |
US10489365B2 (en) | 2013-03-14 | 2019-11-26 | Oracle International Corporation | Predicate offload of large objects |
US10642837B2 (en) | 2013-03-15 | 2020-05-05 | Oracle International Corporation | Relocating derived cache during data rebalance to maintain application performance |
US9336152B1 (en) | 2013-08-07 | 2016-05-10 | Nimble Storage, Inc. | Method and system for determining FIFO cache size |
US9274967B2 (en) * | 2013-08-07 | 2016-03-01 | Nimble Storage, Inc. | FIFO cache simulation using a bloom filter ring |
US9798655B2 (en) | 2013-09-20 | 2017-10-24 | Oracle International Corporation | Managing a cache on storage devices supporting compression |
US10229161B2 (en) | 2013-09-20 | 2019-03-12 | Oracle International Corporation | Automatic caching of scan and random access data in computing systems |
US10528590B2 (en) | 2014-09-26 | 2020-01-07 | Oracle International Corporation | Optimizing a query with extrema function using in-memory data summaries on the storage server |
US9846642B2 (en) * | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US20160110292A1 (en) * | 2014-10-21 | 2016-04-21 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US11138131B2 (en) | 2016-11-04 | 2021-10-05 | Oracle International Corporation | Detection of avoidable cache thrashing for OLTP and DW workloads |
US10331573B2 (en) | 2016-11-04 | 2019-06-25 | Oracle International Corporation | Detection of avoidable cache thrashing for OLTP and DW workloads |
US10282294B2 (en) * | 2017-02-15 | 2019-05-07 | Samsung Electronics Co., Ltd. | Mitigating DRAM cache metadata access overhead with SRAM metadata cache and bloom filter |
KR20180094469A (en) * | 2017-02-15 | 2018-08-23 | 삼성전자주식회사 | Hybrid memory module and operating method thereof |
TWI744457B (en) * | 2017-02-15 | 2021-11-01 | 南韓商三星電子股份有限公司 | Method for accessing metadata in hybrid memory module and hybrid memory module |
KR102231792B1 (en) | 2017-02-15 | 2021-03-25 | 삼성전자주식회사 | Hybrid memory module and operating method thereof |
US11366762B2 (en) | 2017-08-03 | 2022-06-21 | Micron Technology, Inc. | Cache filter |
US10402337B2 (en) * | 2017-08-03 | 2019-09-03 | Micron Technology, Inc. | Cache filter |
US11853224B2 (en) | 2017-08-03 | 2023-12-26 | Micron Technology, Inc. | Cache filter |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
US11157478B2 (en) | 2018-12-28 | 2021-10-26 | Oracle International Corporation | Technique of comprehensively support autonomous JSON document object (AJD) cloud service |
US11119996B2 (en) * | 2019-01-16 | 2021-09-14 | Sqream Technologies Ltd. | System and method of bloom filter for big data |
EP3683696A1 (en) * | 2019-01-16 | 2020-07-22 | Sqream Technologies Ltd | System and method of bloom filter for big data |
US11210280B2 (en) * | 2019-06-04 | 2021-12-28 | Alibaba Group Holding Limited | Systems and methods for fast bloom filter operations |
US10990596B2 (en) | 2019-06-14 | 2021-04-27 | Oracle International Corporation | Non-disruptive referencing of special purpose operators for database management systems |
US11200234B2 (en) | 2019-06-14 | 2021-12-14 | Oracle International Corporation | Non-disruptive dynamic ad-hoc database catalog services |
JP2023511743A (en) * | 2020-01-30 | 2023-03-22 | セールスフォース インコーポレイテッド | Reducing demands using probabilistic data structures |
JP7450735B2 (en) | 2020-01-30 | 2024-03-15 | セールスフォース インコーポレイテッド | Reducing requirements using probabilistic data structures |
US11435926B2 (en) * | 2020-06-29 | 2022-09-06 | EMC IP Holding Company LLC | Method, device, and computer program product for managing storage system |
Also Published As
Publication number | Publication date |
---|---|
US20080243941A1 (en) | 2008-10-02 |
US8032732B2 (en) | 2011-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8032732B2 (en) | System and method for generating a cache-aware bloom filter | |
US8209368B2 (en) | Generating and using a dynamic bloom filter | |
US9767140B2 (en) | Deduplicating storage with enhanced frequent-block detection | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
US11762828B2 (en) | Cuckoo filters and cuckoo hash tables with biasing, compression, and decoupled logical sparsity | |
US6807607B1 (en) | Cache memory management system and method | |
US8583657B2 (en) | Method and apparatus for using a hash-partitioned index to access a table that is not partitioned or partitioned independently of the hash partitioned index | |
CN110737399B (en) | Method, apparatus and computer program product for managing a storage system | |
CN102171663A (en) | Managing storage of cached content | |
US11113195B2 (en) | Method, device and computer program product for cache-based index mapping and data access | |
US9946660B2 (en) | Memory space management | |
US8225060B2 (en) | Data de-duplication by predicting the locations of sub-blocks within the repository | |
US20130179464A1 (en) | System and method for provenance function window optimization | |
US20060282620A1 (en) | Weighted LRU for associative caches | |
US20060047670A1 (en) | Storage optimization for VARRAY columns | |
US20210286730A1 (en) | Method, electronic device and computer program product for managing cache | |
US11520818B2 (en) | Method, apparatus and computer program product for managing metadata of storage object | |
CN109634983B (en) | Method, apparatus, device and medium for determining recall point of interest information | |
US20040143706A1 (en) | Implementation of an LRU and MRU algorithm in a partitioned cache | |
US11822803B2 (en) | Method, electronic device and computer program product for managing data blocks | |
US11194804B2 (en) | System and method for an index search engine | |
CN111133424B (en) | Open addressed probe barrier | |
US20070219998A1 (en) | Method and system for estimating a first access time of transactions accessing a database object | |
CN113297247B (en) | SQL statement processing method, device, electronic device and storage medium | |
US11829398B2 (en) | Three-dimensional probabilistic data structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BEYER, KEVIN S.;RAJAGOPALAN, SRIDHAR;REEL/FRAME:018889/0619;SIGNING DATES FROM 20061210 TO 20070123 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |