Cassandra:默认情况下,ASC顺序中的聚类键是否以宽行排序?

时间:2015-02-12 15:39:17

标签: cassandra cql

假设我们在Cassandra中有这样的行键

国家+州+城市 国家是分区密钥,州和城市是集群密钥。

所以我插入这样的记录

India , Himachal,  Manali
India , Karnataka,  Mysore
India , Karnataka,  Bagalkot 
India , Maharashtra,  Pune 
India  , Maharashtra  , Mumbai
India  , Maharashtra  , Nagpur
India  , Maharashtra  , Kolhapur
India , Karnataka,  Bangalore 
India , Himachal,  Shimla
USA , California , San Jose 
USA , California , palo alto 

在cassandra广行键中将是印度,美国但聚类键是州+城市 所以,当我读取数据时,我会按升序获得州和城市吗?比如

India , Himachal,  Manali
India , Himachal,  Shimla
India , Karnataka,  Bagalkot 
India , Karnataka,  Bangalore 
India  , Maharashtra  , Kolhapur
India  , Maharashtra  , Mumbai
India , Maharashtra,  Pune 

USA , California , palo alto 
USA , California , San Jose 

Cassandra有望阅读吗?按顺序聚类键?

简而言之,Cassandra可以被视为数据结构吗?

Map<State sortedMap<state , sortedMap<city , value >>>

2 个答案:

答案 0 :(得分:2)

默认的群集顺序确实是通过CREATE TABLE文档提升:

  

您可以订购查询结果以使用磁盘的磁盘排序。您可以按升序或降序订购结果。升序将比降序更有效。如果需要按降序排列结果,则可以指定一个集群顺序,以按默认值的相反顺序在磁盘上存储列。降序查询将比升序查询更快。

Map<country, sortedMap<state, sortedMap<city, value>>

如果您的主键是(国家,州,城市),那么您的地图解释似乎是正确的。

答案 1 :(得分:1)

默认情况下,群集顺序确实是升序,但可以在创建表格期间进行配置

create table TABLE_NAME (
  Partionkey_event text,
  ClusterKey_time timestamp,
  ....,
  PRIMARY KEY (Partionkey_event, ClusterKey_time)
)
WITH CLUSTERING ORDER BY (ClusterKey_time DESC);

对于升序,您可以停止指定将升序的聚类顺序。或者你可以指定如下

create table TABLE_NAME (
  Partionkey_event text,
  ClusterKey_time timestamp,
  ....,
  PRIMARY KEY (Partionkey_event, ClusterKey_time)
)
WITH CLUSTERING ORDER BY (ClusterKey_time ASC);

更多信息: http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/refClstrOrdr.html