cassandra中列的默认排序顺序?

时间:2014-08-01 18:41:13

标签: cql3 cassandra-2.0

我正在阅读教程,其中教师说连续列的默认排序是UTF8-tye。但他没有进一步触及它。

我不明白这意味着什么。特别是如果我的列是不同的类型,例如inttimestamp等。

另外,我如何将列上的排序顺序指定为" UTF8-type"以外的其他类型。

2 个答案:

答案 0 :(得分:3)

他正在讨论列名,而不是列值。 在旧的cassandra版本中,您可以使用SuperColumns,它是行中列的集合。像这样:

{ RowKey: 
   { SuperColumn1Key: {c1:v, c2:v .... } },
   { SuperColumn2Key: {c1:v, c2:v .... } },
   { SuperColumn3Key: {c1:v, c2:v .... } }
}

这与今天的广泛类似。比较器可以在一行中建立超级列的排序,也可以按名称对列进行排序(您可以在SuperColumnFamily中选择两个不同的比较器,一个用于超级列排序,另一个用于列排序)。例如,对于超级列使用TimeUUID比较器,您可以按时间排序检索它们,而UTF8Type是"字母"排序。

想象一下UTF8 Columns Comparator中的这一行:

{ id: {"author":"john", "vote": 3} }

现在让我们添加一个新列,比如文字。因为它是utf8," text" (" a"<" t"<" v")将在作者和投票之间

{ id: {"author":"john", "text": "blablabla", "vote": 3} }

但是我觉得你所看到的是一段旧视频,因为这个概念在新版本中不再使用

HTH,Carlo

答案 1 :(得分:0)

简短回答是:Cassandra中的默认聚类顺序是升序(ASC)。

默认情况下,未指定聚类顺序的Cassandra表针对升序SELECT查询进行了优化。如果需要使用降序查询执行查询,则可以指定一个聚类顺序,以按照DEFAULT的相反顺序在磁盘上存储列。

官方文档说明这对于快速读者来说有点不清楚(请注意"默认" magic关键字):

  

订购结果

     

您可以订购查询结果以使用磁盘上的排序   列。您可以按升序或降序订购结果。该   升序将比降序更有效。如果你需要   结果按降序排列,您可以指定聚类顺序   按默认的相反顺序在磁盘上存储列。降序   然后查询将比提升查询更快。

http://docs.datastax.com/en/cql/3.1/cql/cql_reference/create_table_r.html?scroll=reference_ds_v3f_vfk_xj__ordering-results