2016-03-27 10 views
0

Cassandra'nın daha eski sürümlerini kullanarak, sütunlar Cassandra'ya göre kaydedildiğinden, özel satır sütununu kullanarak kendi sıralanmış satırları oluşturmamız bekleniyordu.Cassandra'da sadece bir dizi düğüm kullanarak sıralanmış sütunlar mı var? (bir set = tekrarlama faktörü)

PRIMARY KEY oluştururken aynı konsept kullanılarak Cassandra 3.0 CQL kullanıyor mu?

Say, örneğin, ben şöyle bir tablo oluşturun:

CREATE TABLE my_table (
    created_on timestamp, 
    ..., 
    PRIMARY KEY (created_on) 
); 

Sonra ben gibi çeşitli girdileri ekleyin:

INSERT INTO my_table (created_on, ...) VALUES (1, ...); 
... 
INSERT INTO my_table (created_on, ...) VALUES (9, ...); 

Nasıl Cassandra PRIMARY KEY üzerinde sıralama yönetir? Bu, tüm düğümlerde olur mu, yoksa yalnızca bir set (bir kümeyi çağıran kopya sayısıdır, bu nedenle 4'lük bir çoğaltma katsayısına sahip 100 düğüm kümeniz varsa, birincil anahtar 100 düğümde, 25, ya da sadece 4? Eski sürümlerde, sadece 4 düğümde olabilir.)

+1

bu, sorularınızı yanıtlamalıdır: http://www.planetcassandra.org/blog/we-shall-have-order/ –

cevap

2

Sizin durumda birincil anahtar, satır anahtarı olarak kullanılan bölüm anahtarıdır. Bu, çoğaltma faktörünün 4 olarak ayarlanmış olması durumunda, 100 düğümün 4'ünde mevcut olacaktır demektir demektir.

CQL'de, kümeleme anahtarları olarak adlandırılan birincil anahtara daha fazla sütun ekleyebilirsiniz. C * CQL ile sorgulanırken, sonuç kümesi bir bölüm anahtarı için birden fazla satır içerebilir. Bu satırlar mantıksaldır ve bölüm anahtarını paylaştıkları bölümde saklanır (ancak kümeleme anahtarı değerlerinde farklılık gösterir). Bu mantıksal satırlardaki veriler, bölümün olduğu gibi çoğaltılır.

CREATE TABLE ifadesinin resmi belgelerinde olası birincil anahtarların örneğine bakın.

DÜZENLEME (satır sıralama):

C * kendi bölüm anahtar değerleri karma kod için bir tablonun bölümleri tutar. Sıralama düz bir şekilde değil ve bölüm anahtar değerleri ile aralık sorguları için sonuçların beklediğiniz gibi değil. Ancak bölümler aslında sipariş edildiğinden, token function'un yardımıyla sunucu tarafında sayfalama yapabilirsiniz. Bu, bölümlerinizin sözcüksel sıralamasını elde etmek için ByteOrderedPartitioner'u kullanabilir. Ancak, bu bölümleyici ile sıcak noktalar oluşturmak çok kolaydır ve genellikle onu kullanmaktan vazgeçilir.

Belirli bir bölümün satırları, kümeleme anahtarlarının gerçek değerleri tarafından sıralanır. Bunlara ilişkin aralık sorguları, beklediğiniz gibi davranır.

+0

SQL'den geldiğimi görüyorum, bir PRIMARY KEY, durumun söz konusu olmadığı şeylerin sıralanması anlamına gelir. Cassandra, bölümleme anahtarı için değil. –

+1

@AlexisWilke, satırlar kendi bölüm anahtarı ile sıralanır. Güncellenmiş cevabımı görün. – Ralf

İlgili konular