代码之家  ›  专栏  ›  技术社区  ›  eagertoLearn

cassandra中列的默认排序顺序?

  •  3
  • eagertoLearn  · 技术社区  · 10 年前

    我正在学习教程,老师说,一行中的列的默认顺序是 UTF8-tye 。但他没有进一步提及。

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

    此外,我如何将列的排序顺序指定为“UTF8类型”以外的其他类型。

    2 回复  |  直到 10 年前
        1
  •  3
  •   Carlo Bertuccini    10 年前

    他说的是列名,而不是列值。 在旧的cassandra版本中,可以使用SuperColumns,这是Row中列的集合。类似于:

    { 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,“文本”(“a”<“t”<“v”)将位于作者和投票之间

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

    然而,我认为你看到的是一个旧视频,因为这个概念在新版本中不再使用

    卡洛·HTH

        2
  •  1
  •   Grigore Madalin    7 年前

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

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

    官方文档对快速阅读者来说有点不清楚(注意“默认”魔法关键字):

    排序结果

    您可以对查询结果进行排序,以利用磁盘上的排序 柱。您可以按升序或降序排列结果。这个 升序将比降序更有效。如果您需要 结果按降序排列,可以指定聚类顺序 按与 违约 .降序 然后查询将比升序查询更快。

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