2012年2月21日火曜日

CassandraのLeveled Compactionについて調べる(2)

前回の記事
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 件のコメント:

コメントを投稿