Probabilistic M2M Relationships Using Bloom Filters
zacharyvoase.com
zacharyvoase.com
But people tend to make mistakes. When you discover that someone has added a link between Daniel Day-Lewis and Ernest Goes to Jail all you would need to do is delete a row in the movies_people table. But because of potential collisions in the bit arrays you can't safely remove a relationship?
The other substantial issue with the proposed scheme is false positives. In this situation, you have no way to ensure that a given relation is not an accidental match. For that you would again need the relations table.
What's fun about this story is that the author has inadvertently re-discovered the bloom join[2] - he's just missing one of the important steps. Traditionally bloom filters are used for a fast, initial check which is then followed by a full check to remove false positives.
[1]: There are some modifications to bloom filters that support deletion but they're all more complex than bitstrings.
[2]: http://www.databasejournal.com/features/oracle/oracle-bloom-...