2015-01-20 33 views
0

我想知道在Cassandra中實現有效的從/到數據過濾的最佳方式是什麼。Cassandra - valid_from/valid_to查詢

我需要一個記錄表,只有在某個時間窗口有效的記錄 - 總是定義。每個這樣的記錄都不會超過3個月。

我想有這樣的(OFC更少)的結構:

用戶id BIGINT, validFrom時間戳(或者拆分成多列,如:FROM_YEAR,FROM_MONTH等是否有幫助) validTo時間戳(或如上) someCollection集合

所有查詢都將由userId,validFrom,validTo執行。我知道在Cassandra(包括PK和集羣密鑰)中查詢的限制,但也許我錯過了CQL中可用的一些技巧或巧妙的用法。

任何幫助表示讚賞!

回答

1

您可以通過validFrom進行選擇,但可以通過validTo TTL數據來確保您在應用中需要過濾的記錄數量不會太大。但是,根據每個用戶有多少記錄,這可能會導致很多墓碑。

+0

這聽起來很不錯。 TTL必須根據插入時間和有效期來計算。必須檢查我們是否可以使其足夠精確(因爲TTL在幾秒鐘內)。 – 2015-01-21 11:09:30

+1

不會有那麼多的墓碑。也許幾百萬/月。如果我在2.1.x中使用DateTiered壓縮策略,它不會是一個大問題。 – 2015-01-21 11:20:13

+0

我也在考慮通過valid_to進行過濾(search_date <= valid_to)。當然,過濾的一部分必須在內存中完成,但不應該太多這樣的行。 – 2015-01-21 11:52:41