使用 Berkeley DB、C++ STL 接口进行批量读取

Posted

技术标签:

【中文标题】使用 Berkeley DB、C++ STL 接口进行批量读取【英文标题】:Bulk reads using Berkeley DB, C++ STL interface 【发布时间】:2010-07-16 15:56:49 【问题描述】:

我正在使用 Berkeley DB 4.8 的 C++ STL API,并且我能够对使用 begin() 创建的 db_map 或 db_multimap 常量迭代器使用批量检索,但不是从 find()(或 lower_bound( ) 用于多地图)。

我很欣赏 find() 的单个项目随机访问使用会浪费使用批量检索,但我想从我的 find() 点向前以 btree 顺序访问许多记录,因此批量检索会对我有所帮助。底层 C++ api 似乎允许它,是否可以从 STl API 中获得?

【问题讨论】:

【参考方案1】:

我自己找到了解决方案:

您需要重载 const_iterator lower_bound() 方法以包含 BulkRetrievalOption 参数,就像 begin() 一样。这将像 begin() 一样使用该参数在内部创建交互器实例,然后将迭代器移动到提供的键值的下限。

同样适用于 db_map::find

【讨论】:

以上是关于使用 Berkeley DB、C++ STL 接口进行批量读取的主要内容,如果未能解决你的问题,请参考以下文章

浮动索引上的 Berkeley DB C++ 查询

berkeley DB:无法编译 C++ 代码

berkeley DB:无法编译 C++ 代码

如何在 Berkeley DB 中使用批量功能?

检查 Berkeley DB C++ API 中是不是存在密钥 [关闭]

Berkeley DB为啥又叫做db4