我要使用看起来很像目录路径的键('/ foo / bar','/ foo / baz'等,用斜杠的级别一般< 10)来索引BDB。
有没有人有使用Btree前缀比较例程[1]的经验?节省是否值得?有关此主题的经验论文的任何参考文献?
[1] http://www.stanford.edu/class/cs276a/projects/docs/berkeleydb/ref/am_conf/bt_prefix.html
答案 0 :(得分:1)
您可能希望将您的问题发布到OTN here上的Berkeley数据库论坛。有一个活跃的支持,工程和BDB应用程序开发人员社区,可直接在此论坛中进行交互。
我从客户那里听到的以及我们在BDB XML产品中使用Btree前缀的原因是它可以显着减小内部btree节点的大小,同时提高缓存效率,减少I / O,从而减少I / O提高单个密钥查找的效率。关于位于here的btree前缀函数的文档中也说明了这一点。性能改进的程度取决于a)您的数据,b)您的应用程序数据访问模式。如果键值大部分相同,那么您将在btree索引中节省更多空间。如果您的数据访问模式执行许多键查找,并且通过使用较小的btree减少必须执行的I / O数量,性能将相应地提高。
请注意,如果您提供btree前缀功能,则还必须提供兼容的btree比较功能。
对于BDB XML,我们看到btree大小减少了20-30。
Berkeley DB中默认使用的词典键比较/前缀函数可能已经提供了您想要的行为。
祝你的研究顺利。