本文主要包含以下內容:
1、Compaction 設計空間的四個原語:觸發器、數據布局、壓縮粒度、數據移動策略。任何已有的compaction策略和新的策略都可以由這個四個原語組建構成。
2、詳細介紹這四個原語的定義,策略方法
3、現有的基于LSM的知名系統的compaction策略按照四個原語進行拆解分析。
一、LSM的Compaction是什么?
為了限制磁盤上sorted run的數量(從而快速查找和更好地利用空間),LSM樹定期將第 i 層的runs(或部分runs)與第 i+1 層的重疊runs進行排序合并。這個過程就被成為LSM compaction(壓縮)。然而,sort-merging數據的過程要求數據在磁盤和數據庫內存之間來回移動。這導致了寫入放大,在最先進的基于LSM的數據存儲中可高達40倍。
為了攤薄數據移動,從而避免延遲峰值,最先進的LSM引擎將數據組織成更小的文件,并以文件而不是level層級的粒度進行壓縮。如果i層的增長超過了閾值,就會觸發一個com-paction,從i層中選擇一個文件(或一個文件子集)與 i+1層中