Berkeley DB:仅检索密钥
Posted
技术标签:
【中文标题】Berkeley DB:仅检索密钥【英文标题】:Berkeley DB: Retrieving only keys 【发布时间】:2010-11-16 01:30:20 【问题描述】:我正在使用游标检索 Berkeley DB 数据库中的一系列键。我使用DB_SET_RANGE
标志进行了一次获取,然后使用DB_NEXT
标志进行了多次获取。
一切正常。问题是我只需要这个特定操作的键,但我总是得到键和关联的值。由于这些值可能会变得非常大(数百千字节),因此我想避免检索它们。有什么想法吗?
【问题讨论】:
【参考方案1】:有趣的问题。我不相信单独拿到钥匙是可能的。
一种方法是将密钥存储在他们自己的数据库中,数据为零。如果您不能忍受重复,我认为最好的方法是批量阅读,因为根据定义,您的值范围具有良好的参考位置。 在 DBC::get() 调用中使用 DB_MULTIPLE_KEY 标志,并为数据使用大型 DBT 缓冲区。使用 DbMultipleKeyDataIterator 迭代批量检索的块。
这应该会有所改善,因为您检索中的连续叶项将导致有效的页面复制到您在 DBC::get 中使用的 DBT 临时缓冲区。
【讨论】:
【参考方案2】:我认为您可以使用 DatabaseEntry.setPartial 方法(len=0)告诉 BerkeleyDB 引擎不要从值中获取数据。
【讨论】:
以上是关于Berkeley DB:仅检索密钥的主要内容,如果未能解决你的问题,请参考以下文章