Cassandra Koleksiyonlar: CQL'de Örnekle Ayarlama, Listeleme ve Haritalama

⚡ Akıllı Özet

Cassandra Koleksiyonlar, küme, liste ve harita türlerini kullanarak tek bir sütun içinde birden fazla değer depolar. Bu sayfa, her türü, bunların oluşturulması ve doldurulması için CQL sözdizimini, öğelerin nasıl güncelleneceğini ve bir koleksiyonun yanlış seçim olup olmadığını belirleyen boyut sınırlarını açıklamaktadır.

  • ???? Üç Tip: Küme (Set) benzersiz, sıralanmamış değerler içerir, liste (list) ekleme sırasını korur ve harita (map) anahtar ve değer çiftlerini saklar.
  • 🔤 Davranışı Ayarla: Öğeler sıralı olarak saklanır ve yinelenenler otomatik olarak atılır.
  • 🔢 Liste Uyarısı: Sıralama korunur, ancak öne ekleme ve indeksleme işlemleri yazmadan önce okuma gerektirir.
  • 🗺️ Harita Kullanımı: Bir harita, şema tasarlanırken anahtarları bilinmeyen özniteliklere uygundur.
  • 📏 Boyut Sınırı: Koleksiyonları küçük tutun; tek bir öğeye ihtiyaç duyulduğunda bile tüm koleksiyon okunur.
  • 🧊 Dondurulmuş Seçenek: Dondurulmuş bir koleksiyon tek bir değer olarak saklanır ve tamamı değiştirilmelidir.

Cassandra Koleksiyonlar Şarkı Listesi Haritası

All ON XNUMX İmplant Tedavisi Nasıl Uygulanır? Cassandra Koleksiyonlar mı?

Cassandra koleksiyonlar görevleri yerine getirmenin iyi bir yoludur. Koleksiyonlarda birden fazla öğe saklanabilir. sınırlamalar vardır Cassandra koleksiyonları.

  • Bir koleksiyon sütunu, tek bir değerde 64 KB'den fazla veri depolayamaz.
  • Koleksiyonu küçük tutmak, sorgulama işleminin getirdiği ek yükü önler; çünkü yalnızca bir öğeye ihtiyaç duyulduğunda bile tüm koleksiyon okunur.
  • 64 KB'den fazla veri depolamak, yalnızca ilk 64 KB'lık verinin sorgulanabileceği anlamına gelir ve bu da veri kaybına yol açar.
  • Dondurulmamış bir koleksiyon yaklaşık 65,535 öğeyle sınırlıdır ve her öğe tek bir birim olarak birlikte okunur.

Bu sınırlamalar tek bir kurala işaret ediyor: koleksiyonlar, kullanımla birlikte büyüyen açık uçlu bir liste yerine, bir satıra bağlı birkaç özniteliğe uygun olmalıdır. Sürekli büyüyen her şey, kendi tablosunun kümeleme sütunlarında yer almalıdır.

Tipleri Cassandra Koleksiyonlar

Temel olarak üç tür koleksiyon vardır: Cassandra destekler:

  1. set
  2. Liste
  3. Harita

Cassandra Koleksiyonu Ayarla

Bir Küme, sorgulama sırasında sıralanmış öğeleri döndüren öğe grubunu saklar.

Sözdizimi

Öğretmene ait birden fazla e-posta adresini depolayan Set koleksiyonunun sözdizimi şöyledir.

CREATE TABLE University.Teacher (
    id int,
    Name text,
    Email set<text>,
    PRIMARY KEY (id)
);

Örnek E-posta

İşte “Öğretmen” tablosunun “E-posta” sütunu koleksiyon olarak oluşturulduğu anlık görüntü.

Örnek Cassandra Koleksiyonu Ayarla

İşte koleksiyona verinin eklendiği anlık görüntü.

Örnek Cassandra Koleksiyonu Ayarla

INSERT INTO University.Teacher (id, Name, Email)
VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});

Koleksiyonu dondurmamanın en büyük avantajı, tüm küme yeniden yazılmadan tek tek öğelerin eklenmesi veya kaldırılmasıdır.

UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1;
UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;

Cassandra Liste Koleksiyonu

Öğelerin sırası önemli olduğunda liste kullanılır.

Örnek E-posta

İşte "Öğretmen" tablosuna liste tipinde "dersler" sütununun eklendiği ekran görüntüsü.

Örnek Cassandra Liste Koleksiyonu

ALTER TABLE University.Teacher ADD coursenames list<text>;

İşte verilerin "kurs adları" sütununa eklendiği anlık görüntü.

Örnek Cassandra Liste Koleksiyonu

INSERT INTO University.Teacher (id, Name, Email, coursenames)
VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);

