但是並不是所有的存儲方式都能滿足需求,我們需要根據不同的情況進行調整。
下面的IT培訓/從案例分析的角度來了解不同數據庫存儲結構的優缺點。
從工作負載均衡、壹致性要求、延遲、訪問方式等方面來看,應用是不壹樣的。
如果我們能夠對數據庫和存儲設施的架構做出明確的決定,這將有助於我們了解系統行為模式的原因,壹旦問題得以解決,就可以根據工作負載對數據庫進行調優。
B樹和LSM樹之間的主要結構差異之壹在於優化的目的和意義。
讓我們來比較壹下B樹和LSM樹。
總之,B-tree具有以下性質:B-tree是可變的,通過引入壹些空間開銷和更多的相關寫路徑來支持就地更新。
b樹不需要完全的文件重寫或多源合並。
b樹是讀優化的。
即不需要從多個源讀取B樹(因此不需要後續的合並操作),簡化了讀取路徑。
寫入可能會觸發節點的級聯拆分,這會使壹些寫入操作的開銷更大。
b樹針對分頁(塊存儲)環境進行了優化,在這種環境中沒有字節地址。
它們針對需要重寫的頁面環境(塊存儲)進行了優化,但通常B樹存儲比LSM樹存儲需要更少的維護。
並發訪問需要讀/寫隔離,其中有壹系列的鎖和閂鎖。
LSM樹有以下特點:LSM樹是不可寫的。
SSTable只寫入磁盤壹次,從不更新。
緊湊操作通過從多個數據文件中移除條目並合並具有相同鍵的數據來實現空間集成。
在壓縮過程中,成功合並後,合並的表將被丟棄和刪除。
不可寫性提供的另壹個有用特性是可以並發訪問刷新的表。
LSM是寫優化的。
這意味著寫入將被緩存並按順序刷新到磁盤,從而可能支持磁盤上的空間局部性。
讀取操作可能需要從多個數據源訪問數據。
因為在不同時間寫入的具有相同密鑰的數據可能落在不同的數據文件中。
記錄在返回給客戶之前必須合並。
LSM樹需要維護和縮減,因為緩存的寫入將被刷新到磁盤。