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.

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:
- set
- Liste
- 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ü.
İşte koleksiyona verinin eklendiği anlık görüntü.
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ü.
ALTER TABLE University.Teacher ADD coursenames list<text>;
İşte verilerin "kurs adları" sütununa eklendiği anlık görüntü.
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.
Öğ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.
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.
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.






