gpt4 book ai didi

nosql - Cassandra CQL 时间范围查询

转载 作者:行者123 更新时间:2023-12-05 01:12:04 25 4
gpt4 key购买 nike

我有一个 Cassandra 列族,我在其中每月存储大量(数十万)事件,以时间戳(“Ymdhisu”)作为行键。它有多个列捕获每个事件的一些数据。我尝试检索特定时间范围内的事件数据。例如,对于一月份,我使用了以下 CQL 查询:

a) 2013年1月1日-1月15日范围内的查询

select count(*) from Test where Key > 20130101070100000000 and Key < 20130115070100000000 limit 100000; Bad Request: Start key's md5 sorts after end key's md5. This is not allowed; you probably should not specify end key at all, under RandomPartitioner



b) 2013年1月1日-1月10日范围内的查询

select count(*) from Test where Key > 20130101070100000000 and Key < 20130110070100000000 limit 100000; count - 73264



c) 2013年1月1日-1月2日范围内的查询

select count(*) from Test where Key > 20130101070100000000 and Key < 20130102070100000000 limit 100000; count - 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};

要提取数据,有什么建议?我是否需要使用 key 验证类将我的架构重新定义为 TimeUUID 类型?有没有其他方法可以在不更改架构的情况下进行有效查询?
我在这个列族中每月至少处理 100-200K 行数据。如果此模式不适用于此目的,那么适合存储和检索此处描述的数据类型的 Cassandra 模式是什么?

最佳答案

您可以创建二级索引,例如“日期”和“月份”,并将每个事件的日期和月份与其他数据一起存储在这些列中。查询数据时,您可以获取指定月份或日期的所有行。

我不认为键上的范围查询会起作用。也许如果您将分区器从 RandomPartitioner 更改为 ByteOrderedPartitioner?

关于nosql - Cassandra CQL 时间范围查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14407468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com