2010-11-16 134 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引擎從該值中獲取任何數據。