Cassandra Colecții: Set, List & Map în CQL cu Exemplu
⚡ Rezumat inteligent
Cassandra Colecțiile stochează mai multe valori într-o singură coloană folosind tipurile set, list și map. Această pagină explică fiecare tip, sintaxa CQL pentru crearea și popularea lor, modul de actualizare a elementelor și limitele de dimensiune care decid când o colecție este alegerea greșită.

Care sunt Cassandra Colecții?
Cassandra colecțiile sunt o modalitate bună de a gestiona sarcini. Mai multe elemente pot fi stocate în colecții. Există limitări în Cassandra colecții.
- O coloană de colecție nu poate stoca mai mult de 64 KB de date într-o singură valoare.
- Păstrați o colecție mică pentru a evita supraîncărcarea interogării colecției, deoarece întreaga colecție este citită chiar și atunci când este necesar un singur element.
- Stocarea a mai mult de 64 KB înseamnă că doar primii 64 KB pot fi interogați, ceea ce duce la pierderea datelor.
- O colecție neînghețată este limitată la aproximativ 65,535 de elemente, iar fiecare element este citit împreună ca o singură unitate.
Aceste limite indică o regulă: colecțiile se potrivesc unei serii de atribute atașate unui rând, nu unei liste deschise care crește odată cu utilizarea. Orice element care crește în mod constant aparține grupării în coloane ale propriului tabel.
Tipuri de Cassandra Colecţii
Există în principal trei tipuri de colecții care Cassandra suporta:
- set
- Listă
- Hartă
Cassandra Set de colecție
Un set stochează un grup de elemente care returnează elemente sortate la interogare.
Sintaxă
Iată sintaxa colecției Set care stochează mai multe adrese de e-mail pentru profesor.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Exemplu
Iată instantaneul în care tabelul „Profesor” este creat cu coloana „E-mail” ca colecție.
Iată instantaneul în care datele sunt inserate în colecție.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Elementele individuale sunt adăugate sau eliminate fără a rescrie întreaga mulțime, acesta fiind principalul avantaj al lăsării unei colecții neînghețate.
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 Colecția de liste
Când ordinea elementelor contează, se folosește lista.
Exemplu
Iată captura de ecran în care coloana cursuri de tip listă este adăugată în tabelul „Profesor”.
ALTER TABLE University.Teacher ADD coursenames list<text>;
Iată instantaneul în care datele sunt inserate în coloana „nume curs”.
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Iată instantaneul care arată starea curentă a bazei de date după inserare.
Elementele pot fi adăugate sau prefixate, deși prefixarea și actualizarea prin index necesită ambele Cassandra să citească mai întâi lista, ceea ce le face mai lente decât adăugarea.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Colecția de hărți
Harta este un tip de colecție care este utilizat pentru a stoca perechi valori cheie. După cum sugerează și numele, mapează un lucru cu altul.
De exemplu, dacă doriți să salvați numele cursului cu numele său prealabil al cursului, poate fi utilizată colecția de hărți.
Exemplu
Iată instantaneul în care este creat tipul de hartă pentru numele cursului și numele cursului prealabil.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Iată instantaneul în care datele sunt inserate în tipul de colecție de hărți.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
O singură intrare este setată sau eliminată fără a atinge restul hărții.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Set vs Listă vs Hartă: Alegerea unei Colecții
Cele trei tipuri par interschimbabile, dar diferă în ceea ce privește garanțiile de comandă și costul actualizării.
| Aspect | set | Listă | Hartă |
|---|---|---|---|
| ordonare | Sortate după valoare | Ordinea de inserare a fost păstrată | Sortate după cheie |
| Dubluri | Nu sunt permise | Permis | Chei unice |
| Costul actualizării | Ieftin, nu necesită citire | Adăugați la preț redus; adăugarea la loc inițial și actualizarea indexului necesită citire | Ieftin per cheie |
| Cel mai bun pentru | Etichete, adrese de e-mail, etichete unice | Pași ordonați în care duplicatele sunt semnificative | Atribute denumite cu chei imprevizibile |
Preferați un set în locul unei liste, cu excepția cazului în care ordinea contează cu adevărat, deoarece operațiunile de indexare a listelor creează elemente de bază și pot produce rezultate surprinzătoare în cazul scrierilor simultane. Adăugarea congelate pentru oricare dintre cele trei o stochează ca o singură valoare imuabilă, ceea ce permite colecției să apară într-o cheie primară, dar elimină actualizările la nivel de element.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Când o colecție ar depăși câteva zeci de elemente, modelați-o ca un tabel separat cu elementul ca o coloană de grupare, urmând abordarea din Cassandra regulile modelului de dateFiltrarea după conținutul colecției necesită un index, descris în crearea și eliminarea indexului tutorial.






