私は、cassandraがsstables、row-keysをマージし、トゥームストーンなどをすべて削除することを知っています。
しかし、私はそれがどのように圧縮を実行するかを知ることに本当に興味がありますか?
sstablesは不変であるため、関連するすべてのデータを新しいファイルにコピーしますか?そして、この新しいファイルへの書き込み中に、トゥームストーンでマークされたデータを破棄します。
圧縮が何をするのかは知っていますが、これがどのように発生するのか知りたいです(T)
私は、cassandraがsstables、row-keysをマージし、トゥームストーンなどをすべて削除することを知っています。
しかし、私はそれがどのように圧縮を実行するかを知ることに本当に興味がありますか?
sstablesは不変であるため、関連するすべてのデータを新しいファイルにコピーしますか?そして、この新しいファイルへの書き込み中に、トゥームストーンでマークされたデータを破棄します。
圧縮が何をするのかは知っていますが、これがどのように発生するのか知りたいです(T)
このスレッドのすべての投稿とコメントをフォローしていただければ、このスレッドがお役に立てば幸いです。
http://comments.gmane.org/gmane.comp.db.cassandra.user/10577
私の知る限り
Whenever memtable is flushed from memory to disk they are just appended[Not updated] to new SSTable created, sorted via rowkey.
SSTable merge[updation] will take place only during compaction.
Till then read path will read from all the SSTable having that key you look up and the result from them is merged to reply back,
Two types : Minor and Major
Minor compaction is triggered automatically whenever a new sstable is being created.
May remove all tombstones
Compacts sstables of equal size in to one [initially memtable flush size] when minor compaction threshold is reached [4 by default].
Major Compaction is manually triggered using nodetool
Can be applied over a column family over a time
Compacts all the sstables of a CF in to 1
Compacts the SSTables and marks delete over unneeded SSTables. GC takes care of freeing up that space
よろしく、タミル語
圧縮を実行する2つの方法があります:
A-マイナーコンパクション。自動的に実行します。B-主要な圧縮。手動で実行します。
どちらの場合も、(CFごとに)xファイルを取得して処理します。このプロセスでは、有効期限が切れたttlのある行をトゥームストーンとしてマークし、既存のトゥームストーンを削除します。これにより、新しいファイルが生成されます。この圧縮で生成されたトンボストーンは、次の圧縮で削除されます(猶予期間を費やす場合は、gc_grace)。
AとBの違いは、取得したファイルの量と最終的なファイルです。Aは、いくつかの類似したファイル(類似したサイズ)を取り、新しいファイルを生成します。Bはすべてのファイルを取得し、1つの大きなファイルのみを生成します。