0

Casandra に取り組もうとしているときに、最近奇妙な問題に直面しました。現在の実装は、Cassandra + Spring MVC + Kundera です。

問題:: EntityManager の persist メソッドを使用してオブジェクトを保存しようとしています。しかし、動作は非常に一貫性がなく、DB に詳細が保存されない場合があります。アプリケーション ログを確認すると、エラーや例外はなく、正常に保存されます。

私たちが直面しているもう 1 つの問題は、一部のテスト セットをデバッグしようとしているときに、Casandra から行を削除したことです。そして、それを再挿入するアプリケーションを作成しました。しかし、行を複数回削除して保存した後、新しいレコードを表示できなくなりました..

私が持っている Casandra サーバーは、私のマシンで実行されている単一ノード サーバーです。

提案してください。

4

1 に答える 1

0

同じコラムを書き直したとき、私は似たようなことに直面しました。
Cassandra の列には、暗黙的なタイムスタンプがあります...例を作るためだけに

public class Column {  

   private final String key;
   private final String value;
   private final Long timeStamp;

    public Column(String key, String value) {
        this(key, value, System.currentTimeMillis());
    }   

    private Column(String key, String value, Long timeStamp) {
        this.key = key;
        this.value = value;
        this.timeStamp = timeStamp;
    }

    //other methods etc.
}

次の操作を実行すると、次のようになります。

Column col = new Column("akey", "avalue");
write(cf, col); 
delete(cf, col);
write(cf, col);

次の操作を完了すると、cf 内の列が見つかると予想されますが、列のタイムスタンプよりも高いタイムスタンプを持つ削除操作があるため、そこにはありません。機能させるには、列を再度作成する必要があります...

Column col = new Column("akey", "avalue");
write(cf, col); 
delete(cf, col);
Column col_new_timestamp = new Column("akey", "avalue");
write(cf, col_new_timestamp);

HTH、カルロ

于 2014-07-28T13:30:28.933 に答える