Cassandra Samlinger: Sett, liste og kart i CQL med eksempel
⚡ Smart oppsummering
Cassandra Samlinger lagrer flere verdier i én kolonne ved hjelp av typene sett, liste og kart. Denne siden forklarer hver type, CQL-syntaksen for å opprette og fylle dem ut, hvordan man oppdaterer elementer og størrelsesgrensene som avgjør når en samling er feil valg.

Hva er Cassandra Samlinger?
Cassandra samlinger er en god måte å håndtere oppgaver på. Flere elementer kan lagres i samlinger. Det er begrensninger i Cassandra samlinger.
- En samlingskolonne kan ikke lagre mer enn 64 KB data i én enkelt verdi.
- Hold en samling liten for å unngå overhead ved å spørre samlingen, fordi hele samlingen leses selv når bare ett element er nødvendig.
- Lagring av mer enn 64 KB betyr at bare de første 64 KB kan spørres, noe som resulterer i tap av data.
- En ufryst samling er begrenset til omtrent 65 535 elementer, og hvert element leses sammen som én enhet.
Disse begrensningene peker mot én regel: samlinger passer til en håndfull attributter knyttet til en rad, ikke en åpen liste som vokser med bruk. Alt som fortsetter å vokse hører hjemme i klyngekolonner i sin egen tabell.
Typer av Cassandra Kategorier
Det er hovedsakelig tre typer samlinger som Cassandra støtter:
- Sett
- Liste
- kart
Cassandra Sett samling
Et sett lagrer en gruppe med elementer som returnerer sorterte elementer ved spørring.
syntax
Her er syntaksen til Set-samlingen som lagrer flere e-postadresser for læreren.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Eksempel
Her er øyeblikksbildet der tabellen "Lærer" er opprettet med kolonnen "E-post" som en samling.
Her er øyeblikksbildet der data blir satt inn i samlingen.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Individuelle elementer legges til eller fjernes uten å skrive hele settet om, noe som er hovedfordelen med å la en samling være ufrossen.
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 Innsamling
Når rekkefølgen på elementene betyr noe, brukes listen.
Eksempel
Her er et øyeblikksbilde der kolonnen «kurs av listetypen» er lagt til i tabellen «Lærer».
ALTER TABLE University.Teacher ADD coursenames list<text>;
Her er øyeblikksbildet der data settes inn i kolonnen "kursnavn".
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Her er øyeblikksbildet som viser gjeldende databasestatus etter innsetting.
Elementer kan legges til eller legges foran, men både foranstilling og oppdatering via indeks krever Cassandra å lese listen først, noe som gjør dem tregere enn å legge til.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Kartsamling
Kartet er en samlingstype som brukes til å lagre nøkkelverdipar. Som navnet tilsier at den kartlegger en ting til en annen.
Hvis du for eksempel ønsker å lagre kursnavn med dets forutsetning for kursnavn, kan kartsamling brukes.
Eksempel
Her er øyeblikksbildet der karttype opprettes for kursnavn og dets forutsetning for kursnavn.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Her er øyeblikksbildet der data settes inn i kartsamlingstypen.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
En enkelt oppføring angis eller fjernes uten å berøre resten av kartet.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Sett vs. liste vs. kart: Velge en samling
De tre typene ser ut til å være utskiftbare, men de har forskjellige bestillingsgarantier og oppdateringskostnader.
| Aspekt | Sett | Liste | kart |
|---|---|---|---|
| bestilling | Sortert etter verdi | Innsettingsordre bevart | Sortert etter nøkkel |
| duplikater | Ikke tillatt | Lov | Nøkler unike |
| Oppdateringskostnad | Billig, ingen lesebehov | Billig legg til; legg til foran og indekser oppdatering krever lesing | Billig per nøkkel |
| Best for | Tagger, e-postadresser, unike etiketter | Ordnede trinn der duplikater er meningsfulle | Navngitte attributter med uforutsigbare nøkler |
Foretrekk et sett fremfor en liste med mindre rekkefølgen virkelig betyr noe, fordi listeindeksoperasjoner oppretter gravsteiner og kan gi overraskende resultater under samtidige skrivinger. frossen til hvilken som helst av de tre lagrer den som én uforanderlig verdi, som lar samlingen vises i en primærnøkkel, men fjerner oppdateringer på elementnivå.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Når en samling overstiger noen få dusin elementer, modeller den som en separat tabell med elementet som en klyngekolonne i stedet, følg tilnærmingen i Cassandra datamodellreglerFiltrering på samlingsinnhold krever en indeks, dekket i opprette og slette indeks opplæringen.






