cassandra中列的默认排序顺序?

Posted

技术标签:

【中文标题】cassandra中列的默认排序顺序?【英文标题】:default sorting order of columns in cassandra? 【发布时间】:2014-08-01 18:41:12 【问题描述】:

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

我不明白这是什么意思。特别是如果我的列是不同的类型,例如inttimestamp 等,该怎么办?

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

【问题讨论】:

【参考方案1】:

他说的是列名,而不是列值。 在旧的 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,“text”(“a”

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

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

HTH,卡罗

【讨论】:

这里还有一个问题:***.com/questions/25089013/…【参考方案2】:

简短的回答是: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

【讨论】:

以上是关于cassandra中列的默认排序顺序?的主要内容,如果未能解决你的问题,请参考以下文章

postgres表中列的顺序是否会影响性能?

列存储索引中列的顺序在 SQL Server 2012 中是不是重要

如何更改pyspark数据框中列的顺序?

使用 R [重复] 更改数据框中列的顺序

如何将sqlalchemy中列的默认值设置为关系中列的值?

Big Query Tables 中列的默认值