1

我不确定这是否是特定问题,Cassandra或者这也可以属于,PHP所以我很抱歉标记PHP

所以基本上我按列名对一些长行列进行排序,如下所示:

2012-01-01_aa_99999  |  2012-01-01_aaa  |  2012-01-12_aaaaa

所以这是我希望它工作的方式,但我不明白它实际上是如何订购这些字符串的。

我不清楚的是第一个字符串2012-01-01_aa_99999似乎比其余两个大得多,我担心在某些时候它可能会忽略字符串的第一部分,即日期并将一些字符串放在不应该的地方属于。

在我的情况下,这些字符串由很多部分组成,所以我真的很关心这个,所以基本上我需要一些解释这个排序是如何在内部发生的。

4

2 回答 2

2

我不明白它实际上是如何订购这些字符串的。

您提供的字符串似乎是按字典顺序排列的。

于 2012-12-04T19:06:58.947 回答
1

我有同样的问题,因为我想构建一个具有易于理解的排序能力的复合主键索引。事实证明,Cassandra 似乎使用逐字节二进制比较来比较 UTF-8 字符串……从逻辑角度来看,这确实是一个完全损坏的排序功能。例如,如果您在字符串中混合了 ASCII 和 Kanji 字符,那么您的排序顺序实际上是随机的。但是,只要知道这种排序顺序,就可以围绕它设计您的使用模式。

当然,这可以很容易地修复,并且几乎只需对代码进行单行更改即可修补“真正的”排序功能。当然,这将需要一些额外的 CPU 时间。

于 2014-01-23T21:56:35.437 回答