Cassandra CQL tábla: Létrehozás, módosítás és csonkítás példa

⚡ Okos összefoglaló

Cassandra A táblaműveletek magukban foglalják a létrehozást, módosítást és eldobástping, és oszlopcsaládok csonkítása CQL-lel. Ez az oldal ismerteti az egyes parancsokat, a három elsődleges kulcsformát, amelyek meghatározzák az adateloszlást, valamint a sorok és a táblázatok eltávolítása közötti különbségeket.

  • 🏗️ Táblázat létrehozása: Egy táblázatnak szüksége van egy kulcsterületre, oszlopdefiníciókra és egy elsődleges kulcs záradékra, amely rögzíti az eloszlást és a rendezési sorrendet.
  • 🔑 Egyetlen elsődleges kulcs: Az egyik oszlop partíciós kulcsként működik, így az adott érték minden sora ugyanazon a csomóponton található.
  • 🧩 Összetett elsődleges kulcs: Az első oszlop partíciókat készít, a fennmaradó oszlopok a partíción belüli sorokat csoportosítják és rendezik.
  • 🧮 Összetett partíciókulcs: Két oszlop zárójelbe állítása egy túlméretezett partíciót sok kisebbre oszt.
  • ✏️ Korlátok módosítása: Az oszlopok hozzáadhatók vagy elvehetők, de az elsődleges kulcs oszlopai soha nem módosíthatók.
  • 🗑️ Eldobás vs. csonkítás: A Drop eltávolítja a sémát és az adatokat; a truncate kiüríti az összes sort, de megőrzi a tábla definícióját.

Cassandra Tábla létrehozása Alter Drop

A szintaxisa Cassandra lekérdezőnyelv (CQL) hasonló SQL nyelv.

Hogyan készítsünk táblázatot Cassandra

Oszlopcsalád be Cassandra hasonló az RDBMS táblához. Az oszlopcsalád az adatok tárolására szolgál.

A „Táblázat létrehozása” parancs az oszlopcsalád létrehozására szolgál Cassandra.

Szintaxis

CREATE TABLE KeyspaceName.TableName (
    ColumnName DataType,
    ColumnName DataType,
    ColumnName DataType,
    PRIMARY KEY (ColumnName)
) WITH PropertyName = PropertyValue;

1. Elsődleges kulcs: Kétféle típus létezik elsődleges kulcs.

  • Egyetlen elsődleges kulcs: Az egyetlen elsődleges kulcsot a következő szintaxis határozza meg.

Szintaxis

PRIMARY KEY (ColumnName)

Az egyetlen elsődleges kulcsban csak egyetlen oszlop található. Ezt az oszlopot particionáló kulcsnak is nevezik. Az adatok az adott oszlop alapján vannak felosztva. Az adatok a partíciós kulcs alapján különböző csomópontokon vannak szétosztva.

2. Összetett elsődleges kulcs: Az összetett elsődleges kulcsot a következő szintaxis határozza meg.

Szintaxis

PRIMARY KEY (ColumnName1, ColumnName2, ...)

A fenti szintaxisban az Oszlopnév1 a particionáló kulcs, az Oszlopnév2 pedig a Clusterkulcsot. Az adatok az Oszlopnév1 alapján lesznek felosztva, az adatok pedig az Oszlopnév2 alapján csoportosulnak. ClusterAz ing az a folyamat, amely az adatokat rendezi a partícióban.

3. Összetett particionáló kulcs: Az összetett particionálási kulcsot a következő szintaxis határozza meg.

Szintaxis

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

A fenti szintaxisban a ColumnName1 és a ColumnName2 az összetett partíciós kulcs. Az adatok a ColumnName1 és a ColumnName2 oszlopok alapján lesznek particionálva, az adatok pedig a ColumnName3 alapján lesznek fürtözöttek. Ha túl sok adat van egyetlen partíción, akkor összetett partíciós kulcsot használunk. Az összetett partíciós kulcs több partíció létrehozására szolgál az adatok számára.

  • Clause-val

A „záradékkal” a definiált tábla bármely tulajdonságának és értékének megadására szolgál. Például ha tömöríteni szeretne Cassandra táblaadatok. A tömörítési tulajdonságot a tömörítési algoritmus tulajdonság értékének megadásával állíthatja be a „With” záradékban. Ugyanez a záradék a CLUSTERING ORDER BY tulajdonságot is beállítja a fürtözési oszlop rendezési irányának megfordítására, a default_time_to_live tulajdonságot pedig úgy, hogy minden sor automatikusan lejárjon.

Példa

Itt van a "Create table" parancs végrehajtása, amely létrehozza a "Student" tábla nevét az "Egyetem" kulcstérben.

Cassandra Táblázat létrehozása

CREATE TABLE University.Student (
    RollNo int,
    Name text,
    dept text,
    PRIMARY KEY (RollNo)
);

A „Create table” parancs sikeres végrehajtása után a „Student” tábla létrejön az „University” kulcsterületen a RollNo, Name és dept oszlopokkal. A RollNo az elsődleges kulcs. A RollNo egyben partíciós kulcs is, így minden hallgató egy külön egysoros partíciót foglal el.

Cassandra Alter táblázat

A „Táblázat módosítása” paranccsal oszlopot dobhat el, új oszlopot vehet fel, módosíthatja az oszlop nevét, módosíthatja az oszlop típusát és módosíthatja a táblázat tulajdonságait.

Szintaxis

A következő az "Alter Table" parancs szintaxisa.

ALTER TABLE KeyspaceName.TableName
    ADD ColumnName ColumnDataType;

