Sorting 群集顺序不适用于复合分区键
使用下表定义:Sorting 群集顺序不适用于复合分区键,sorting,cassandra,cassandra-3.0,compound-key,Sorting,Cassandra,Cassandra 3.0,Compound Key,使用下表定义: CREATE TABLE device_by_create_date ( year int, comm_nr text, created_at timestamp, PRIMARY KEY ((year, comm_nr), created_at) ) WITH CLUSTERING ORDER BY (created_at DESC) Comm\u nr是唯一标识符 我希望在列中看到按创建的
CREATE TABLE device_by_create_date (
year int,
comm_nr text,
created_at timestamp,
PRIMARY KEY ((year, comm_nr), created_at)
) WITH CLUSTERING ORDER BY (created_at DESC)
Comm\u nr
是唯一标识符
我希望在列中看到按创建的
示例条目:
表CQL:
如何从表中发出select*代码>查询,返回按行创建的排序的数据。TLDR:您需要创建一个新表
您的分区密钥是(年份,通信号)
。您是在键处创建的,但它是在该分区键内排序的。一个查询,其中从表中选择*,其中year=x,comm\u nr=y代码>将由在处创建的\u排序
此外,如果您的键不是在
创建的(year,comm\u nr),而是在
创建的year,comm\u r,created\u at
,即使您的create table语法只指定created\u at具有集群顺序,它也将被创建为具有集群顺序的(comm\u nr DESC,created\u at DESC)
。数据在SSTables中按键从左到右排序
以真正的nosql方式实现这一点的方法是创建一个单独的表,其中的键是year,created\u at,comm\u nr
。您可以在创建用户时写信给他们,但如果您需要先创建帐户的人的答案,您可以查询新表。谢谢!假设我想显示2017年和2018年的所有设备。在本例中,我将发出2个查询-如何分页结果?PagingState仅对每个结果集可用。定制实施?您应该能够通过SELECT*FROM table WHERE year IN(2017年、2018年)…
从应用程序端进行“1次查询”,并以这种方式订购。但是请理解,当1查询试图实现一致性时,它将命中*
节点。因此,您的集群将比在常规查询上做更多的工作。没错,但不鼓励使用IN?或者,您可以在应用层中执行排序的协调(自定义实现),因为通常应用层的扩展性比数据层更好<由于上述缩放问题,不鼓励使用
中的code>。您在协调器节点上投入了更多的工作(内存压力和网络),并且通过一个查询访问了更多的集群。