2016-08-16 7 views
0

この表では、アプリケーションは下記のデータを提供します。ステータスの更新を受け取ると増分します。だから、最初に示したように、テーブルは以下のようになります: - above.Now再び示したアプリケーションを実行すると、値が変更されるようカッサンドラ1ヒットごとに1行に値を追加する方法

+---------------+---------------+---------------+---------------+ 
|  ID  | Total count | Failed count | Success count | 
+---------------+---------------+---------------+---------------+ 
|  1  |  30  |  10  |  20  | 
+---------------+---------------+---------------+---------------+ 

今度は、合計30件のメッセージを想定してみましょう成功した10のうち、今プッシュ失敗し、20されています。今では全部で20の新しいレコードが出てきて、すべてが成功しています。これは同じ行で更新する必要があります。

+---------------+---------------+---------------+---------------+ 
|  ID  | Total count | Failed count | Success count | 
+---------------+---------------+---------------+---------------+ 
|  1  |  50  |  10  |  40  | 
+---------------+---------------+---------------+---------------+ 

カウンターデータ型を使用してカサンドラDBで実行可能ですか?

答えて

1

もちろん、あなたのケースでカウンターテーブルを使用することができます。あなたが好きなクエリを実行することにより、カウンタをインクリメントすることができます

CREATE KEYSPACE Test WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 }; 

CREATE TABLE data (
    id int, 
    data string, 
    PRIMARY KEY (id) 
); 

CREATE TABLE counters (
    id int, 
    total_count counter, 
    failed_count counter, 
    success_coutn counter, 
    PRIMARY KEY (id) 
); 

: ようなものだが、テーブル構造を仮定しましょう

UPDATE counters 
SET total_count = total_count + 1, 
success_count = success_count + 1 
WHERE id= 1; 

ホープこれはあなたを助けることができます。

+0

ありがとうございました。出来た。 – Amber

+0

また、私たちのケースでは毎秒6000/7000トランザクションのように、毎秒巨大な更新を期待しています。カウンタを使用することで実現可能か、それを達成するために調整する必要がある他の最適化パラメータがありますか? – Amber

+0

cassandraでの書き込みパフォーマンスは、所有しているノードの数と使用されている整合性レベル(CL)と複製係数によって異なります。このリンクは、http://www.datastax.com/dev/blog/whats-new-in-cassandra-2-1-a-better-implementation-of-countersに役立ちます。 cassandra.ymlのカウンタキャッシュを有効にして設定すると、カウンタの読み取り/書き込みパフォーマンスを向上させることができます。 –

関連する問題