在给定的物理节点上,给定分区密钥的行以由聚类键引发的顺序存储,使得以该聚类顺序的行的检索特别有效。
http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt聚类键引起什么样的排序?
假设你的群集键是
原文链接:https://www.f2er.com/nosql/203361.htmlk1 t1,k2 t2,...,kn tn
其中ki是第i个密钥名称,ti是第i个密钥类型。然后,订单数据存储在字典排序中,其中每个维度都使用该类型的比较器进行比较。
那么(a1,a2,…,an) (b1,b2,…,bn)如果a1 < b1使用t1比较器,或a1 = b1和a2 < b2使用t2比较器,或(a1 = b1和a2 = b2)和a3 < b3使用t3比较器等。 这意味着找到具有某个k1 = a的所有行是有效的,因为数据被一起存储。但是,对于i>找到ki = x的所有行都是无效的实际上,这样的查询是不允许的 – 允许的唯一的聚类键限制指定零个或多个聚类键,从第一个没有丢失的首先开始。
例如,考虑模式
create table clustering ( x text,k1 text,k2 int,k3 timestamp,y text,primary key (x,k1,k2,k3) );
如果您做了以下插入:
insert into clustering (x,k3,y) values ('x','a',1,'2013-09-10 14:00+0000','1'); insert into clustering (x,'b','2013-09-10 13:00+0000',2,'1');
那么它们按照这个顺序存储在磁盘上(从x =’x’返回的聚类的顺序select *):
x | k1 | k2 | k3 | y ---+----+----+--------------------------+--- x | a | 1 | 2013-09-10 14:00:00+0000 | 1 x | a | 2 | 2013-09-10 13:00:00+0000 | 1 x | b | 1 | 2013-09-10 13:00:00+0000 | 1 x | b | 1 | 2013-09-10 14:00:00+0000 | 1
k1排序主导,然后k2,然后k3。