Berkeley DB:仅检索密钥

时间:2010-11-16 01:30:20

标签: berkeley-db

我正在使用游标检索Berkeley DB数据库中的一系列键。我使用DB_SET_RANGE标志后跟一些使用DB_NEXT标志的获取。

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

2 个答案:

答案 0 :(得分:1)

有趣的问题。我不相信可以单独获得钥匙。

一种方法是使用零数据将密钥存储在自己的数据库中。如果您无法复制,我认为最好的方法是批量读取,因为根据定义,您可以获得适合您的值范围的参考位置。 在DBC :: get()调用中使用DB_MULTIPLE_KEY标志,在数据中使用大型DBT缓冲区。使用DbMultipleKeyDataIterator迭代批量检索的块。

这可以改进,因为检索中的连续叶项将导致有效的页面副本到DBC :: get中使用的DBT临时缓冲区。

答案 1 :(得分:1)

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