Database

為什麼 bitcoind 使用 LevelDB 的一個分支進行鍵值儲存?

  • February 16, 2016

由於 0.8 bitcoind 使用 LevelDB 來儲存 UTXO 集合 inchainstate/和塊索引 in blocks/index/。在 github 上可以找到 LevelDB 的特殊分支:

<https://github.com/bitcoin/leveldb>

與其他嵌入式數據庫解決方案相比,是什麼原因使 LevelDB 成為鍵值儲存的最佳選擇?bitcoind 自己的 LevelDB 分叉與官方版本有何不同?

分叉有兩個目的:

  • 難以帶到上游的本地修改:

    • Windows 支持(部分基於現有的 Windows 埠,但需要更改以在 MinGW 中建構)
    • 刪除壓縮支持,因為它沒有幫助,並且使建構複雜化。
  • 嚴格控制變化。鑑於之前的 BDB 到 LevelDB 轉換導致網路分叉的經驗,明智的做法是不要使用系統範圍內安裝的庫版本。假設,即使從 LevelDB 的角度來看,更改是一個錯誤修復,我們可能希望保持錯誤行為以防止網路中的分叉,具體取決於錯誤。

引用自:https://bitcoin.stackexchange.com/questions/42925