Cassandra 卡桑德拉:排序问题,;订购是错误的
我有一个关于卡桑德拉的问题。目前,通过column1排序,18位uuid上的“entities_by_time”是可以的,但uuid升序到19位排序时出现了一些问题。请帮帮我Cassandra 卡桑德拉:排序问题,;订购是错误的,cassandra,cql,Cassandra,Cql,我有一个关于卡桑德拉的问题。目前,通过column1排序,18位uuid上的“entities_by_time”是可以的,但uuid升序到19位排序时出现了一些问题。请帮帮我 cqlsh:minds> select * from entities_by_time where key='activity:user:990192934408163330' order by column1 desc limit 10; key | co
cqlsh:minds> select * from entities_by_time where key='activity:user:990192934408163330' order by column1 desc limit 10;
key | column1 | value
----------------------------------+--------------------+--------------------
activity:user:990192934408163330 | 999979571363188746 | 999979571363188746
activity:user:990192934408163330 | 999979567064027139 | 999979567064027139
activity:user:990192934408163330 | 999979562764865555 | 999979562764865555
activity:user:990192934408163330 | 999979558465703953 | 999979558465703953
activity:user:990192934408163330 | 999979554170736649 | 999979554170736649
activity:user:990192934408163330 | 999979549871575047 | 999979549871575047
activity:user:990192934408163330 | 999979545576607752 | 999979545576607752
activity:user:990192934408163330 | 999979541290029073 | 999979541290029073
activity:user:990192934408163330 | 999979536990867461 | 999979536990867461
activity:user:990192934408163330 | 999979532700094475 | 999979532700094475
cqlsh:minds> select * from entities_by_time where key='activity:user:990192934408163330' order by column1 asc limit 10;
key | column1 | value
----------------------------------+---------------------+---------------------
activity:user:990192934408163330 | 1000054880351555598 | 1000054880351555598
activity:user:990192934408163330 | 1000054884671688706 | 1000054884671688706
activity:user:990192934408163330 | 1000054888966656017 | 1000054888966656017
activity:user:990192934408163330 | 1000054893257429005 | 1000054893257429005
activity:user:990192934408163330 | 1000054897552396308 | 1000054897552396308
activity:user:990192934408163330 | 1000054901843169290 | 1000054901843169290
activity:user:990192934408163330 | 1000054906138136577 | 1000054906138136577
activity:user:990192934408163330 | 1000054910433103883 | 1000054910433103883
activity:user:990192934408163330 | 1000054914723876869 | 1000054914723876869
activity:user:990192934408163330 | 1000054919010455568 | 1000054919010455568
CREATE TABLE minds.entities_by_time (
key text,
column1 text,
value text,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 ASC)
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 = {'enabled': 'false'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.0
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.1
AND speculative_retry = '99PERCENTILE';
通过调查发现,在卡桑德拉,1007227353832624141少于963426376394739730。为什么?给克里斯打个好电话!表定义说明了一切!我重新创建了您的表,并在两个方向上运行查询排序:
flynn@cqlsh:stackoverflow> SELECT * FROM entities_by_time
WHERE key='activity:user:990192934408163330' ORDER BY column1 DESC;
key | column1 | value
----------------------------------+---------------------+---------------------
activity:user:990192934408163330 | 999979571363188746 | 999979571363188746
activity:user:990192934408163330 | 999979567064027139 | 999979567064027139
activity:user:990192934408163330 | 963426376394739730 | 963426376394739730
activity:user:990192934408163330 | 1007227353832624141 | 1007227353832624141
activity:user:990192934408163330 | 1000054884671688706 | 1000054884671688706
activity:user:990192934408163330 | 1000054880351555598 | 1000054880351555598
(6 rows)
flynn@cqlsh:stackoverflow> SELECT * FROM entities_by_time
WHERE key='activity:user:990192934408163330' ORDER BY column1 ASC;
key | column1 | value
----------------------------------+---------------------+---------------------
activity:user:990192934408163330 | 1000054880351555598 | 1000054880351555598
activity:user:990192934408163330 | 1000054884671688706 | 1000054884671688706
activity:user:990192934408163330 | 1007227353832624141 | 1007227353832624141
activity:user:990192934408163330 | 963426376394739730 | 963426376394739730
activity:user:990192934408163330 | 999979567064027139 | 999979567064027139
activity:user:990192934408163330 | 999979571363188746 | 999979571363188746
(6 rows)
所以对于你的问题
在卡桑德拉,1007227353832624141小于963426376394739730。为什么?
简单地说,因为9>1,这就是原因。
您的表定义聚集在第1列
,这是一个文本/UTF8字符串,而不是一个数字。本质上,Cassandra是以它知道的唯一方式对字符串进行排序的——ASCII字母顺序,而不是字母数字顺序
将数字存储为数字,排序将以更可预测的方式进行。“出错”是模糊的。通过详细阐述你所看到的错误,帮助不太熟悉的读者理解问题。此外,考虑使用预格式化工具来格式化错误消息。编辑您的问题并查看格式帮助。它将单空格的东西,这是特别有用的,当表一样的数据正在呈现。他们看起来都正确排序。你能详细说明一下你希望看到的不同点吗?排序顺序是正确的。检查所有数字,而不仅仅是列值中的最后4或5。通过排序“column1”找到。使用desc排序,“99979571363188746”是第一个,使用asc排序,“1000054803555598”是第一个。但“1000054803555598”比“99979571363188746”大。@JimWartnick通过排序“column1”找到。使用desc排序,“99979571363188746”是第一个,使用asc排序,“1000054803555598”是第一个。但“1000054803555598”大于“99979571363188746”。