コンパクションの構成

コンパクションを構成するための手順。コンパクション・プロセスは、キーをマージし、カラムを結合し、トゥームストーンを排除し、SSTableを統合し、マージされたSSTableに新しいインデックスを作成します。

コンパクション」で説明されているように、コンパクション・プロセスは、キーをマージし、カラムを結合し、トゥームストーンを排除し、SSTableを統合し、マージされたSSTableに新しいインデックスを作成します。

cassandra.yamlファイルでは、以下のグローバルなコンパクション・パラメーターを構成します。

compaction_throughput_mb_per_sec パラメーターは、大きいパーティションを対象として使用することを意図しています。これは、コンパクションをシステム全体で指定された合計スループットにスロットルします。

Cassandraには、実稼働環境のワークロードに影響を及ぼさずにコンパクション・ストラテジのテストを行うための起動オプションがあります。

CQLを使用して、コンパクション・ストラテジを構成します。

  • SizeTieredCompactionStrategy(STCS):デフォルトのコンパクション・ストラテジ。このストラテジは、ディスク上に、min_thresholdテーブル・サブプロパティで構成されているサイズに似たサイズのSSTableがいくつかあるときに、マイナー・コンパクションを発動します。マイナー・コンパクションでは、キースペースのすべてのテーブルが関与するわけではありません。「STCSコンパクション・サブプロパティ」も参照してください。
  • DateTieredCompactionStrategy(DTCS):このストラテジは時系列データの場合に特に役立ちます。DateTieredCompactionStrategyは、特定の期間内に書き込まれたデータを同じSSTableに格納します。たとえば、Cassandraは過去1時間のデータを1つのSSTable時間枠に格納し、次の4時間のデータを別の時間枠に格納できます。これらの時間枠でSSTableのmin_threshold(デフォルトでは4)に達すると、コンパクションがトリガーされます。時系列ワークロードに対する最も一般的なクエリーでは、データの最後の時刻/日/月が取得されます。CassandraではSSTableを制限し、関連データを含むSSTableのみが返されるようにすることができます。また、TTLを使用して期限切れとなるように設定されているデータを、だいたい同じ時刻に期限切れとなるようにスケジュールされている他のデータとともにSSTableに格納できます。その後、コンパクションを行わずにそのSSTableを削除できます。「DTCSコンパクション・サブプロパティ」および「DateTieredCompactionStrategy: Compaction for Time Series Data」も参照してください。
    注: DTCSを使用する場合は、読み取りリペアを無効にすることが推奨されます。必要に応じて、フル・リペアを使用します。
  • LeveledCompactionStrategy(LCS):レベル化コンパクション・ストラテジでは、いくつかのレベルにグループ分けされる、固定の、比較的小さなサイズ(デフォルトでは160 MB)のSSTableが作成されます。各レベル内で、SSTableがオーバーラップすることはありません。各レベル(L0、L1、L2など)は、1つ下のレベルに比べると10倍大きくなっています。SSTableは、継続的に、次第により大きなレベルへとコンパクションされていくため、レベルが低い場合よりもレベルが高い方が、ディスクI/Oが均等化され予測しやすくなります。レベルごとに、行キーはオーバーラップしないSSTableにマージされます。Cassandraが、各レベルのどのSSTableで行キー・データの有無を調べるかを特定できるため、読み取りのパフォーマンスが向上します。このコンパクション・ストラテジは、Googleのleveldb実装をモデルにしています。「LCSコンパクション・サブプロパティ」も参照してください。

コンパクション・ストラテジのプロパティおよびCQLのコンパクション・サブプロパティ(コンパクション対象にできるSSTableの最大数や最小のSSTableのサイズなど)を構成するには、CREATE TABLEまたはALTER TABLEを使用します。

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/cassandra/cassandra.yaml
tarボール・インストール install_location/resources/cassandra/conf/cassandra.yaml
Windowsインストール C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra.yaml

手順

  1. ALTER TABLE文を使用して、テーブルを更新してコンパクション・ストラテジを設定します。
    ALTER TABLE users WITH compaction = { 'class' :'LeveledCompactionStrategy'  }
  2. コンパクション・ストラテジのプロパティをSizeTieredCompactionStrategyに変更し、CQLのmin_threshold属性を使用して、コンパクションを発動する最少のSSTableの数を指定します。
    ALTER TABLE users WITH compaction = {'class' :'SizeTieredCompactionStrategy', 'min_threshold' :6 }

タスクの結果

コンパクション・メトリックを使用して、構成の結果を監視できます。「コンパクション・メトリック」を参照してください。