2016-10-29 13 views
0

私は巨大なデータを持つ3ノードdatastax cassandra(コミュニティ)クラスタを持っています。私はそれらに3-50億レコードを含むいくつかのテーブルを持っています。これらのテーブルから90日以上経過したデータを削除したいとします。Cassandraタイムアウトなしのクエリを選択

問題は、タイムアウトなしで実行される選択クエリを実行する方法です。私は現在、クエリの下に実行しています

NOW = $(日付-d "-3ヶ月" + "%Y-%M-%D")minute_tsは< '$今すぐ' LIMIT 100000が認めTABLE_NAMEから
選択day_tsフィルタリング;

私が選択したクエリの結果を制限しても、30〜50億レコード全体を解析してからデータをフィルタリングします。

これを効率的に行う方法を提案してください。

答えて

0

これは仕様です。 「ALLOW FILTERING」クエリの縮尺は変化しません。クエリを満たすためにデータモデルを変更する必要があります。このモデルを継承した場合は、データセット全体を読み込み、別のモデルで再度保存する必要があります。エスケープはありません...

+0

@ xmas79と合意して、あなたはholw dataserverをフィルタリングし、それを別のモデルに転送する必要があります。新しいモデルでTTL(Time to live)が正しく設定されていることを確認して、今後この問題が発生しないようにしてください。 –

+0

ここに私のテーブル構造があります。 –

+0

CREATE TABLE TABLE_NAME(ログIDのASC、ID ASC)とキャッシュ= '{"キー": "ALL"、 "rows_per_partition" : "NONE"} 'AND' = 'AND default_time_to_live = 0 AND gc_grace_seconds = 864000 AND read_repair_chance = 0.0 AND speculative_retry = '99 .0PERCENTILE'; –

関連する問題