#tree #b-tree #map #version

bplustree

Concurrent in-memory B+ Tree featuring optimistic lock coupling

1 unstable release

0.1.0 Oct 7, 2021

#1038 in Concurrency

Download history 70/week @ 2024-07-20 44/week @ 2024-07-27 170/week @ 2024-08-03 154/week @ 2024-08-10 141/week @ 2024-08-17 51/week @ 2024-08-24 12/week @ 2024-08-31 132/week @ 2024-09-07 7/week @ 2024-09-14 361/week @ 2024-09-21 261/week @ 2024-09-28 264/week @ 2024-10-05 77/week @ 2024-10-12 248/week @ 2024-10-19 109/week @ 2024-10-26 72/week @ 2024-11-02

531 downloads per month

MIT/Apache

170KB
3.5K SLoC

BPlusTree

Implementation of a fast in-memory concurrent B+ Tree featuring optimistic lock coupling. The implementation is based on LeanStore with some adaptations from Umbra.

The current API is very basic and more features are supposed to be added in the following versions, it tries to loosely follow the std::collections::BTreeMap API.

Currently it is not heavily optimized but is already faster than some concurrent lock-free implementations. Single threaded performance is generally slower (~ 1.4x) but still comparable to std::collections::BTreeMap with sligthly faster scans due to the B+ Tree topology.

For how to use it refer to the documentation


lib.rs:

Implementation of a fast in-memory concurrent B+ Tree featuring optimistic lock coupling. The implementation is based on LeanStore with some adaptations from Umbra.

The current API is very basic and more features are supposed to be added in the following versions, it tries to loosely follow the std::collections::BTreeMap API.

Currently it is not heavily optimized but is already faster than some concurrent lock-free implementations. Single threaded performance is generally slower (~ 1.4x) but still comparable to std::collections::BTreeMap with sligthly faster scans due to the B+ Tree topology.

use bplustree::BPlusTree;

let tree = BPlusTree::new();

tree.insert("some", "data");

Dependencies

~1–1.8MB
~33K SLoC