2014-01-13 61 views
3

是否有一些如何更改leveldb數據庫中的鍵的值?有沒有辦法改變leveldb中的鍵?

我已經擁有一個擁有18萬個行的數據庫,並且我想要更改鍵以添加前綴。

我使用leveldb和node.js.但任何解決方案都必須符合

我已經嘗試重建這個數據庫,但它花費了太多時間。

+0

這看起來不可能(即使使用本地API)。不過,每個記錄的大小是多少? 18百萬人看起來並不多。 – Lol4t0

+0

我建議在[leveldb郵件列表](http://groups.google.com/group/leveldb) – wannaKnowItAll

+0

@ Lol4t0上提問您的問題:問題是基礎在生產中。這些文件大約有9GB。 – Leonardo

回答

4

LevelDB的工作方式是,每個「Put」都是一個寫入來創建新狀態。 如果您執行覆蓋現有值的「Put」,則將有兩個 副本,直到壓縮消除舊值。

實際上,這意味着重建將是唯一的選擇。

爲了讓你可以更快的嘗試:

  • 掃描現有的數據庫,並通過密鑰空間做線性掃描 重建。您的新數據將按排序的 順序插入,這可能有助於加快速度。

  • 分批插入。 LevelDB的許多變體都會減緩對寫入 的壓縮。在股票LevelDB中,只要需要休眠,您的作者就會睡1ms,這與批處理中的寫入次數無關。

  • 增加寫緩衝區大小。我發現16MB-32MB是一個很好的「甜蜜點」。

  • 考慮使用HyperLevelDB。我們遇到了一些寫有LevelDB的 性能問題,並對 進行了一些改進以提高性能。你會看到你的插入速度上升, 這可以幫助你更快地重建 - 有時顯着加快 。

相關問題