【问题标题】:LMDB variant offering finger B-Tree?LMDB 变体提供手指 B-Tree?
【发布时间】:2017-04-14 17:32:01
【问题描述】:

finger B-Tree 是一个 B 树,它跟踪用户指定的叶节点上的关联“汇总”操作。合并节点时,该操作用于合并汇总;当节点被拆分时,使用节点的孙子节点(但没有更深的节点)重新计算摘要。

通过在每次拆分/合并时更新摘要数据,手指 B-Tree 能够在最多 O(log n) 的页面查找中回答关于任意任意键范围的摘要查询(即沿着从根向下到范围的 floorkey 和范围的 ceilkey 的路径)。

我认为 LMDB 不支持开箱即用,但我很乐意犯错。有人知道添加它的 LMDB 分支或变体吗?如果没有,是否有另一个轻量级的持久(不一定是事务性的)磁盘 BTree 库呢?

【问题讨论】:

  • 我曾经使用过 CouchDB。我认为手指 B-Tree 不是一个选项,因为它不适用于分片。
  • @DavidKnipe 我不需要分布式数据库。

标签: key-value-store lmdb


【解决方案1】:

RocksDB 提供了custom compaction filtersmerge operators,我认为它们可以用来以相当有效的方式实现此类摘要。当然,它的架构与 LMDB 有很大的不同。

【讨论】:

  • 感谢您的回复,但这些都不允许 O(log n) 的摘要。
  • 你确定吗?确切的复杂度等级有点难以确定,但我认为这些操作是亚线性的,就像其他数据库更新一样。
  • 是的,我很确定,而且复杂度类很容易定义。它也与 RocksDB 所说的压缩和合并无关。
猜你喜欢
  • 2021-10-25
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 2021-05-24
  • 2019-02-03
  • 2015-02-24
相关资源
最近更新 更多