1

我将使用看起来很像目录路径的键('/foo/bar'、'/foo/baz' 等,斜杠级别通常 < 10)来索引 BDB。

有人对此使用 Btree 前缀比较例程 [1] 有任何经验吗?节省的钱值得吗?有没有关于这个主题的经验论文的参考资料?

[1] http://www.stanford.edu/class/cs276a/projects/docs/berkeleydb/ref/am_conf/bt_prefix.html

4

1 回答 1

1

您可能希望在此处将您的问题发布到 OTN 上的 Berkeley DB 论坛。有一个由支持、工程和 BDB 应用程序开发人员组成的活跃社区,可直接在此论坛中互动。

听客户和我们自己在 BDB XML 产品中使用 Btree 前缀的消息是,它可以显着减小内部 btree 节点的大小,同时提高缓存的效率,减少 I/O 从而提高效率单个键查找。这也在有关位于此处的 btree 前缀函数的文档中进行了说明。性能改进的程度取决于 a) 您的数据,b) 您的应用程序数据访问模式。如果键值大部分相同,那么您将在 btree 索引中节省更多空间。如果您的数据访问模式执行许多关键查找,并且通过使用较小的 btree 来减少必须执行的 I/O 数量,则性能将相应提高。

请注意,如果您提供 btree 前缀函数,则还必须提供兼容的 btree 比较函数。

对于 BDB XML,我们看到 btree 大小减少了 20-30。

Berkeley DB 中默认使用的字典键比较/前缀函数可能已经提供了您想要的行为。

祝你的研究好运。

于 2011-04-21T04:47:29.580 回答