在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有什么区别?
DataStax建议使用面向查询的数据建模方法,其中结果按查询时所需的顺序存储.此顺序由[复合]主键的分区键和第一个聚类列确定.该条款的DataStax文档ORDER BY
解释了这一点:
查询复合主键和排序结果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
条款的模块.