LinkedIn開源PalDB,一個只讀的鍵值存儲數據庫

jopen 9年前發布 | 6K 次閱讀 PalDB

英文原文:LinkedIn Open Sources PalDB, a Read-only Key-value Store

LinkedIn 開源了 PalDB,一個可嵌入的鍵值對存儲數據庫,比 LevelDB 快 8 倍,并且內存占用比 hashset 少數個量級。

PalDB 是一個由 LinkedIn 開源并使用 Java 編寫的一次寫入鍵值存儲數據庫。當存儲創建后所有的操作都是禁止的,它是只讀的。這樣做的目的是提升讀操作的性能并降低內存占用。LinkedIn 的建議是使用它來存儲 side data,他們對于 side data 的定義是“一個過程以完成其工作而需要的額外的只讀數據。例如,被自然語言處理算法所使用的一系列已經停止使用的詞匯就是 side data”。

PalDB 是可嵌入的,它不使用模式并將數據保存在二進制文件之中。它提供了隨機數據訪問的 API

據 LinkedIn 所說,它優化了讀操作,性能可與類似于 HashMap 和 HashSet 這樣的常駐內存的數據結構一較高下,同時需要的內存顯著減少,這些特性是公司在設計它時苦苦追求的。例如,一個含有 100M 鍵的 hashset 需要超過 500MB 的內存而 PalDB 只需要大約 80MB。或者,35M 個用戶 ID 使用 hashset 存儲需要 1.8GB 的內存而 PalDB 只需要 290MB。在 PalDB 中使用 Snappy 來壓縮數據的話將會使用更少的內存。

在速度方面,LinkedIn 的性能測試顯示 PalDB 擁有 2M 讀/秒的性能,或者說比 HashSet 快 6 倍,比 LevelDB 或 RocksDB 快 8 倍,這個測試環境是 MacBook Pro 3.1 GHz 和一個 10M-鍵索引。

PalDB 優化了存儲訪問。將數據存儲在磁盤上將會導致相當差的表現。盡管沒有限制數據的大小,索引的大小限制為 2GB。此外,重要的是要知道 PalDB 不是線程安全的。

來自: InfoQ
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!