Cassandra 聚类键顺序

Cassandra clustering key order

所以我有一个 table 看起来像:

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

我们依靠这个 table 来按 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

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

是否有更改当前聚类顺序方法的选项?
- 或者另一种逻辑排序方式?

不,除了使聚类列 lower/upper-cased 之外,没有办法使其排序不区分大小写。如果您关心数据的外观,您始终可以在附加列中保留未修改的文本(是的,它会复制数据),并将其显示给用户,而不是这个聚类列。

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

Cassandra 在当前版本中不支持不区分大小写的排序,但 Cassandra 社区要求进行增强 Provide a locale/collation-aware text comparator 到目前为止,开发者社区并未对此给予太多关注。