Cassandra仅按日期范围查询数据的最佳实践?

Cassandra仅按日期范围查询数据的最佳实践?,cassandra,Cassandra,我计划在Cassandra中存储日志记录,主要需要能够按日期范围查询它们。我的主键是基于时间的UUID。我见过很多例子,除了一些键之外,还允许按日期范围进行过滤,但是有没有办法只按日期范围高效地查询,而不使用这样的键,也不使用有序分区器?否,分区键(主键的第一个元素)允许将查询路由到适当的节点,而不是扫描整个集群。然而,如果分区仍然是相同的,那么数据将不会分布在集群上,少数节点将获得工作负载。您可以创建如下表: create table log ( log_type text, da

我计划在Cassandra中存储日志记录,主要需要能够按日期范围查询它们。我的主键是基于时间的UUID。我见过很多例子,除了一些键之外,还允许按日期范围进行过滤,但是有没有办法只按日期范围高效地查询,而不使用这样的键,也不使用有序分区器?

否,分区键(主键的第一个元素)允许将查询路由到适当的节点,而不是扫描整个集群。然而,如果分区仍然是相同的,那么数据将不会分布在集群上,少数节点将获得工作负载。您可以创建如下表:

create table log (
   log_type text,
   day text, -- In format YYYY-MM-DD for instance
   id timeuuid,
   message text,
   primary key ((log_type, day), id)
)
然后根据日期范围,您可以确定日期值和可能的分区键。在timeuiid上添加要完成的条件:

select * from log where log_type='xxx' and day='2014-02-19' and dateOf(id)>? and dateOf(id)<?
select * from log where log_type='xxx' and day='2014-02-20' and dateOf(id)>? and dateOf(id)<?
select * from log where log_type='xxx' and day='2014-02-21' and dateOf(id)>? and dateOf(id)<?

你能给我们你的专栏家庭结构吗?我还没有-这就是我希望这个问题的答案能帮助我设计的。这可能是可行的。使用日期筛选的原因之一是,在加载到Cassandra后,可以将索引编入elasticsearch,并从上次索引任务停止的位置恢复索引。这应该实现这一目标。我还不打算接受这个答案,但如果没有更好的答案,我可能会接受。
select * from log where dateOf(id)>? and dateOf(id)<? allow filtering