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?

+3


source to share


1 answer


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.



+1


source







All Articles