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.

  • ???? Tri vrste: Set sadrži jedinstvene neuređene vrijednosti, list čuva redoslijed umetanja, a map pohranjuje parove ključeva i vrijednosti.
  • 🔤 Postavljanje ponašanja: Elementi se pohranjuju sortirani, a duplikati se automatski odbacuju.
  • 🔢 Napomena o popisu: Redoslijed je sačuvan, ali operacije dodavanja na početak i indeksiranja zahtijevaju čitanje prije pisanja.
  • 🗺️ Upotreba karte: Mapa odgovara atributima čiji ključevi nisu poznati kada je shema dizajnirana.
  • 📏 Ograničenje veličine: Neka kolekcije budu male; cijela kolekcija se čita čak i kada je potreban jedan element.
  • 🧊 Zamrznuta opcija: Zamrznuta kolekcija pohranjuje se kao jedna vrijednost i mora se u cijelosti zamijeniti.

Cassandra Mapa popisa setova kolekcija

Š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:

  1. Postaviti
  2. Popis
  3. 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.

Primjer Cassandra Set Zbirka

Ovdje je snimka gdje se podaci umeću u zbirku.

Primjer Cassandra Set Zbirka

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.

Primjer Cassandra Zbirka popisa

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

Ovdje je snimka gdje se podaci ubacuju u stupac "nazivi tečajeva".

Primjer Cassandra Zbirka popisa

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.

Cassandra Primjer zbirke popisa

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.

Primjer Cassandra Zbirka karata

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.

Primjer Cassandra Zbirka 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.

Pitanja i odgovori

Da, nakon što indeks postoji. Koristite CONTAINS za skupove i popise vrijednosti, a CONTAINS KEY za ključeve mape, nakon što stvorite odgovarajući indeks VALUES, KEYS ili ENTRIES.

Samo ako je unutarnja kolekcija zamrznuta, na primjer mapiranje teksta na zamrznuti popis teksta. Odmrznuta kolekcija ne može sadržavati drugu kolekciju.

Dodjeljivanje nove kolekcije prvo briše svaki postojeći element, zapisujući raspon nadgrobnog spomenika. Dodavanje i uklanjanje pojedinačnih elemenata to izbjegava i to je preferirani obrazac.

S obzirom na očekivani broj elemenata i obrazac ažuriranja, umjetna inteligencija dobro primjenjuje pravilo: ograničeni i mali elementi favoriziraju kolekciju, neograničeni ili često upitani elementi favoriziraju stupac koji se grupira.

Uglavnom, iako često brka zagrade tipa set sa zagradama tipa list i izostavlja frozen gdje primarni ključ to zahtijeva. Prvo pokrenite generirane naredbe na testnom ključnom prostoru.

Sažmite ovu objavu uz: