Cassandra Zbirke: skup, popis i karta u CQL-u s primjerom
⚡ Pametni sažetak
Cassandra Kolekcije pohranjuju nekoliko vrijednosti unutar jednog stupca koristeći tipove skupova, popisa i mapa. Ova stranica objašnjava svaki tip, CQL sintaksu za njihovo stvaranje i popunjavanje, kako ažurirati elemente i ograničenja veličine koja odlučuju kada je kolekcija pogrešan izbor.

Što su Cassandra Zbirke?
Cassandra zbirke su dobar način za rješavanje zadataka. U zbirkama se može pohraniti više elemenata. Postoje ograničenja u Cassandra kolekcije.
- Kolekcija ne može pohraniti više od 64 KB podataka u jednoj vrijednosti.
- Održavajte kolekciju malom kako biste spriječili opterećenje upitima za kolekciju, jer se cijela kolekcija čita čak i kada je potreban samo jedan element.
- Pohranjivanje više od 64 KB znači da se mogu upitati samo prvih 64 KB, što rezultira gubitkom podataka.
- Odmrznuta kolekcija ograničena je na otprilike 65 535 elemenata, a svaki element se čita zajedno kao jedna jedinica.
Ova ograničenja upućuju na jedno pravilo: kolekcije odgovaraju nekolicini atributa pridruženih retku, a ne otvorenom popisu koji raste s korištenjem. Sve što raste pripada u klasterirane stupce vlastite tablice.
Vrste Cassandra Kolekcije
Postoje uglavnom tri vrste zbirki koje Cassandra podržava:
- Postaviti
- Popis
- Karta
Cassandra Set Zbirka
Skup pohranjuje grupu elemenata koja vraća sortirane elemente prilikom postavljanja upita.
Sintaksa
Ovo je sintaksa zbirke Set koja pohranjuje više adresa e-pošte za nastavnika.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Primjer
Ovdje je snimka na kojoj je tablica "Učitelj" stvorena sa stupcem "E-pošta" kao zbirka.
Ovdje je snimka gdje se podaci umeću u zbirku.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Pojedinačni elementi se dodaju ili uklanjaju bez prepisivanja cijelog skupa, što je glavna prednost ostavljanja kolekcije nezamrznutom.
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 Zbirka popisa
Kada je bitan redoslijed elemenata, koristi se lista.
Primjer
Evo snimke gdje je u tablicu "Nastavnik" dodan stupac tečajeva tipa popisa.
ALTER TABLE University.Teacher ADD coursenames list<text>;
Ovdje je snimka gdje se podaci ubacuju u stupac "nazivi tečajeva".
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Ovdje je snimka koja prikazuje trenutno stanje baze podataka nakon umetanja.
Elementi se mogu dodavati na početak ili na početak, iako i dodavanje na početak i ažuriranje indeksom zahtijevaju Cassandra prvo pročitati popis, što ih čini sporijima od dodavanja.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Zbirka karata
Karta je vrsta zbirke koja se koristi za pohranjivanje parova ključeva i vrijednosti. Kao što mu ime govori, preslikava jednu stvar u drugu.
Na primjer, ako želite spremiti naziv tečaja s njegovim preduvjetnim nazivom tečaja, može se koristiti zbirka karata.
Primjer
Ovdje je snimka na kojoj je stvoren tip karte za naziv tečaja i njegov preduvjetni naziv tečaja.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Ovdje je snimka gdje se podaci umeću u vrstu zbirke karata.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Jedan unos se postavlja ili uklanja bez dodirivanja ostatka karte.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Skup vs. popis vs. mapa: Odabir kolekcije
Tri vrste izgledaju zamjenjivo, ali se razlikuju u jamstvima naručivanja i troškovima ažuriranja.
| Aspekt | Postaviti | Popis | Karta |
|---|---|---|---|
| Naručivanje | Sortirano po vrijednosti | Narudžba za umetanje sačuvana | Sortirano po ključu |
| Duplikati | Nije dozvoljeno | dopušteno | Jedinstveni ključevi |
| Ažuriraj cijenu | Jeftino, nije potrebno čitati | Dodavanje jeftino; dodavanje na početak i ažuriranje indeksa zahtijevaju čitanje | Jeftino po ključu |
| Najbolje za | Oznake, adrese e-pošte, jedinstvene oznake | Uređeni koraci gdje su duplikati značajni | Imenovani atributi s nepredvidivim ključevima |
Radije birajte skup nego popis osim ako redoslijed nije zaista važan, jer operacije indeksiranja popisa stvaraju nadgrobne spomenike i mogu dati iznenađujuće rezultate pri istodobnom pisanju. Dodavanje zamrznut u bilo koju od tri pohranjuje je kao jednu nepromjenjivu vrijednost, što omogućuje da se kolekcija pojavi u primarnom ključu, ali uklanja ažuriranja na razini elemenata.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Kada kolekcija prelazi nekoliko desetaka elemenata, modelirajte je kao zasebnu tablicu s elementom kao stupcem za klasteriranje, slijedeći pristup u Cassandra pravila modela podatakaFiltriranje sadržaja kolekcije zahtijeva indeks, opisan u stvaranje i brisanje indeksa udžbenik.






