Building a Bw-Tree Takes More Than Just Buzz Words [pdf]
db.cs.cmu.edu
db.cs.cmu.edu
The conclusion seems to be that Adaptive Radix Trees [1] outperform all b-tree variants, skiplists and Masstree [2] for all ops except range scans. The claim is more credible if one considers that the authors of this paper are not the authors of [1].
Since ARTs are significantly faster, it would be nice to throw in the benchmarking mix one hash map as well, such as dense_hash_map<>, if only to see what is currently the gap between ordered and unordered containers.
[1] https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=654...
[2] a hybrid trie/B+tree data structure
A Comparison of Adaptive Radix Trees and Hash Tables - Big Data Analytics PDF https://bigdata.uni-saarland.de › ARCD15
I guess I should have polished it up and wrote a paper about it.
If anyone is interested the code is available at https://github.com/d4l3k/skeletondb
The main thing that caused issues was that compaction of logs into the main tree conflicted with appends. This ended up causing a lot of thrashing since the compaction cycle would run a lot more than necessary.
The key point of bw-trees is that once changes have been added to the log, only the last element will change (to point to the next item). Thus, instead of trying to compact the entire log, you can compact everything but the last item to make it conflict free.