在cassandra中创建表时,我们可以给出如下所示的聚类键。
Create table user(partitionkey int, id int, name varchar, age int, address text,
insrt_ts timestamp,
Primary key(partitionkey, name, insrt_ts, id)
with clustering order by (name asc, insrt_ts desc, id asc);
当我们将数据插入该表时,根据cassandra文档记录基于聚类键进行排序。
当我使用CQL1和CQL2检索记录时,我的排序顺序相同。
CQL1:
Select * from user where partitionkey=101;
CQL2:
Select * from user where partitionkey=101 order by name, insrt desc, id;
CQL1和CQL2有什么区别?
答案 0 :(得分:6)
DataStax建议使用面向查询的数据建模方法,其中结果按查询时所需的顺序存储。此顺序由[复合]主键的分区键和第一个聚类列确定。 DataStax doc on the ORDER BY
clause解释了这一点:
查询复合主键和排序结果ORDER BY子句 只能选择一列。那一栏必须是第二栏 复合PRIMARY KEY中的列。这也适用于表格 主键中有两个以上的列组件。订购即可 以升序或降序完成,默认升序,和 使用ASC或DESC关键字指定。
在ORDER BY子句中,请参阅 使用实际名称而不是别名的列。
例如,设置 播放列表表格,它使用复合主键,插入 示例数据,并使用此查询获取有关特定信息的信息 播放列表,按song_order排序。从Cassandra 1.2开始,你不需要 在select表达式中包含ORDER BY列。
所以基本上你只能通过要求ASCending或DESCending命令改变它。
您还可以在DataStax Ac*ademy查看使用Apache Cassandra在线课程的(免费)Java开发。我认为第3节提供了ORDER BY
条款的模块。