Cassandraがデータの完全性チェックを行っているとき、検証コンパクションを行いますが、これはどういう意味ですか?私は、修復が完了するまで一時的に保存される単一のSSTableを作成し、その単一のSSTableからMerkleツリーを生成することを理解しています。 Merkleツリーのいずれかが妥当性検査に失敗した場合、(妥当性検査圧縮中に作成されたSSTableからの)その葉を作成するために使用されたパーティションは、他のノードにストリーミングされます。 しかし、友人はMerkleの木はそれぞれ(以前から存在していた)SSTableから生成されたと私に言った。1つのSSTableからMerkleツリーが生成されていますか?
したがって、いくつのMerkleツリーがSSTableの1つまたはいくつか生成されますか?
したがって、リーフが検証に失敗した場合、ノードはストリーミングする必要があるデータをどこで読み取りますか?そのリーフを生成するために使用されたパーティションを見つけるためにすべてのSSTableを再読しますか? –
これは、リーフが表す範囲のすべての現在のステーブルを取得し、それをストリームします。偶発的で不変なデータの性質のために、新しいsstablesがある場合。 sstablesはトークン順に並べ替えられているため、範囲の開始位置に右にジャンプすることができます。 –
乾杯!最後の質問:)それは、SSTables自体をストリームしないのですか?私はそれが葉の範囲のすべてのSSTablesを読んで、データを(通常の読取り操作のように)クランチしてから、それを送信すると思いますか? –