Cassandra Gyűjtemények: Beállítás, listázás és leképezés CQL-ben példával
⚡ Okos összefoglaló
Cassandra A gyűjtemények több értéket tárolnak egyetlen oszlopban a halmaz, lista és map típusok használatával. Ez az oldal ismerteti az egyes típusokat, a létrehozásukhoz és feltöltéshez szükséges CQL szintaxist, az elemek frissítésének módját, valamint a méretkorlátokat, amelyek eldöntik, hogy egy gyűjtemény mikor nem megfelelő választás.

Mik Cassandra Gyűjtemények?
Cassandra a gyűjtemények jó módja a feladatok kezelésének. A gyűjteményekben több elem is tárolható. Korlátozások vannak benne Cassandra gyűjtemények.
- Egy gyűjteményoszlop nem tárolhat 64 KB-nál több adatot egyetlen értékben.
- Tartsa a gyűjteményt kicsiben, hogy elkerülje a gyűjtemény lekérdezésének többletterhelését, mivel a teljes gyűjtemény beolvasásra kerül, még akkor is, ha csak egyetlen elemre van szükség.
- 64 KB-nál nagyobb tárolás azt jelenti, hogy csak az első 64 KB kérdezhető le, ami adatvesztést eredményez.
- Egy feloldott gyűjtemény nagyjából 65 535 elemre korlátozódik, és minden elemet egyetlen egységként olvasunk be.
Ezek a korlátok egy szabályra mutatnak rá: a gyűjtemények egy sorhoz rendelt maroknyi attribútumhoz igazodnak, nem pedig egy használattal bővülő, nyitott végű listához. Bármi, ami folyamatosan növekszik, a saját táblázatának oszlopainak klaszterezésébe tartozik.
Típusok Cassandra Gyűjtemények
Főleg háromféle gyűjtemény létezik Cassandra támogatja:
- Készlet
- Lista
- Térkép
Cassandra Gyűjtemény beállítása
A halmaz olyan elemcsoportot tárol, amely lekérdezéskor rendezett elemeket ad vissza.
Szintaxis
Itt látható a Set gyűjtemény szintaxisa, amely több e-mail címet tárol a tanár számára.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Példa
Itt látható az a pillanatkép, ahol a „Tanár” táblázat jön létre az „E-mail” oszloppal gyűjteményként.
Itt látható a pillanatkép, ahol az adatokat beillesztik a gyűjteménybe.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Az egyes elemek hozzáadhatók vagy eltávolíthatók a teljes halmaz átírása nélkül, ami a gyűjtemény feloldott állapotának fő előnye.
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 Listagyűjtemény
Ha az elemek sorrendje számít, a lista kerül felhasználásra.
Példa
Itt látható a pillanatkép, ahol a lista típusú kurzusok oszlop hozzáadásra került a „Tanár” táblához.
ALTER TABLE University.Teacher ADD coursenames list<text>;
Itt látható az a pillanatkép, ahol az adatok beszúrásra kerülnek a „kurzusnevek” oszlopba.
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Itt van a pillanatkép, amely az adatbázis aktuális állapotát mutatja be a beillesztés után.
Az elemek hozzáfűzhetők vagy elrendezhetők, bár az index szerinti elrendeződés és frissítés egyaránt megköveteli Cassandra először a listát kell elolvasni, ami lassabbá teszi őket, mint a hozzáfűzés.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Térképgyűjtemény
A térkép egy gyűjteménytípus, amely kulcsértékpárok tárolására szolgál. Ahogy a neve is sugallja, hogy egy dolgot leképez a másikra.
Például, ha el szeretné menteni a kurzus nevét az előfeltételhez tartozó kurzusnévvel együtt, akkor térképgyűjtemény használható.
Példa
Itt látható az a pillanatkép, ahol a térképtípus létrejön a kurzus nevéhez és a kurzus előfeltételéhez.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Itt látható az a pillanatkép, ahol az adatok beszúrásra kerülnek a térképgyűjtemény típusába.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Egyetlen bejegyzés beállítható vagy eltávolítható a térkép többi részének érintése nélkül.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Halmaz vs Lista vs Térkép: Gyűjtemény kiválasztása
A három típus látszólag felcserélhető, de a rendelési garanciákban és a frissítési költségekben különböznek.
| Aspect | Készlet | Lista | Térkép |
|---|---|---|---|
| Rendelés | Érték szerint rendezve | Beszúrási sorrend megőrizve | Kulcs szerint rendezve |
| ismétlődések | Nem engedélyezett | Megengedett | Egyedi kulcsok |
| Frissítési költség | Olcsó, nem kell olvasni | Olcsó hozzáfűzés; az előtag és az indexfrissítés olvasást igényel | Olcsó kulcsonként |
| A legjobb | Címkék, e-mail címek, egyedi címkék | Rendezett lépések, ahol az ismétlődések értelmesek | Megnevezett attribútumok kiszámíthatatlan kulcsokkal |
A halmazokat részesítsük előnyben a listákkal szemben, kivéve, ha a sorrend valóban számít, mivel a listaindexelési műveletek sírköveket hoznak létre, és meglepő eredményeket produkálhatnak egyidejű írások során. fagyasztva bármelyik három közül egyetlen megváltoztathatatlan értékként tárolja, ami lehetővé teszi a gyűjtemény megjelenését egy elsődleges kulcsban, de eltávolítja az elemszintű frissítéseket.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Amikor egy gyűjtemény meghaladná a néhány tucat elemet, modellezzük különálló táblázatként, amelyben az elem fürtözési oszlopként szerepel, a következő megközelítést követve: Cassandra adatmodell-szabályokA gyűjtemény tartalmának szűréséhez indexre van szükség, amelyet a következő részben tárgyalunk. index létrehozása és törlése tutorial.






