A bloom filter is a probabilistic data structure primarily intended for simple pattern matching of large sets in very small memory requirements. It operates by hashing an identifier (converting a string or other value into a number), taking a modulo of your field size, and then setting the flag at that coordinate. To perform a match you do the same and just check the flag state. # Types of Bloom Filters ## Bitfield Traditionally the flag was a single bit and the bloom filter in memory was a bit field. But more sophisticated bloom filters have also been developed which use larger in-memory representations. Likewise the hashing step may consist of 2 or more hashing algorithms in order to place a flag in a multi-dimensional field. ## Weighted Uses some kind of numeric representation which is incremented during training. ## Decaying A weighted bloom filter whose elements decay towards zero over time. [[Decaying Bloom Filter for Host Uptime]] # References - https://llimllib.github.io/bloomfilter-tutorial/