2016-10-29 54 views
0

我有一個3節點datastax cassandra(社區)羣集與巨大的數據。我有幾張桌子,裏面有3-5億條記錄。我想從這些表中刪除超過90天的數據。Cassandra選擇無超時查詢

問題是我該如何運行無超時運行的select查詢。我目前正在運行下面的查詢

NOW = $(日期-d 「 - 3月」 + 「%Y-%間%d」)
從table_name的選擇day_ts其中minute_ts < '$ NOW' LIMIT 100000 ALLOW過濾;

即使我限制選擇查詢結果,它仍然會解析整個3-5億條記錄,然後過濾數據。

請建議什麼可以是一個有效的方法來做到這一點。

回答

0

這是設計。 「允許篩選」查詢不會縮放。您應該更改數據模型以滿足您的查詢。如果您繼承了此模型,則必須讀取整個數據集並使用不同的模型再次存儲。有沒有逃生...

+0

同意@ xmas79,你需要過濾holw dataser並將其轉移到不同的模型;在新模型上確保TTL(生存時間)設置正確,以便將來不會出現此問題 –

+0

這是我的表結構。 –

+0

CREATE TABLE table_name(srcip inet,log_datemin timestamp,id uuid,PRIMARY KEY(srcip,log_datemin,id)WITH CLUSTERING ORDER BY(log_datemin ASC,id ASC)AND caching ='{「keys」:「ALL」,「rows_per_partition」 :「NONE」}'AND comment =''AND default_time_to_live = 0 AND gc_grace_seconds = 864000 AND read_repair_chance = 0.0 AND speculative_retry = '99 .PERCENTILE'; –