2016-07-28 8 views
2

私はFacebookのLinkbenchでCassandraをベンチマークする必要があります。ベンチマーク、ロード、要求フェーズの間には2つの段階があります。ロードフェーズの Linkbenchは、デフォルト値(グラフデータ)でノード、リンク、およびカウント(リンクカウント用)のcassandraテーブルを入力します。カウントテーブルは次のようになりますCassandra:カウンタ列を値で初期化する方法は?

keyspace.counttable ( link_id bigint, link_type bigint, time bigint, version bigint, count counter, PRIMARY KEY (link_id, link_type, time, version)

私の質問は、(Linkbench要求段階でカウンタをインクリメントし、デクリメントする前に)デフォルトのカウンタ値を挿入する方法ですか?

それがデクリメント/カサンドラで、どのように私はインクリメントする必要があること

どれがお勧めとコメント(代わりにカウンタ変数の)BIGINT変数を行うことはできませんか?どうもありがとう。

答えて

1

デフォルト値は0です。

create table counttable ( link_id bigint, link_type bigint, time bigint, version bigint, count counter, PRIMARY KEY (link_id, link_type, time, version) );

update counttable set count = count + 1 where link_id = 1 and link_type = 1 and time = 1 and version = 1;

考えると我々はいくつかにそれを設定したい場合は、カウントの値が、今では1

select * from counttable ; link_id | link_type | time | version | count ---------+-----------+------+---------+------- 1 | 1 | 1 | 1 | 1 (1 rows)

であることがわかりその他の値:

update counttable set count = count + 500 where link_id = 1 and link_type = 1 and time = 1 and version = 2; select * from counttable ; link_id | link_type | time | version | count ---------+-----------+------+---------+------- 1 | 1 | 1 | 1 | 1 1 | 1 | 1 | 2 | 500 (2 rows)

1

0以外の値を持つカウンタ列を初期化するための洗練された方法はありません。カウンタフィールドで実行できる操作は、増分/減分だけです。別の列にオフセット(例:初期値)を保存し、クライアントアプリケーションに2つの値を追加することをおすすめします。

+0

はありがとうございました!私は1つの操作と1つの列(インクリメントまたはデクリメント)でソリューションを探しています。カウンタフィールドまたは整数で指定する必要があります。 – KNag

0

Answersありがとうございます。私はカウンターフィールドを初期化するために次のソリューションを実装しました。 カウンタの初期値とデフォルト値は0です。これをデフォルト値で増分します。それはドン・ブランソンソリューションのように一つだけの列となります。

がテーブルcounttable( LINK_IDのBIGINT、 LINK_TYPEのBIGINT、 回数カウンタ、 PRIMARY KEY(LINK_ID、LINK_TYPE) )を作成します。

iは(ロード・フェーズ)この文で値を設定します。

update counttable set count = count + myValue where link_id = 1 and link_type = 1; 

select * from counttable ; 

link_id | link_type | count 
---------+-----------+-------- 
     1 |   1 | myValue (added to 0) 

(1 row) 
関連する問題