數據庫的存在對於任何壹個軟件的運行以及網站信息的存儲都是非常有必要的。但是並不是所有的存儲方式都能滿足需求,我們需要根據不同的情況進行調整。下面IT培訓就從案例分析的角度出發來了解壹下,不同的數據庫存儲結構的優劣性。
從讀/寫工作負載平衡、壹致性需求、延遲和訪問模式等方面看,應用是各異的。如果我們能對數據庫和存儲內部設施架構決策了然於胸,那麽將有助於我們理解系統行為模式的原因所在,壹旦在問題時能解決問題,並能根據工作負載調優數據庫。
B樹和LSM樹結構上的大差別之壹,在於優化的目的,以及優化的意義。
下面對B樹和LSM樹做壹個對比。總而言之,B樹具有如下屬性:
B樹是可變的,這支持通過引入壹些空間開銷,以及更為關聯的寫路徑,實現就地更新。B樹並不需要完全的文件重寫或多源合並。
B樹是讀優化的。即B樹不需要從多個源讀取(因此也不需要此後的合並操作),這簡化了讀路徑。
寫可能會觸發節點的級聯分割,這會使壹些寫操作更昂貴。
B樹是針對分頁(塊存儲)環境優化的,其中不存在字節地址。Theyareoptimizedforpagedenvironments(blockstorage),wherebyteaddressingisnotpossible.
雖然也需要重寫,但是通常情況下B樹存儲要比LSM樹存儲需要更少的維護。
並發訪問需要讀/寫隔離,其中壹系列的鎖和閂(latch)。
LSM樹具有如下特性:
LSM樹是不可寫的。SSTable是壹次性寫入磁盤的,永不更新。緊縮操作通過從多個數據文件移除條目,並合並具有相同鍵的數據,實現空間的整合。在緊縮過程中,已合並的SSTable將被丟棄,並在成功合並後移除。不可寫提供的另壹個有用特性,就是刷新後的表可並發訪問。
LSM是寫優化的。這意味著寫入操作將被緩存,並順序地刷新到磁盤中,潛在地支持磁盤上的空間本地性。
讀操作可能需要從多個數據源訪問數據。因為不同時間寫入的具有相同鍵的數據,可能會落在不同的數據文件中。記錄在返回給客戶前,必須經過合並過程。
LSM樹需要做維護和緊縮,因為緩存的寫入操作將被刷新到磁盤。