题
我正在阅读教程,其中讲师说行中列的默认顺序是 UTF8-tye
. 。但他没有进一步谈及这一点。
我不明白这是什么意思。特别是如果我的列是不同类型的,例如 int
, timestamp
ETC。
另外,我如何将列上的排序顺序指定为“UTF8 类型”以外的其他顺序。
解决方案
他谈论的是列名称,而不是列值。在旧的 cassandra 版本中,您可以使用 SuperColumns,它是行中列的集合。像这样的东西:
{ RowKey:
{ SuperColumn1Key: {c1:v, c2:v .... } },
{ SuperColumn2Key: {c1:v, c2:v .... } },
{ SuperColumn3Key: {c1:v, c2:v .... } }
}
这与今天的宽行类似。比较器可以建立行内超级列的排序,也可以按列的名称对列进行排序(您可以在 SuperColumnFamily 中选择两个不同的比较器,一个用于超级列排序,另一个用于列排序)。例如,对超级列使用 TimeUUID 比较器,您可以检索按时间排序的它们,而 UTF8Type 是“字母”排序。
想象一下 UTF8 列比较器中的这一行:
{ id: {"author":"john", "vote": 3} }
现在让我们添加一个新列,例如文本。由于它是 utf8,“text”(“a”<“t”<“v”)将位于作者和投票之间
{ id: {"author":"john", "text": "blablabla", "vote": 3} }
不过我认为你看到的是一个旧视频,因为这个概念在新版本中不再使用
HTH,卡洛
其他提示
简短的回答是:Cassandra 中的默认聚类顺序是升序 (ASC)。
默认情况下,未指定集群顺序的 Cassandra 表针对升序 SELECT 查询进行优化。如果需要使用降序查询执行查询,您可以指定集群顺序,以与默认顺序相反的顺序将列存储在磁盘上。
官方文档对于快速阅读者来说有点不清楚(请注意“默认”魔术关键字):
订购结果
您可以订购查询结果以利用列的盘式排序。您可以按升序或降序对结果进行排序。上升顺序将比下降更有效。如果您需要以降序的顺序结果,则可以指定一个集群顺序,以以相反的顺序存储在磁盘上 默认. 。然后,降序的查询将比上升的查询更快。