簡體   English   中英

Cassandra CQL時間范圍查詢

[英]Cassandra CQL time range query

我有一個Cassandra列系列,我每月存儲大量(數十萬)個事件,時間戳(“Ymdhisu”)作為行鍵。 它有多列為每個事件捕獲一些數據。 我嘗試檢索特定時間范圍的事件數據。 例如,對於Jan,我使用了以下CQL查詢:

a)2013年1月1日至1月15日之間的查詢

從Test> 20130101070100000000和Key <20130115070100000000 limit 100000中選擇計數(*); 錯誤請求:開始鍵的md5在結束鍵的md5之后排序。 這是不允許的; 你可能根本不應該在RandomPartitioner下指定結束鍵

b)2013年1月1日至1月1日范圍內的查詢

從Test> 20130101070100000000和Key <20130110070100000000 limit 100000中選擇計數(*); 數 - 73264

c)2013年1月1日至1月1日范圍內的查詢

從Test> 20130101070100000000和Key <20130102070100000000 limit 100000中選擇計數(*); 數 - 78328

似乎范圍搜索根本不起作用! 我的Columnfamily的架構是:

Create column family Test with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type AND compression_options={sstable_compression:SnappyCompressor, chunk_length_kb:64};

要提取數據,有什么建議? 我是否需要使用密鑰驗證類重新定義我的模式作為TimeUUID類型? 有沒有其他方法可以有效地查詢而不更改架構? 我在這個專欄系列中每月處理至少100-200K行的數據。 如果此模式不能用於此目的,那么存儲和檢索此處描述的數據類型的Cassandra模式是什么?

您可以創建二級索引,例如“日期”和“月”,並將每個事件的日期和月份與其他數據一起存儲在這些列中。 查詢數據時,您可以獲取指定月份或天數的所有行。

我不認為Keys上的范圍查詢會起作用。 也許你將分區器從RandomPartitioner更改為ByteOrderedPartitioner?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM