当前位置:  开发笔记 > 前端 > 正文

Cassandra中的聚类键

如何解决《Cassandra中的聚类键》经验,为你挑选了1个好方法。

在给定的物理节点上,给定分区键的行按照聚类键引起的顺序存储,使得在该聚类顺序中检索行特别有效.http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt群集密钥会导致什么样的排序?



1> Richard..:

假设您的群集密钥是

k1 t1, k2 t2, ..., kn tn

其中ki是第i个键名,ti是第i个键类型.然后,订单数据以字典顺序存储,其中使用该类型的比较器比较每个维度.

所以(a1,a2,...,an)<(b1,b2,...,bn)如果a1

这意味着找到具有特定k1 = a的所有行是有效的,因为数据存储在一起.但是,对于i> 1,找到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, k1, k2, k3, y) values ('x', 'a', 1, '2013-09-10 14:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'b', 1, '2013-09-10 13:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'a', 2, '2013-09-10 13:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'b', 1, '2013-09-10 14:00+0000', '1');

然后它们按顺序存储在磁盘上(订单select * from clustering where x = 'x'返回):

 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.


我在答案中添加了一个例子.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有