2010-11-16 137 views
1

我使用游标检索Berkeley DB数据库中的一系列键。我使用DB_SET_RANGE标志,然后使用DB_NEXT标志获得多个获得值。Berkeley DB:仅检索密钥

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

回答

1

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

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

这应该改善的事情在你的检索连续的叶项将导致有效页面复制到您在DBC使用DBT临时缓冲区::获得。

1

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