を使用してCassandraデータベースのColumnFamilyのすべてのキーを削除したremove(key)
場合、を使用するget_range_slices
と、行は引き続き存在しますが、列はありません。行全体を削除するにはどうすればよいですか?
4 に答える
get_range_sliceは、「指定された行の範囲にこの述語を適用する」と言っているため、述語の結果が空の場合、その行キーに空の結果を含める必要があります。削除が実行されていない場合でも、一部またはすべてのキーの空の列リストを返すようなクエリを実行することは完全に有効です。
Cassandraは期待どおりに分散削除を使用します。
したがって、削除操作では、削除されたデータのすべてのトレースをすぐに消去することはできません。削除操作を実行し、レプリカが削除操作を受信しなかった場合、レプリカが再び使用可能になると、削除を受信したレプリカは次のように処理されます。書き込み更新を見逃して、それらを修復します!したがって、Cassandraは、削除時にデータを消去する代わりに、トゥームストーンと呼ばれる特別な値に置き換えます。その後、トゥームストーンは、最初の削除要求を逃したレプリカに伝播できます。
私はcassandra0.63でテストしましたが、問題は同じです。バグ修正は、削除された行IDを取り除くためのものではないと思います。見る
http://wiki.apache.org/cassandra/FAQ#range_ghosts
詳細については。
同じ問題が発生しているだけで、次のことがわかりました。
これは0.7で修正されています(https://issues.apache.org/jira/browse/CASSANDRA-1027)。そして0.6.3にバックポートされました
これも関連しています: https ://issues.apache.org/jira/browse/CASSANDRA-494