Cassandra Kokoelmat: Aseta, luettelo ja kartoita CQL:ssä esimerkin kanssa
⚡ Älykäs yhteenveto
Cassandra Kokoelmat tallentavat useita arvoja yhteen sarakkeeseen käyttämällä joukko-, lista- ja karttatyyppejä. Tällä sivulla selitetään kukin tyyppi, CQL-syntaksi niiden luomiseksi ja täyttämiseksi, elementtien päivittäminen ja kokorajoitukset, jotka ratkaisevat, milloin kokoelma on väärä valinta.

Mitä ovat Cassandra Kokoelmat?
Cassandra kokoelmat ovat hyvä tapa hoitaa tehtäviä. Kokoelmiin voidaan tallentaa useita elementtejä. Sisällä on rajoituksia Cassandra kokoelmia.
- Kokoelmasarakkeeseen ei voi tallentaa yli 64 kt tietoa yhteen arvoon.
- Pidä kokoelma pienenä välttääksesi kokoelman kyselyn aiheuttaman ylimääräisen kuorman, koska koko kokoelma luetaan, vaikka tarvittaisiin vain yksi elementti.
- Yli 64 kt:n tallentaminen tarkoittaa, että vain ensimmäiset 64 kt voidaan hakea, mikä johtaa tietojen menetykseen.
- Jäädyttämätön kokoelma on rajoitettu noin 65 535 elementtiin, ja jokainen elementti luetaan yhdessä yhtenä yksikkönä.
Nämä rajoitukset viittaavat yhteen sääntöön: kokoelmat sopivat kouralliseen riviin liitettyjä attribuutteja, eivät avoimeen luetteloon, joka kasvaa käytön myötä. Kaikki, mikä jatkuvasti kasvaa, kuuluu oman taulukon klusteroituihin sarakkeisiin.
Tyyppisiä Cassandra Kaikki tuotteet
Kokoelmia on pääasiassa kolmenlaisia Cassandra tukee:
- Asettaa
- Lista
- kartta
Cassandra Aseta kokoelma
Joukko tallentaa elementtiryhmän, joka palauttaa lajiteltuja elementtejä kyselyn yhteydessä.
Syntaksi
Tässä on Set-kokoelman syntaksi, joka tallentaa useita opettajan sähköpostiosoitteita.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
esimerkki
Tässä on tilannekuva, jossa taulukko "Opettaja" luodaan ja "Sähköposti"-sarake kokoelmana.
Tässä on tilannekuva, jossa tietoja lisätään kokoelmaan.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Yksittäisiä elementtejä lisätään tai poistetaan ilman koko joukon uudelleenkirjoittamista, mikä on kokoelman jäädyttämättömänä jättämisen tärkein etu.
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 Listakokoelma
Kun elementtien järjestyksellä on väliä, käytetään luetteloa.
esimerkki
Tässä on tilannekuva, jossa listatyyppinen sarakekurssit on lisätty ”Opettaja”-taulukkoon.
ALTER TABLE University.Teacher ADD coursenames list<text>;
Tässä on tilannekuva, jossa tietoja lisätään sarakkeeseen "kurssinimet".
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Tässä on tilannekuva, joka näyttää nykyisen tietokannan tilan lisäyksen jälkeen.
Elementteihin voidaan lisätä liitteitä tai etuliitteitä, vaikka sekä etuliite että päivitys indeksin mukaan vaativat Cassandra lukemaan listan ensin, mikä tekee niistä hitaampia kuin lisääminen.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Karttakokoelma
Kartta on kokoelmatyyppi, jota käytetään avainarvoparien tallentamiseen. Kuten sen nimi viittaa, se kartoittaa yhden asian toiseen.
Jos esimerkiksi haluat tallentaa kurssin nimen ja sen edellytyksenä olevan kurssin nimen, voit käyttää karttakokoelmaa.
esimerkki
Tässä on tilannekuva, jossa kartan tyyppi luodaan kurssin nimelle ja sen edellytyksenä olevalle kurssin nimelle.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Tässä on tilannekuva, jossa tietoja lisätään karttakokoelmatyyppiin.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Yksittäinen merkintä asetetaan tai poistetaan koskematta muuhun karttaan.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Joukko vs. lista vs. kartta: Kokoelman valitseminen
Nämä kolme tyyppiä näyttävät keskenään vaihdettavilta, mutta eroavat toisistaan tilaustakuiden ja päivityskustannusten suhteen.
| Aspect | Asettaa | Lista | kartta |
|---|---|---|---|
| Järjestys | Lajiteltu arvon mukaan | Lisäysjärjestys säilytetty | Lajiteltu avaimen mukaan |
| Kopiot | Ei sallittu | Sallittu | Avaimet ainutlaatuiset |
| Päivityskustannukset | Halpa, ei vaadi lukemista | Lisää halvalla; alkuosa ja indeksin päivitys vaativat lukemisen | Halpa avainta kohden |
| Parasta | Tunnisteet, sähköpostiosoitteet, yksilölliset tunnisteet | Järjestetyt vaiheet, joissa kaksoiskappaleilla on merkitystä | Nimetyt attribuutit, joilla on arvaamattomat avaimet |
Suosi joukkoa listan sijaan, ellei järjestyksellä ole oikeasti väliä, koska listaindeksioperaatiot luovat hautakiviä ja voivat tuottaa yllättäviä tuloksia samanaikaisten kirjoitusten aikana. jäädytetty mihin tahansa kolmesta tallentaa sen yhtenä muuttumattomana arvona, mikä sallii kokoelman näkymisen ensisijaisessa avaimessa, mutta poistaa elementtitason päivitykset.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Kun kokoelma ylittää muutaman kymmenen elementin määrän, mallinna se erillisenä taulukkona, jossa elementti on klusterointisarakkeena, noudattaen lähestymistapaa, joka on esitetty kohdassa Cassandra datamallin säännötKokoelman sisällön suodattaminen vaatii indeksin, jota käsitellään kohdassa luo ja poista indeksi opetusohjelma.