ALTER TABLE KeyspaceName.TableName
    DROP ColumnName;

ALTER TABLE KeyspaceName.TableName
    RENAME ColumnName TO NewColumnName;

ALTER TABLE KeyspaceName.TableName
    WITH PropertyName = PropertyValue;

Minden egyes nyomtatvány különálló nyilatkozatként kerül kiadásra. A jelenlegi szabályozás szerint két korlátozás érvényes. Cassandra kiadások: egy meglévő oszlop adattípusa már nem módosítható, és a RENAME csak az elsődleges kulcs fürtözési oszlopán működik.

Példa

Itt látható a „Táblázat módosítása” parancs pillanatképe, amely új oszlopot ad a Diák táblázathoz.

Cassandra Alter táblázat

ALTER TABLE University.Student ADD Semester int;

A „Táblázat módosítása” parancs sikeres végrehajtása után egy új „Félév” oszlop kerül hozzáadásra „int” adattípussal a Hallgató táblához.

Íme a képernyőkép, amely a frissített tanulói táblázatot mutatja.

Cassandra Alter táblázat

Cassandra Cseppasztal

A „Tábla eldobása” parancs eldobja a megadott táblát, beleértve a kulcsterület összes adatát is. Eldobás előttping az asztal, Cassandra pillanatfelvételt készít az adatokról, nem a sémáról biztonsági másolatként.

Szintaxis

DROP TABLE IF EXISTS KeyspaceName.TableName;

Példa

Itt látható a végrehajtott „Táblázat eldobása” parancs pillanatképe, amely ledobja a tábla diákot az „Egyetem” kulcstérből.

Cassandra Cseppasztal

DROP TABLE University.Student;

A „Táblázat eldobása” parancs sikeres végrehajtása után a tábla Student kikerül az Egyetem kulcsterületéről.

Itt látható a pillanatkép, amely a hibaüzenetet mutatja Cassandra amikor megpróbált hozzáférni egy nem létező diáktáblához.

Cassandra Cseppasztal

Cassandra Csonka táblázat

A „Táblázat csonkolása” parancs eltávolítja az összes adatot a megadott táblából. Az adatok csonkolása előtt Cassandra biztonsági másolatként készíti az adatok pillanatfelvételét.

Szintaxis

TRUNCATE KeyspaceName.TableName;

Példa

A táblázatban három rekord található. Ezek a rekordok a táblázatban.

Cassandra Csonka táblázat

Itt látható a végrehajtott „Táblázat csonkolása” parancs pillanatképe, amely eltávolítja az összes adatot a táblából.

Cassandra Csonka táblázat

A 'Táblázat csonkolása' parancs sikeres végrehajtása után az összes adat eltávolításra kerül a Student táblából.

Itt látható az adatbázis állapotának pillanatképe, ahol nincsenek rekordok a Student táblázatban.

Cassandra Csonka táblázat

A csonkítás (Truncate) megköveteli, hogy minden csomópont elérhető legyen, mivel egyszerre fut le az egész fürtön. Ha bármelyik csomópont nem működik, az utasítás sikertelen lesz, ami szándékos óvintézkedés a részleges adatok hátrahagyása ellen.

Eldobás vs. Csonkítás vs. Törlés Cassandra

Három parancs távolít el adatokat, és a rossz kiválasztása vagy megsemmisíti a sémát, vagy teljesítményproblémát okoz.

parancs Amit eltávolít Séma megtartva Költség
DROP TÁBLÁZAT Minden sor és a tábladefiníció Nem Olcsó. Az SSTable-ökről pillanatkép készül, majd eldobásra kerül.
CSONKA Minden sor Igen Olcsó, de minden csomópontot fel kell szerelni. Nem keletkeznek sírkövek.
DELETE Kijelölt sorok vagy oszlopok Igen Drága ilyen léptékben. Minden eltávolítás egy sírkövet ír, amelyen a következő felirat olvasható: ki kell hagyni a tömörítésig.

A gyakorlati szabály az, hogy egy teljes tábla törlésekor a TRUNCATE parancsot részesítsük előnyben a tömeges DELETE parancs helyett, mivel a több ezer törlési hiba lelassítja az adott partíció minden további olvasását. A sorszintű eltávolítást a következő részben tárgyaljuk. CQL beszúrás, frissítés és törlés tutorial.

GYIK

Nem. Az elsődleges kulcs határozza meg az adatok fizikai elhelyezését, tehát létrehozáskor rögzítve van. A megváltoztatása azt jelenti, hogy létre kell hozni egy új táblát a kívánt kulccsal, és át kell vinni a sorokat.

Add hozzá a WITH CLUSTERING ORDER BY (ColumnName DESC) paramétert létrehozáskor. A sémában való beállítása sokkal olcsóbb, mint a lekérdezéskor minden olvasáskor történő rendezés.

Nem. Az oszlop azonnal elrejtésre kerül a lekérdezések elől, de az adatai a meglévő SSTable-okban maradnak, amíg a tömörítés át nem írja őket. A hely fokozatosan szabadul fel.

Az oszloplista tisztán lefordított, de a mesterséges intelligencia gyakran egy helyettesítő azonosítót használ partíciós kulcsként, ami egysoros partíciókat hoz létre. Írd át a lekérdezési mintát, hogy a kulcs legyen kiválasztva az olvasáshoz.

Igen, minta szintű problémák esetén, mint például hiányzó fürtözési oszlopok, nem korlátos partíciók vagy a korlátokat valószínűleg meghaladó gyűjteményoszlopok. A beavatkozás előtt ellenőrizze a valós kardinalitást.

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