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/