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.