LMDB Option Offering B-Tree Finger?
A finger B-Tree is a B-tree that tracks a user-defined associative "summation" operation on leaves. When nodes are merged, the operation is used to combine summaries; when the nodes are split, the sum is recalculated using the grandchildren of the node (but not deeper nodes).
By refreshing the pivot data with each split / merge, a finger's B-Tree can respond with pivot queries over any arbitrary key range at no more than O (log n) page searches (i.e., down the path from root down to floorkey range and ceilkey range) ...
I don't think LMDB supports this out of the box, but I'd be happy to be wrong. Does anyone know of a fork or LMDB variant that adds it? If not, is there another lightweight constant (not necessarily transactional) BTree library on disk that does?
source to share
RocksDB offers customizable compaction filters and merge operations that I think can be used to implement such summaries in a fairly efficient way. Of course, this architecture is very different from LMDB.
source to share