前回の記事
http://maki-watanabe.blogspot.com/2012/02/cassandraleveled-compaction.html
DataStaxのLeveled Compactionの解説
http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra
Cassandra 1.0から導入されたLeveled Compactionは以下のように動作する。
従来のCompaction(Size Tiered Compaction)とは異なり、Leveled Compactionでは指定されたサイズのsstableを作成する。デフォルトでは5MBである。
sstableは幾つかのLevelにグループ分けされる。Level 0を除き、一つのLevelに属するsstable間ではRow Keyは重複しない。
Level 0を除き、各Levelに保持できるsstableの合計サイズには制限がある。Level Nの上限値は次の通りである。
10^N x sstable size
つまりデフォルトのsstable size 5MBを使用した場合、Level 1の上限は50MB、Level 2の上限は500MB、Level 3の上限は5000MBである。
memtableがflushされると、Level 0のsstableが作成される。Level 0のsstableは直ちにCompactionされる。この際、Level 1のsstable群の中から、重複するRow Keyを含むものを全て選択し、マージ対象とする。マージされたデータから新たなLevel 1 sstableが作成される。
新規にsstableを作成する際に当該Levelのサイズ上限に達した場合、余分のsstableはLevel 2に昇格する。この際重複するRow Keyを含むsstableがLevel 2に存在する場合、それらのsstableとマージが行われ、新たなLevel 2 sstableが作成される。
0 件のコメント:
コメントを投稿