2

作成した列ファミリーに対して、いくつかの簡単なテスト(挿入と削除)を実行していました。行キーに対して新しい列が挿入されているのに、最近削除された列が挿入されないことを確認しました。

例えば:

rowkey1 :: name1-val1
                 name2-val2

name1を削除した後、もう一度挿入しようとすると、次のようになります。

rowkey1 :: name2-val2であり、name1-val1、name2-val2に戻りません。

(Pelops Javaクライアントを使用して)コードから挿入しようとすると、問題が発生します。挿入に使用するコードスニペットは次のとおりです。

            Mutator mutator = Pelops.createMutator("poolname");
            Column column = new Column(bufcolname);
            column.setValue(bufcolval);
            column.setTimestamp(new Date().getTime());
            mutator.writeColumn("MyColumnFamily",userId, column);
            mutator.execute(ConsistencyLevel.ONE);

ありがとう

4

1 に答える 1

5

ほとんどの場合、これはタイムスタンプの問題です。

書き込みが競合する場合、cassandraはタイムスタンプを使用して勝者を決定します。上記のコードでは、ミリ秒を使用してタイムスタンプを設定していますが、慣例により、cassandraはマイクロ秒単位のタイムスタンプを使用します。

タイムスタンプは好きなものにすることができますが、1970年以降のマイクロ秒は慣例です。

したがって、削除はおそらくマイクロ秒のタイムスタンプを使用しています。これは、追加のmsタイムスタンプよりも大きいため、追加は常に削除によってシャドウされます。

于 2012-10-08T17:25:56.783 に答える