3 ノードのクラスターがあり、replicate_factor も 3 です。整合性レベルは、書き込みクォーラム、読み取りクォーラムです。トラフィックには 3 つの主要なステップがあります
- 作成:
- 行キー: xxxx
- カラム: status=new, requests="xxxxx"
- アップデート:
- 行キー: xxxx
- カラム: status=executing, requests="xxxxx"
- 消去:
- 行キー: xxxx
1 つのノードがダウンすると、整合性構成に従って機能し、最終的なステータスはすべての要求が終了して削除されます。
そのため、cassandra クライアントを実行して結果を一覧表示する場合 (整合性クォーラムも設定します)。空(行キーだけ残っている)と表示されますが、これは正しいです。
しかし、デッド ノードを開始すると、ヒント付きハンドオフ モデルがデータをこのノードに書き戻します。そのため、作成、更新、削除がたくさんあります。
GC またはコンパクションが原因でわかりません。他の 2 つのノードでのレコードの削除は機能していないようです。また、cassandra クライアントを使用してデータを一覧表示すると (一貫性のクォーラムも)、削除された行が列の値とともに再び表示されます。リカバリ ノードにより、履歴が再度再生されます。
また、クライアントを使用してデータを数回確認すると、データが変更されていることがわかります。ハンドオフのリプレイ操作が示唆されているようで、削除されたデータが表示されてから消えます。
ヒント付きのハンドオフが完了するまで、この手順を外部から見えないようにする方法はありますか?
私が望むのは、最終的なステータスの同期です。一時的なステータスは古く、また正しくありません。外部から見られることはありません。
列の削除ではなく、行の削除が原因ですか? それとも圧縮?