Wallet
什麼技術將取代 BerkleyDB 格式?目前的可擴展性限制是什麼?
BerkleyDB 格式(錢包中使用的技術)的可擴展性如何,它的局限性是什麼?
什麼技術可以替代或補充 BerkleyDB 來應對這些可擴展性挑戰?
在下一個主要版本(可能是 0.8)中,參考客戶端很可能會切換到 LevelDB 而不是 BDB 來獲取區塊鏈數據。對於錢包,需要一個不同的解決方案,但我們很可能也會為那些離開 BDB。
BDB 有幾個問題——這並不是說它是糟糕的軟體,但我們的案例根本不符合它的設計目的。BDB 旨在在復雜的多程序環境中,在備份數據庫日誌和由數據庫管理員手動執行升級的高端系統上,為數據庫提供極高的可靠性。BDB 甚至不保證其環境文件在次要版本之間的兼容性。
LevelDB - 對Google自己的數據庫系統的開源重寫 - 旨在提高商品硬體的效率和一致性,並且在某些設置中優於 BDB 一個數量級。LevelDB 的初步測試顯示出非常好的結果。
對於錢包來說,LevelDB 將是矯枉過正和負擔。LevelDB 使用每個數據庫的整個目錄(而不是單個文件),並且錢包實際上是一個簡單的鍵值儲存,無論如何都完全載入在記憶體中。我假設 wallet.dat 將被一些簡單但可靠的手捲格式所取代。