Cassandra 如何对静态列族进行排序

Posted

技术标签:

【中文标题】Cassandra 如何对静态列族进行排序【英文标题】:How is Cassandra sorting static column families 【发布时间】:2014-11-04 16:27:45 【问题描述】:

据我所知,比较器是在列族级别指定的。到目前为止,我已经将它与动态列(宽行)一起使用。当您使用 CQL 创建静态列族时,Cassandra 使用哪种类型的比较器?

CREATE TABLE songs (
  id uuid PRIMARY KEY,
  title text,
  album text,
  artist text,
  data blob
);

如果您将复合键放入组合中会发生什么。

CREATE TABLE songs (
  id uuid,
  title text,
  album text,
  artist text,
  data blob,
  PRIMARY KEY ((id, title), album)
);

【问题讨论】:

【参考方案1】:

http://cassandra.apache.org/doc/cql3/CQL.html#createTablepartitionClustering

http://www.datastax.com/documentation/cql/3.1/cql/ddl/ddl_compound_keys_c.html

在给定的物理节点上,给定分区键的行按集群列的顺序存储。

所以在第二种情况下,您的分区键是(id, title),集群键是album,这意味着给定分区键的所有行都将按album排序存储

【讨论】:

好的,但是如果您没有在列族上指定比较器,那么非主键列是如何排序的。排序对于能够进行切片很重要。但我认为它只是使用org.apache.cassandra.db.marshal.UTF8Type 是的,它们是按列名排序的

以上是关于Cassandra 如何对静态列族进行排序的主要内容,如果未能解决你的问题,请参考以下文章

使用 MapReduce 作业高效处理 Cassandra 列族中的所有数据

如何解决 Cassandra 中的问题“ConfigurationException:列族 ID 不匹配”

如何在 cassandra 2.0.5 中删除表或列族?

Cassandra 列族大于节点驱动空间

Cassandra中的行排序

如何在 cassandra 中追溯列族的大分区