SORU
25 Temmuz 2014, Cuma


Bölüm key, key ve Cassandra kümeleme anahtar arasındaki fark?

Net etrafında makaleler key aşağıdaki türleri arasındaki farkları anlamak için okuyorum. Ama bu beni kavramak için zor görünüyor. Örnekler kesinlikle anlayış daha iyi olmasına yardımcı olacaktır.

primary key,
partition key, 
composite key 
clustering key

CEVAP
25 Temmuz 2014, Cuma


Bu etrafında karışıklık bir çok şey var, mümkün olduğunca basit hale getirmeye çalışacağız.

Birincil anahtar, bir veya daha fazla sütun bir tablodan veri almak için kullanılan belirtmek için genel bir kavramdır.

Birincil anahtar olabilirBASİT

 create table stackoverflow (
      key text PRIMARY KEY,
      data text      
  );

Tek bir sütun tarafından yapılmış olduğu anlamına gelir.

Ama birincil anahtar da olabilirBİLEŞİK(akaBİLEŞİKdaha fazla sütun oluşturulur.

 create table stackoverflow (
      key_part_one text,
      key_part_two int,
      data text,
      PRIMARY KEY(key_part_one, key_part_two)      
  );

Bir durumdaBİLEŞİKbirincil anahtar, "BİRİNCİ BÖLÜM" anahtar " denirBÖLÜM ANAHTARI(bu örnektekey_part_onebölüm kilit ve anahtar ikinci bölümüKÜME ANAHTARI(key_part_two)

Lütfen iki bölüm ve kümeleme anahtarı daha fazla sütuna göre yapılabilir unutmayın

 create table stackoverflow (
      k_part_one text,
      k_part_two int,
      k_clust_one text,
      k_clust_two int,
      k_clust_three uuid,
      data text,
      PRIMARY KEY((k_part_one,k_part_two), k_clust_one, k_clust_two, k_clust_three)      
  );

Arkasında bu isim var

  • Bölüm Anahtarıveri dağıtım sorumlu bezlerine sahiptir.
  • Küme Anahtarıveri bölümü içinde sıralama sorumludur.
  • Birincil Anahtarbu eşdeğerBölüm Anahtarı-alan tek tuşlu bir tablo.
  • Kompozit/Anahtar Bileşensadece birden çok sütun bir anahtar

Daha fazla kullanım bilgileri: DATASTAX DOCUMENTATION


Ek istekleri nedeniyle DÜZENLEBASİTANAHTAR:

insert into stackoverflow (key, data) VALUES ('han', 'solo');
select * from stackoverflow where key='han';

tablo içeriği

key | data
---- ------
han | solo

KOMPOZİT/BİLEŞİK ANAHTARalabilirsiniz "geniş satır"

insert into stackoverflow (key_part_one, key_part_two, data) VALUES ('ronaldo', 9, 'football player');
insert into stackoverflow (key_part_one, key_part_two, data) VALUES ('ronaldo', 10, 'ex-football player');
select * from stackoverflow where key_part_one = 'ronaldo';

tablo içeriği

 key_part_one | key_part_two | data
-------------- -------------- --------------------
      ronaldo |            9 |    football player
      ronaldo |           10 | ex-football player

Ama anahtar ile sorgulayabilirsiniz ...

select * from stackoverflow where key_part_one = 'ronaldo' and key_part_two  = 10;

sorgu çıktı

 key_part_one | key_part_two | data
-------------- -------------- --------------------
      ronaldo |           10 | ex-football player

ÖNEMLİ NOT: minimum-belirleyici bir sorgu kullanarak gerçekleştirmek için gerekli bölüm anahtar tümcesi. Eğer kompozit bir bölümü anahtar varsa, aşağıdaki gibi

örn: PRIMARY KEY((col1, col2), col10, col4))

Sorgu sadece geçen en az iki Col 1 gerçekleştirmek ve col2, bu bölüm anahtar tanımlayan 2 sütun vardır. "Genel" sırayla her tuşa ekleyebilirsiniz sorgu en azından tüm bölüm anahtar sütunları geçmek zorundasın, o halde kural kümesi yapıyorlar.

geçerli sorgular yüzden (ikincil dizinler hariç)

  • col1 ve col2
  • col1 ve col2 ve col10
  • col1 ve col2 ve col10 ve col 4

geçersiz:

  • col1 ve col2 ve col4
  • hem col1 ve col2 içermeyen bir şey

Bu yardımcı olur umarım

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • PaulGBelliveau

    PaulGBellive

    5 Mart 2009
  • SignatureSeries

    SignatureSer

    24 Aralık 2006