Nosql Cassandra CQL时间范围查询
我有一个Cassandra列系列,其中每月存储大量(数十万)事件,时间戳(“Ymdhisu”)作为行键。它有多个列,为每个事件捕获一些数据。我尝试检索特定时间范围内的事件数据。例如,对于一月,我使用了以下CQL查询: a) 查询范围为2013年1月1日至1月15日 从测试中选择count(*),其中Key>2013010100000000和Key< 2013011507100000000限额100000;错误请求:启动密钥的md5排序 在结束键的md5之后。这是不允许的;你可能不应该 在RandomPartitioner下指定结束键 b) 查询范围为2013年1月1日至1月10日 从测试中选择count(*),其中Key>2013010100000000和Key< 201301110070100000000限额100000;计数-73264 c) 查询范围为2013年1月1日至1月2日 从测试中选择count(*),其中Key>2013010100000000和Key< 2013010207010000000限额100000;计数-78328 似乎范围搜索根本不起作用!我的Columnfamily的架构是:Nosql Cassandra CQL时间范围查询,nosql,cassandra,bigdata,cql,Nosql,Cassandra,Bigdata,Cql,我有一个Cassandra列系列,其中每月存储大量(数十万)事件,时间戳(“Ymdhisu”)作为行键。它有多个列,为每个事件捕获一些数据。我尝试检索特定时间范围内的事件数据。例如,对于一月,我使用了以下CQL查询: a) 查询范围为2013年1月1日至1月15日 从测试中选择count(*),其中Key>2013010100000000和Key< 2013011507100000000限额100000;错误请求:启动密钥的md5排序 在结束键的md5之后。这是不允许的;你可能不应该 在Rand
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类型的模式?有没有其他方法可以在不更改模式的情况下高效查询?
在这个专栏系列中,我每月处理至少10-20万行数据。如果此模式不适用于此目的,那么存储和检索此处描述的数据类型的合适Cassandra模式是什么?您可以创建二级索引,如“日期”和“月份”,并将每个事件的日期和月份与其他数据一起存储在这些列中。查询数据时,可以获取指定月份或天数内的所有行
我认为对键的范围查询不起作用。也许如果您将分区器从RandomPartitioner更改为ByteOrderedPartitioner?谢谢您的回复!我希望能够使用Cassandra timestamp进行时间范围查询,而不是添加静态列“date”和“month”。卡桑德拉用每一条记录更新时间戳。这将为我节省更新模式和使用CQL从当前数据库池检索数据的额外成本