A streaming B-tree is a dictionary that efficiently implements insertions and range queries. We present two cache-oblivious streaming B-trees, the shuttle tree, and the cache-oblivious lookahead array (COLA). For block-transfer size B and on N elements, the shuttle tree im- transfers, which is an asymptotic speedup over traditional B-trees if B ≥ (log N) 1+c/ log log log 2 N for any constant c > 1. transfers, matching the bounds for a (cache-aware) buffered repository tree. A partially deamortized COLA matches these bounds but reduces the worst-case insertion cost to O(logN) if memory size M = Ω(log N). We also present a cache-aware version of the COLA, the lookahead array , which achieves the same bounds as Brodal and Fagerberg's (cache-aware) B ε -tree. We compare our COLA implementation to a traditional B-tree. Our COLA implementation runs 790 times faster for random insertions, 3.1 times slower for insertions of sorted data, and 3.5 times slower for searches.
The cache-oblivious lookahead array (COLA) of Bender et al. REF supports updates in amortized O(log N/B) IOs and queries in O(log N + Z/B) IOs.
Cache-oblivious streaming B-trees
SPAA '07
Computer Science