私のテーブルの完全なパーティションを照会したい。 私の複合パーティションキーは(id, date, hour_of_timestamp)
で構成されています。 id
とdate
は文字列、hour_of_timestamp
は整数です。Cassandra - パーティション全体を照会するINクエリまたはTOKENクエリ?
データを取り込み中にホットスポットが原因で、hour_of_timestampフィールドを自分のパーティションキーに追加する必要がありました。
今、データの完全なパーティションを照会する最も効率的な方法は何ですか? this blogによれば、SELECT * from mytable WHERE id = 'x' AND date = '10-10-2016' AND hour_of_timestamp IN (0,1,...23);
を使用すると、コーディネーター・ノードに多くのオーバーヘッドが生じています。
TOKEN関数を使用し、2つのトークンを使用してパーティションをクエリする方がよいですか?このようなSELECT * from mytable WHERE TOKEN(id,date,hour_of_timestamp) >= TOKEN('x','10-10-2016',0) AND TOKEN(id,date,hour_of_timestamp) <= TOKEN('x','10-10-2016',23);
ように、私の質問は: は、私は私のデータのパーティション全体を照会するためIN
またはTOKEN
クエリを使用する必要がありますか?または、私はhour_of_timestamp
の値ごとに1つずつ23個のクエリを使用し、残りの作業をドライバに任せますか?
私はCassandra 3.0.8と最新のDatastax Java Driverを使用して6ノードクラスタに接続しています。
PRIMARY KEY定義全体を投稿できますか? – Aaron
@Aaron PRIMARY KEY((log_creator、date、hour)、ts、log_id)が実際の定義です。質問のフィールド名をより一般的なものに調整しました... 'ts'は' timestamp'型で、 'log_id'は別の文字列です。 – j9dy