バックグラウンド
Astyanax の Entity Persister は、エンティティのマップを複数の列に保存します。形式は mapVariable.key です。
問題:
astyanax の Entity Persister は、エンティティ内のマップが更新されたときに、削除されたキーと値のペアを cassandra から削除しません。
私が現在使用しているソリューション(悪いアプローチ)
行全体を削除してから再挿入します
追加情報
astyanax の Entity Persister (com.netflix.astyanax.entitystore) を使用して、cassandra で Java オブジェクトを永続化します。
私が気付いたのは、エンティティのマップがたとえば2つの値で永続化されている場合: testkey:testvalue & testkey2:testvalue2、および次回同じエンティティのマップが1つの値で永続化される(1つのキーと値のペアが削除された) : testkey:testvalue、testkey2:testvalue2 は列ファミリーから削除されません。
したがって、回避策として、行全体を削除してから再挿入する必要があります。
私の挿入コード:
final EntityManager<T, String> entityManager = new DefaultEntityManager.Builder<T, String>()
.withEntityType(clazz)
.withKeyspace(getKeyspace())
.withColumnFamily(columnFamily)
.build();
entityManager.put(entity);
私は何が欠けていますか?これは非常に非効率的であり、astyanax のエンティティ永続化機能がこれを独自に処理することになっていると思います。
何かご意見は?