我不确定这是Cassandra
的具体问题还是属于PHP
,所以我很抱歉标记PHP
。
所以基本上我按列名称排序一些长行列,如下所示:
2012-01-01_aa_99999 | 2012-01-01_aaa | 2012-01-12_aaaaa
所以这是我希望它工作的方式,但我不明白它是如何实际订购这些字符串的。
我不清楚的是,第一个字符串2012-01-01_aa_99999
似乎比其余两个更大,我担心在某些时候它可能会忽略字符串的第一部分 date 并将一些字符串放在他们不应该属于的地方。
在我的情况下,这些字符串由相当多的部分组成,所以我真的很关心这个,所以基本上我需要一些解释如何在内部进行这种排序。
答案 0 :(得分:2)
我不明白它是如何命令这些字符串的。
您提供的字符串似乎是lexicographically ordered。
答案 1 :(得分:1)
我有同样的问题,因为我想构建一个具有良好理解的排序能力的复合主键索引。事实证明,Cassandra似乎使用byte-by-byte binary comparison来比较UTF-8字符串......从逻辑角度来看,这确实是一个完全破坏的排序函数。例如,如果字符串中包含混合的ASCII和汉字字符,则排序顺序实际上是随机的。但是,只要知道此排序顺序,就可以围绕它设计使用模式。
当然,这可以很容易地修复,并且几乎可以单行更改代码以修补"真正的"排序功能。当然,这需要额外的CPU时间。