2010-02-06 137 views
17

我們正在考慮使用卡桑德拉來存儲來自各種來源的信息流。卡桑德拉時間系列數據

我們正面臨的一個問題是查詢兩個日期之間的最佳方式。

例如,我們需要檢索datetime dt1和datetime dt2之間的對象。

我們目前正在考慮將創建的unix時間戳作爲指向實際對象的關鍵字,然後使用get_key_range進行查詢以檢索?

顯然這不會工作,如果兩個項目具有相同的時間戳。

這是在noSQL商店中做日期時間的最佳方式嗎?

+2

對於最終如何建模您的數據感到好奇嗎?我們正在尋找類似的東西,並試圖收集最佳做法等。 – AlexGad 2012-09-06 17:48:55

回答

15

Cassandra行可能非常大,因此可以考慮將它建模爲一行中的列而不是CF中的行;那麼你可以使用列切片操作,它比行切片更快。如果沒有與此相關的「自然」鍵,則可以使用「2010/02/08 13:00」等日常或小時鍵。

否則,是的,使用範圍查詢(get_key_range已棄用0.5;使用get_range_slice)是您的最佳選擇。

+1

有多大?在http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo的演示幻燈片41中,您會說0.5「每行數百萬列」。連續的列仍然是真正大時間系列的途徑嗎? – 2010-03-12 14:15:19

+0

是的,專欄是要走的路。 – z8000 2010-03-25 19:55:24

+0

使用列而不是行的原因是分區?由於RandomPartitioner不保留順序,而ByteOrderedPartitioner創建熱點。但不是基於行鍵的分區?意思是如果我們將大量的列存儲到單個行中,它也會遭受熱點問題? – 2011-11-02 11:00:44