To (optimally) support SSTables larger than 143 million keys, we need to support bloom filters larger than 2^31 bits, which java.util.BitSet can't handle directly.
A few options:
- Switch to a BitSet class which supports 2^31 * 64 bits (Lucene's OpenBitSet)
- Partition the java.util.BitSet behind our current BloomFilter
- Straightforward bit partitioning: bit N is in bitset N // 2^31
- Separate equally sized complete bloom filters for member ranges, which can be used independently or OR'd together under memory pressure.
All of these options require new approaches to serialization.