所以我有一张桌子,看起来像:
CREATE TABLE schema.table (
partitionkey int,
clusterkey text,
value bigint,
PRIMARY KEY ((partitionkey), clusterkey)
);
我们依靠这个表来按clusterkey
for分页正确排序。
问题是:当从 cassandra 返回结果时,看起来它们是根据它们的 ASCII 值排序的,而不是逻辑 AZ 排序。- 对于观看它的人来说,这在程序上是有意义的,但在逻辑上是不合理的。
所以一个查询:
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
我知道我们可以将数据更改为全部小写/大写以正确排序,但这会改变数据的外观。- 这绝对是不想要的。
是否可以选择更改当前聚类顺序的方法?
- 或另一种逻辑排序方式?