我是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;
但结果没有任何排序效果:
当我尝试通过m_date订购时,我遇到了这个问题:
请帮助我,这让我很困惑。
由于
答案 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。你能描述一下你想要解决的任务吗?我相信你需要改变数据模型。