Eklemeden sonraki mevcut veritabanı durumunu gösteren anlık görüntü buradadır.

Cassandra Liste Koleksiyonu Örneği

Öğeler eklenebilir veya başına eklenebilir, ancak hem başına ekleme hem de dizine göre güncelleme işlemleri gereklidir. Cassandra Listeyi önce okumak, ekleme işlemine göre daha yavaş olmalarına neden olur.

UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2;
UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;

Cassandra Harita Koleksiyonu

Harita, anahtar değer çiftlerini depolamak için kullanılan bir koleksiyon türüdür. Adından da anlaşılacağı gibi bir şeyi diğerine eşler.

Örneğin ders adını önkoşul ders adıyla birlikte kaydetmek istiyorsanız harita koleksiyonu kullanılabilir.

Örnek E-posta

Ders adı ve önkoşul ders adı için harita tipinin oluşturulduğu anlık görüntü buradadır.

Örnek Cassandra Harita Koleksiyonu

CREATE TABLE University.Course (
    id int,
    prereq map<text, text>,
    PRIMARY KEY (id)
);

Harita koleksiyonu türüne verilerin eklendiği anlık görüntü buradadır.

Örnek Cassandra Harita Koleksiyonu

INSERT INTO University.Course (id, prereq)
VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});

Haritanın geri kalanına dokunmadan tek bir giriş eklenir veya kaldırılır.

UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1;
DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;

Küme mi, Liste mi, Harita mı: Bir Koleksiyon Seçmek

Üç tip görünüşte birbirinin yerine kullanılabilir olsa da, sipariş garantileri ve güncelleme maliyetleri açısından farklılık gösterirler.

Görünüş set Liste Harita
sipariş Değere göre sıralandı Ekleme sırası korunmuştur. Anahtara göre sıralandı
çoğaltır İzin yok İzin verildi Anahtarlar benzersizdir.
Güncelleme maliyeti Ucuz, okumaya gerek yok. Ucuz ekleme; öne ekleme ve dizin güncellemesi okuma gerektirir. Tuş başına ucuz
İçin en iyisi Etiketler, e-posta adresleri, benzersiz etiketler Tekrarlanan kayıtların anlamlı olduğu sıralı adımlar Tahmin edilemeyen anahtarlara sahip adlandırılmış özellikler

Sıralama gerçekten önemli değilse, liste yerine kümeyi tercih edin, çünkü liste indeksleme işlemleri geçersiz kayıtlar oluşturur ve eş zamanlı yazma işlemlerinde şaşırtıcı sonuçlar doğurabilir. dondurulmuş Bu üç mağazadan herhangi birine, koleksiyon birincil anahtarda görünebilmesine olanak tanıyan ancak eleman düzeyindeki güncellemeleri ortadan kaldıran, değiştirilemez tek bir değer olarak kaydedilir.

CREATE TABLE University.Enrolment (
    id int,
    tags frozen<set<text>>,
    PRIMARY KEY (id, tags)
);

Bir koleksiyon birkaç düzineden fazla öğe içeriyorsa, aşağıdaki yaklaşımı izleyerek, öğeyi kümeleme sütunu olarak içeren ayrı bir tablo olarak modelleyin. Cassandra veri modeli kurallarıKoleksiyon içeriğine göre filtreleme, bir dizin gerektirir; bu konu ilgili bölümde ele alınmıştır. dizin oluştur ve sil öğretici.

SSS

Evet, bir indeks oluşturulduktan sonra. Eşleşen VALUES, KEYS veya ENTRIES indeksini oluşturduktan sonra, küme ve liste değerleri için CONTAINS, harita anahtarları için ise CONTAINS KEY kullanın.

Yalnızca iç içe koleksiyon dondurulmuşsa, örneğin metinden dondurulmuş metin listesine eşleme yapılmışsa. Dondurulmamış bir koleksiyon başka bir koleksiyon içeremez.

Yeni bir koleksiyon atamak, önce mevcut tüm öğeleri siler ve bir aralık silme işlemi gerçekleştirir. Tek tek öğeleri eklemek ve kaldırmak bunu önler ve tercih edilen yöntemdir.

Beklenen eleman sayısı ve güncelleme modeli göz önüne alındığında, yapay zeka şu kuralı iyi uyguluyor: sınırlı ve küçük değerler bir koleksiyonu, sınırsız veya sık sorgulanan değerler ise kümeleme sütununu tercih ediyor.

Çoğunlukla böyle olsa da, sıklıkla küme parantezlerini liste parantezleriyle karıştırır ve birincil anahtarın gerektirdiği durumlarda "dondurulmuş" özelliğini atlar. Oluşturulan ifadeleri önce bir test anahtar alanı üzerinde çalıştırın.

Bu yazıyı şu şekilde özetleyin: