System Design: Bloom Filter


Neatly remodeling a hash desk to a probabilistic information construction to commerce accuracy for giant reminiscence features



Hash desk is among the most generally identified and used information buildings. With a sensible selection of hash perform, a hash desk can produce optimum efficiency for insertion, search and deletion queries in fixed time.

The primary downside of the hash desk is potential collisions. To keep away from them, one of many normal strategies consists of rising the hash desk dimension. Whereas this strategy works properly typically, generally we’re nonetheless restricted in utilizing massive reminiscence house.

It’s essential to recall {that a} hash desk at all times gives an accurate response to any question. It would undergo collisions and be sluggish generally but it surely at all times ensures 100% right responses. It seems that in some methods, we don’t at all times must obtain right data to queries. Such a lower in accuracy can be utilized to concentrate on enhancing different features of the system.

On this article, we’ll uncover an progressive information construction referred to as a Bloom filter. In easy phrases, it’s a modified model of a normal hash desk which trades off a small lower in accuracy for reminiscence house features.

Bloom filter

Bloom filter is organised within the type of a boolean array of dimension m. Initially all of its components are marked as 0 (false). Other than that, it’s needed to decide on ok hash capabilities that take objects as enter and map them to the vary [0, m — 1]. Each output worth will later correspond to an array aspect at that index.

For higher outcomes, it is strongly recommended that hash capabilities output values whose distribution is near uniform.

In our instance, we will likely be utilizing a Bloom filter of dimension m = 13 with ok = 3 hash capabilities. Every of these capabilities maps an enter object to the vary [0, 12].


Every time a brand new object must be added, it’s handed by way of ok predefined hash capabilities. For every output hash worth, the corresponding aspect at that index turns into 1 (true).

The “banana” object is added to the Bloom filter. The hash capabilities output values are 6, 2 and 9. Array components at these indexes change to 1.

If an array aspect whose index was outputted from a hash perform has already been set to 1, then it merely stays as 1.

The “apple” object is added to the Bloom filter. Array components at indexes 10, 9 and 4 are assigned to 1. Though the 9-th aspect of array was already assigned to 1, its worth doesn’t change right here.

Principally, the presense of 1 at any array aspect acts as a partial show that a component hashing to the respective array index truly exists within the Bloom filter.


To verify if an object exists, its ok hash values are computed. There could be two potential situations:

If these is at the least one hash worth for which the respective array aspect equals 0, which means that the object doesn’t exist.

Throughout insertion, an object turns into related to a number of array components which might be marked as 1. If an object actually existed within the filter, than all the hash capabilities would deterministically output the identical sequence of indexes pointing to 1. Nevertheless, pointing to an array aspect with 0 clearly signifies that the present object shouldn’t be current within the information construction.

1*GqaIZsZ m0CPcYsDPjAsDw
Checking if the “orange” object is current within the Bloom filter. Since there may be at the least one hash perform (exactly two in our case) outputting an index (7 and 12) of the array whose aspect is the same as 0, which means that “orange” doesn’t exist within the filter.

If for all hash values, the respective array components equal 1, which means that the object most likely exists (not 100%).

This assertion is precisely what makes the Bloom filter a probabilistic information construction. If an object was added earlier than, then throughout a search, the Bloom filter ensures that hash values would be the identical for it, thus the item will likely be discovered.

Checking if the “banana” object is current within the Bloom filter. For the reason that hash capabilities are deterministic, they output precisely the identical array positions that had been used earlier than through the insertion of “banana”. In consequence, “banana” exists within the filter.

However, the Bloom filter can produce a false constructive response when an object doesn’t truly exist however the Bloom filter claims in any other case. This occurs when all hash capabilities for the item return hash values of 1 comparable to different already inserted objects within the filter.

1*Y8WBgya7AOz9PRTVR5 h5A
Instance of a false constructive response. Though “cherry” was not added earlier than, the filter thinks it exists as all the output hash values for “cherry” level to array components with values of 1.

False constructive solutions are inclined to happen when the variety of inserted objects turns into comparatively excessive compared to the scale of the Bloom filter’s array.

Estimation of false constructive errors

It’s potential to estimate the chance of getting a false constructive error, given the Bloom’s filter construction.

Picture adopted by the writer. Supply: Bloom filter | Wikipedia

The complete proof of this components could be discovered on Wikipedia. Based mostly on that expression, we will make a pair of fascinating observations:

  • The FP chance decreases with the rise within the variety of hash hash capabilities ok, improve within the array dimension m, and reduce within the variety of inserted objects n.
Enhance in ok, improve in m or lower in n result in decrease FP fee
  • Earlier than inserting objects into the Bloom filter, we will discover the optimum variety of required hash capabilities ok that can decrease the FP chance if we all know the array dimension m and may estimate the variety of objects n that will likely be inserted within the future.
The optimum variety of hash capabilities ok that minimizes the FP chance

Another choice of lowering FP chance is a mix (AND conjunction) of a number of impartial Bloom filters. A component is in the end thought of to be current within the information construction solely whether it is current in all Bloom filters.


  • Opposite to hash tables, the usual implementation of a Bloom filter doesn’t assist deletion.
  • The chosen variety of hash capabilities ok and array dimension m in the beginning can’t be modified later. If there may be such a necessity, the one method to do it’s to construct one other Bloom filter with new settings by inserting all of the beforehand saved objects.


Based on the web page from Wikipedia, the Bloom filter is broadly utilized in massive methods:

  • Databases like Apache HBase, Apache Cassandra and PostgreSQL use the Bloom filter to verify non-existing rows or columns. This strategy is significantly sooner than utilizing disk lookups.
  • Medium makes use of the Bloom filter to filter out pages which have already been advisable to a person.
  • Google Chrome used the Bloom filter up to now to establish malicious URLs. A URL was thought of protected if the Bloom filter returned a unfavourable response. In any other case, the complete verify was carried out.
Google’s algorithm that was used to verify for malicious URLs. Using the Bloom filter allowed to considerably scale back the variety of extra computationally heavy full checks that will have been required in any other case for a big portion of protected hyperlinks.


On this article, we’ve coated another strategy to setting up hash tables. When a small lower in accuracy could be compromised for extra environment friendly reminiscence utilization, the Bloom filter seems to be a strong resolution in lots of distributed methods.

Various the variety of hash capabilities with the Bloom filter’s dimension permits us to search out essentially the most appropriate steadiness between accuracy and efficiency necessities.


All pictures until in any other case famous are by the writer.


System Design: Bloom Filter was initially revealed in In direction of Information Science on Medium, the place individuals are persevering with the dialog by highlighting and responding to this story.

Supply hyperlink


Please enter your comment!
Please enter your name here