【问题标题】:Berkeley DB: Retrieving only keysBerkeley DB:仅检索密钥
【发布时间】:2010-11-16 01:30:20
【问题描述】:

我正在使用游标检索 Berkeley DB 数据库中的一系列键。我使用DB_SET_RANGE 标志进行了一次获取,然后使用DB_NEXT 标志进行了多次获取。

一切正常。问题是我只需要这个特定操作的键,但我总是得到键和关联的值。由于这些值可能会变得非常大(数百千字节),因此我想避免检索它们。有什么想法吗?

【问题讨论】:

    标签: berkeley-db


    【解决方案1】:

    有趣的问题。我不相信单独拿到钥匙是可能的。

    一种方法是将密钥存储在他们自己的数据库中,数据为零。如果您不能忍受重复,我认为最好的方法是批量阅读,因为根据定义,您的值范围具有良好的参考位置。 在 DBC::get() 调用中使用 DB_MULTIPLE_KEY 标志,并为数据使用大型 DBT 缓冲区。使用 DbMultipleKeyDataIterator 迭代批量检索的块。

    这应该会有所改善,因为您检索中的连续叶项将导致有效的页面复制到您在 DBC::get 中使用的 DBT 临时缓冲区。

    【讨论】:

      【解决方案2】:

      我认为您可以使用 DatabaseEntry.setPartial 方法(len=0)告诉 BerkeleyDB 引擎不要从值中获取数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多