我正在使用游标检索Berkeley DB数据库中的一系列键。我使用DB_SET_RANGE
标志后跟一些使用DB_NEXT
标志的获取。
一切正常。问题是我只需要这个特定操作的键,但我总是得到键和相关的值。由于值可以变得非常大(数百千字节),我想避免检索它们。有什么想法吗?
答案 0 :(得分:1)
有趣的问题。我不相信可以单独获得钥匙。
一种方法是使用零数据将密钥存储在自己的数据库中。如果您无法复制,我认为最好的方法是批量读取,因为根据定义,您可以获得适合您的值范围的参考位置。 在DBC :: get()调用中使用DB_MULTIPLE_KEY标志,在数据中使用大型DBT缓冲区。使用DbMultipleKeyDataIterator迭代批量检索的块。
这可以改进,因为检索中的连续叶项将导致有效的页面副本到DBC :: get中使用的DBT临时缓冲区。
答案 1 :(得分:1)
我认为您可以使用 DatabaseEntry.setPartial 方法(使用len = 0)告诉BerkeleyDB引擎不从该值中获取数据。