jvm.chisel.db.bloom
Bloom filter: a classic hash-join pre-filter.
Combinational query-time probe against a preloaded bit-vector, plus a fragment that computes the bit-vector with a key inserted. ks is the list of hash multipliers (one per hash function); bits-count (= M, power of two) is the bit-vector width.
bloom-insert-ref
(bloom-insert-ref key bits width bits-count ks)Reference: bit-vector with the hash positions of key set.
bloom-probe-module
(bloom-probe-module {:keys [width bits-count ks name], :or {name "BloomProbe"}})Probe module. opts: {:width w :bits-count M :ks .. :name “BloomProbe”}.
bloom-probe-ref
(bloom-probe-ref key bits width bits-count ks)Reference: true iff every hash position is set in bits.
insert-data
(insert-data key bits width bits-count ks)Hardware fragment: bit-vector with key inserted = bits OR OR_k(1<<h_k).
probe-data
(probe-data key bits width bits-count ks)Hardware fragment: probe key against bit-vector bits. Returns a Bool Data.