Belirli bir fiziksel düğümde, belirli bir bölüm anahtarı için satırlar, kümeleme anahtarlarının neden olduğu sıraya göre kaydedilir; böylece, bu kümeleme sırasındaki satırların alınması özellikle verimli olur. http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt Kümeleme anahtarları tarafından ne tür bir sipariş yaratılıyor?Cassandra'da Kümeleme Anahtarları
cevap
sizin kümeleme tuşları ki i'inci anahtar adıdır ve ti i anahtar türüdür
k1 t1, k2 t2, ..., kn tn
olduğunu varsayalım. Daha sonra, sipariş verisi depolandığında, her bir boyutun bu tür için karşılaştırıcı kullanılarak karşılaştırıldığı sözcüksel sıralamadır. Yani
(a1, a2, ..., an) < (b1, b2, ..., Bn) a1 < b1 kullanılarak t1 karşılaştırıcı veya a1 = b1 ve a2 < b2 kullanılarak t2 karşılaştırıcı olması durumunda veya (t3 karşılaştırıcısı kullanılarak a1 = b1 ve a2 = b2) ve a3 < b3, vs ..
Bu, verilerin birlikte depolandığından, belirli bir k1 = a ile tüm satırları bulmanın etkili olduğu anlamına gelir. Ancak, i> 1 için ki = x ile tüm satırları bulmak yetersiz kalıyor. Aslında böyle bir sorguya izin verilmiyor - izin verilmeyen ilk kümeden başlayarak sıfırdan veya daha fazla kümelenme anahtarını belirtmesine izin verilen tek küme anahtarı kısıtlamaları .
Örneğin, şema düşünün
create table clustering (
x text,
k1 text,
k2 int,
k3 timestamp,
y text,
primary key (x, k1, k2, k3)
);
aşağıdaki uçlar yaptıysak:
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');
sonra
onlar diskte bu sırayla depolanır (sipariş select * from clustering where x = 'x'
döner):
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
siparişi bastırmaları, daha sonra k2
, daha sonra k3
.
Teşekkürler Richard. Bir örnek verebilir misiniz lütfen? – Vinodh
Cevabım için bir örnek ekledim. – Richard
Çok teşekkürler Richard. Örneğinizden, kümeleme sütunlarını ve CQL belgelerini "PRIMARY KEY konuları için sütunların tanımlandığı sıralamayı" anlayabiliyorum. http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt. – Vinodh