Cassandraは分散型データベースとして、高可用性と水平スケーラビリティを実現するためにLog-Structured Merge-Tree(LSM Tree)を採用しています。データはまずMemTableに書き込まれ、満杯になるとSSTable(Sorted String Table)にフラッシュされます。SSTableの數が増えると、読み取り性能を維持するための圧縮(Compaction)が不可欠です。従來の圧縮戦略であるSize-Tiered Compaction(STC)とLevel Compaction(LC)にはそれぞれの課題があり、UCS(Unified Compaction Strategy)はこれらの欠點を補う新しいアプローチを提供します。
LSM Treeは、データをメモリと磁気ディスクに分けて管理する構造で、高速な書き込みと効率的な読み取りを実現します。Cassandraでは、データがMemTableに格納され、その後SSTableに変換されます。SSTableは不可変であり、圧縮によってデータを再構成し、読み取り効率を向上させます。
UCSは、SSTableの密度(Density)と分片(Sharding)を基盤にした統一的な圧縮戦略です。密度はSSTableのサイズとカバーするToken範囲の比率で定義され、層(Tier)の決定に使用されます。分片はデータを複數のディレクトリに分散し、並列処理を可能にします。
密度 = 總データ量 / 覆蓋のToken範囲
です。UCSはCassandraの內部プロセスで自動的に実行され、手動の分片設定が不要です。圧縮タスクは1GBのSSTableを4GBの目標サイズに統合し、並列処理を制御します。空間とコンパクトタスクの數を調整することで、リソースの過負荷を防ぎます。
優勢:
挑戦:
UCSはCassandraの圧縮戦略を革新し、密度と分片を活用して読み書きのアンプリフィケーションを最適化します。データの分佈特性を考慮した設計により、高スケーラビリティと効率的な運用が可能になります。運用者はリソースの使用狀況を監視し、パラメータを適切に調整することで、UCSの最大の利點を引き出すことができます。