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.

  • 📦 Három típus: A halmaz egyedi, rendezetlen értékeket tárol, a lista megőrzi a beszúrási sorrendet, a map pedig kulcs-érték párokat tárol.
  • 🔤 Viselkedés beállítása: Az elemek rendezve tárolódnak, a duplikátumok pedig automatikusan törlődnek.
  • 🔢 Lista figyelmeztetés: A sorrend megmarad, de az előtag és az index műveletek írás előtt olvasást igényelnek.
  • 🗺️ Térképhasználat: Egy map olyan attribútumokhoz igazodik, amelyek kulcsai a séma tervezésekor nem ismertek.
  • 📏 Méretkorlát: Tartsa a gyűjteményeket kis méretben; a teljes gyűjteményt beolvassa, még akkor is, ha egyetlen elemre van szükség.
  • 🧊 Fagyasztott opció: A lefagyasztott gyűjtemény egyetlen értékként tárolódik, és teljes egészében ki kell cserélni.

Cassandra Gyűjtemények készletlista térképe

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:

  1. Készlet
  2. Lista
  3. 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.

Például az Cassandra Gyűjtemény beállítása

Itt látható a pillanatkép, ahol az adatokat beillesztik a gyűjteménybe.

Például az Cassandra Gyűjtemény beállítása

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.

Például az Cassandra Listagyűjtemény

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.

Például az Cassandra Listagyűjtemény

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.

Cassandra Listagyűjtemény példa

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.

Például az Cassandra Térképgyűjtemény

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.

Például az Cassandra Térképgyűjtemény

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.

GYIK

Igen, ha már létezik egy index. Használd a CONTAINS indexet halmaz- és listaértékekhez, és a CONTAINS KEY indexet leképezési kulcsokhoz, miután létrehoztad a megfelelő VALUES, KEYS vagy ENTRIES indexet.

Csak akkor, ha a belső gyűjtemény le van zárva, például szöveg leképezése a rögzített szöveglistára. Egy feloldott gyűjtemény nem tartalmazhat másik gyűjteményt.

Egy új gyűjtemény hozzárendelése először az összes meglévő elemet törli, egy tartomány sírkövet írva. Az egyes elemek hozzáadása és eltávolítása ezt elkerüli, és ez az előnyben részesített minta.

A várt elemszám és frissítési minta alapján a mesterséges intelligencia jól alkalmazza a szabályt: a korlátozott és kicsi értékek a gyűjteményt, a korlátlan vagy gyakran lekérdezett értékek pedig a fürtözési oszlopot részesítik előnyben.

Többnyire, bár gyakran összekeveri a halmaz zárójeleket a lista zárójelekkel, és kihagyja a befagyasztott részt ott, ahol egy elsődleges kulcs megköveteli. Először futtassa a generált utasításokat egy teszt kulcsterületen.

Foglald össze ezt a bejegyzést a következőképpen: