订购不适用于cassandra

时间:2017-12-08 08:56:39

标签: database cassandra bigdata cqlengine

我是cassandra的新手,我对"排序"有问题。

我的表很简单,就像那样:

CREATE TABLE test.user_daily_report (
    stringdate bigint,
    m_date date,
    users int,
    PRIMARY KEY (stringdate, m_date)
) WITH CLUSTERING ORDER BY (m_date DESC)
   AND read_repair_chance = 0.0
   AND dclocal_read_repair_chance = 0.1
   AND gc_grace_seconds = 864000
   AND bloom_filter_fp_chance = 0.01
   AND caching = { 'keys' : 'ALL', 'rows_per_partition' : 'NONE' }
   AND comment = ''
   AND compaction = { 'class' : 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold' : 32, 'min_threshold' : 4 }
   AND compression = { 'chunk_length_in_kb' : 64, 'class' : 'org.apache.cassandra.io.compress.LZ4Compressor' }
   AND default_time_to_live = 0
   AND speculative_retry = '99PERCENTILE'
   AND min_index_interval = 128
   AND max_index_interval = 2048
   AND crc_check_chance = 1.0;

但结果没有任何排序效果:

enter image description here

当我尝试通过m_date订购时,我遇到了这个问题:

enter image description here

请帮助我,这让我很困惑。

由于

1 个答案:

答案 0 :(得分:2)

与传统的关系数据库相比,Cassandra ORDER BY仅在分区内工作 - 当您在分区键上指定WHERE条件时(在您的示例中为stringdate),即{{ 1}} - 在这种情况下,与特定select * from table where stringdate = 'something' order by m_date desc相关的数据将被排序,因为它们位于同一分区中。

在您的情况下,您已收到Cassandra的所有结果,因为您添加了“允许过滤”#39; - 在这种情况下,Cassandra使用您的条件执行整个群集的扫描,获取数据并将其返回给您 - 但它没有执行任何排序。

我建议观看" DS220:数据建模"来自DataStax Academy的课程 - 它们提供了许多有用的信息......

P.S。你能描述一下你想要解决的任务吗?我相信你需要改变数据模型。