Cassandra聚类键顺序

时间:2018-05-25 02:24:26

标签: cassandra sql-order-by clustering-key

所以我的表格看起来像是:

CREATE TABLE schema.table (
  partitionkey int,
  clusterkey text,
  value bigint,
  PRIMARY KEY ((partitionkey), clusterkey)
);

我们依靠此表格按clusterkey分页进行正确排序 问题是:当从cassandra返回结果时,看起来它们是根据它们的ASCII值而不是逻辑A-Z排序进行排序的。 - 对于查看它的人来说,这是编程有意义的,但不是逻辑上的。

所以查询:
SELECT clusterkey FROM schema.table WHERE partitionkey = 1 ORDER BY clusterkey ASC;
得到左边的结果,当我期待像右边的那样

---------(current)---                ----------(wanted)---
          clusterkey                           clusterkey 
---------------------                ---------------------
       Other capital                      a should be top 
     Starts capital1                        Other capital 
     Starts capital2                      Starts capital1 
     Starts capital3                      starts capital1 
     Starts capital4                      Starts capital2 
        YYYYYYYYYYYY                      Starts capital3
        ZZZZZZZZZZZZ                      Starts capital4 
     a should be top                         YYYYYYYYYYYY 
     starts capital1                         ZZZZZZZZZZZZ 
        zzzzzzzzzzzz                         zzzzzzzzzzzz

据我所知,我们可以将数据更改为全部小写/大写以正确排序,但这会改变数据的外观。 - 绝对不需要。

是否可以选择更改当前群集顺序的方法?
- 或其他逻辑排序方式?

2 个答案:

答案 0 :(得分:1)

不,除了使聚类列更低/更高外,没有办法让它排序不区分大小写。如果您担心数据的外观,您可以始终在附加列中保留未修改的文本(是的,它将复制数据),并将其显示给用户,而不是此群集列。

答案 1 :(得分:1)

群集列按字典顺序排序,这意味着大写字符优先于小写。

Cassandra在当前版本中不支持不区分大小写的排序,但Cassandra社区Provide a locale/collation-aware text comparator要求增强功能到目前为止它没有得到开发者社区的太多关注。