Cassandra TTL & Cassandra CQL adattípusok (példa)

⚡ Okos összefoglaló

Cassandra Az adattípusok határozzák meg, hogy az egyes oszlopok mit tartalmazhatnak, a TTL pedig azt szabályozza, hogy egy érték mennyi ideig marad életben, mielőtt automatikusan lejár. Ez az oldal felsorolja az összes CQL típust, elmagyarázza a lejárati mechanizmust, és ismerteti a lejáratot követő sírkő viselkedését.

  • 🔤 Típuscsaládok: A CQL szöveges, numerikus, dátum és idő, azonosító és gyűjtemény kategóriákba csoportosítja a típusokat.
  • 🔢 Numerikus választás: A tinyint a varint-ig minden egész szám szélességet lefed, míg a decimal megőrzi a pénz pontos pontosságát.
  • 🆔 UUID vs. IdőUUID: A timeuuid beágyaz egy időbélyeget és időrendi sorrendben rendez, így időrendi klaszterezéshez is alkalmas.
  • ⏳ TTL alapjai: A beszúráskor másodpercben beállított ttl érték automatikusan törli az adatokat, amint az eltelik.
  • 🪦 Lejárati viselkedés: A lejárt adatok sírkővé válnak, és fizikailag csak tömörítés után távolíthatók el.
  • 🧊 Fagyasztott típusok: Egy gyűjtemény vagy tuple befagyasztottként való megjelölése egyetlen megváltoztathatatlan értékként tárolja azt, amelyet egész értékre kell cserélni.

Cassandra TTL CQL adattípusok

Cassandra Adattípusok

Cassandra különböző típusú adattípusokat támogat. Itt található az adattípusokat, azok állandóit és leírását tartalmazó táblázat.

CQL típus állandók Leírás
ascii Strings US-Ascii karakterlánc
bigint Egész számok 64 bites aláírt hosszú
folt festékfoltok Tetszőleges bájtok hexadecimális formában
logikai Logikai adattípus Igaz vagy hamis
ellen Egész számok Elosztott számláló értékek 64 bit
adat Egész számok, karakterláncok Naptári dátum időkomponens nélkül
decimális Egész számok, úszók Változó pontosságú decimális
kétszeresére Egész számok, úszók 64 bites lebegőpont
időtartama Időtartam: Hónapok, napok és nanoszekundumok időtartama
úszik Egész számok, úszók 32 bites lebegőpont
fagyasztva Sorok, gyűjtemények, felhasználó által meghatározott típusok Több részből álló értéket egyetlen megváltoztathatatlan blobként tárol
inet Strings IP-cím IPv4 vagy IPv6 formátumban
int Egész számok 32 bites előjeles egész szám
lista Elemek rendezett gyűjteménye
térkép JSON stílusú kulcs-érték párok gyűjteménye
készlet Egyedi elemek rendezetlen gyűjteménye
smallint Egész számok 16 bites előjeles egész szám
szöveg Strings UTF-8 kódolású karakterlánc
idő Egész számok, karakterláncok Napszak nanoszekundumos pontossággal
időbélyeg Egész számok, karakterláncok Dátum plusz idő, ezredmásodpercben kódolva az epoch óta
időuid UUID 1-es típusú UUID, beágyazott idő szerint rendezhető
aprócska Egész számok 8 bites előjeles egész szám
kettős Egy rögzített csoport típusos mezőkből
uuid UUID Szabványos UUID
varchar Strings UTF-8 kódolású karakterlánc, a szöveg aliasa
varint Egész számok Tetszőleges pontosságú egész szám

A listán szereplő három választási lehetőség okozza a legtöbb modellezési hibát, ezért érdemes ezeket explicit módon megemlíteni.

  • szöveg varchar ellen. Ugyanaz a típus. Mindkét név működik, és a keverésük nem ad hozzá értéket.
  • időbélyeg az időazonosítóval szemben. Használj időbélyeget az események rögzítésére. Használj timeuid-t klaszterező oszlopként, ha sok esemény osztozik egy milliszekundumon, mert az UUID garantálja az egyediséget, miközben továbbra is idő szerint rendez.
  • decimális kontra dupla. A monetáris értékek decimális számrendszerben vannak. A dupla érték bináris kerekítési hibát okoz, amely az összesítések között halmozódik.

A ellen Az oszlopra egy speciális korlátozás vonatkozik: egy tábla tartalmazhat számláló oszlopokat vagy sima oszlopokat, soha nem mindkettőt, és a számláló sorok nem szúrhatók be, csak növelhetők.

Cassandra TTL (Time to Live) automatikus adatlejárat használatával

Cassandra olyan funkciókat biztosít, amelyek segítségével az adatok automatikusan lejárhatók.

Az adatbeillesztés során meg kell adni a 'ttl' értéket másodpercben. A „ttl” érték az adatok életbe lépési ideje. Az adott idő elteltével az adatok automatikusan törlődnek.

Például a beszúrás során adjon meg ttl értéket 100 másodpercben. Az adatok 100 másodperc elteltével automatikusan törlődnek. Ha az adatok lejártak, a lejárt adatot sírkő jelöli.

A sírkő türelmi időre létezik. Az adatok lejárta után az adatok automatikusan törlődnek a tömörítési folyamat után.

Szintaxis

INSERT INTO KeyspaceName.TableName (ColumnNames)
VALUES (ColumnValues)
USING TTL TimeInSeconds;

Példa

Itt látható az a pillanatkép, ahol az adatok beszúrásra kerülnek a tanulói táblázatba 100 másodperces ttl értékkel.

Cassandra Az automatikus adatlejáratot használó TTL

INSERT INTO University.Student (rollno, name, dept, semester)
VALUES (3, 'Guru99', 'CS', 7) USING TTL 100;

Itt az a pillanatkép, ahol az adatok 100 másodperc után automatikusan lejárnak, és az adatok automatikusan törlődnek.

Cassandra Az automatikus adatlejáratot használó TTL

TTL ellenőrzése és módosítása meglévő adatokon

Miután egy érték TTL-t hordoz, további három művelet hasznos, és mindegyik viselkedése meglepi az újonnan érkezőket.

Bármely nem elsődleges kulcsú oszlop fennmaradó élettartama a TTL függvénnyel olvasható ki.

SELECT name, TTL(name) FROM University.Student WHERE rollno = 3;

A null eredmény azt jelenti, hogy az oszlophoz nincs lejárati idő beállítva. Az elsődleges kulcs oszlopai nem kérdezhetők le ilyen módon, mivel a TTL az értékekhez, nem pedig a kulcshoz kapcsolódik.

Egy meglévő értékhez új TTL rendelhető frissítéssel, ami az adott pillanattól kezdve nullázza a visszaszámlálást.

UPDATE University.Student USING TTL 600
SET name = 'Guru99' WHERE rollno = 3;

Egy táblázatszintű alapértelmezett beállítás elkerüli a feltétel ismétlését minden utasításban.

ALTER TABLE University.Student WITH default_time_to_live = 86400;

Két következmény következik ebből. Először is, a TTL oszloponként érvényes, nem soronként, így egy oszlop TTL nélküli frissítése az adott oszlopot a többi lejárta után hátrahagyja, egy részben feltöltött sort hozva létre. A TTL teljes beszúrására való beállítása ezt elkerüli. Másodszor, minden lejáratkor egy sírkövet ír, így egy olyan tábla, ahol több millió sor jár le együtt, lelassítja az olvasást, amíg a tömörítés ki nem törli őket. A TimeWindowCompactionStrategy használata ilyen táblákhoz lehetővé teszi, hogy a teljes SSTable-ok egyszerre törlődjenek, ahelyett, hogy soronként tömörítenék őket.

A lejárat egy gyűjteményen belüli elemekre is alkalmazható, amelyet a következő tárgyal. Cassandra gyűjtemény tutorial.

GYIK

Nem. A TTL nem kulcsértékekhez kapcsolódik. Egy sor csak akkor tűnik el, ha minden nem kulcsoszlop lejárt, így a TTL teljes beszúrásra való beállítása a megbízható megközelítés.

A felső határ 630 720 000 másodperc, húsz év. Az e feletti értékeket a rendszer elutasítja, ezért a hosszabb megőrzési időt egy alkalmazásszintű tisztítási feladatnak kell kezelnie.

Fagyaszd le, ha a teljes érték mindig együtt van kiírva, vagy ha egy elsődleges kulcs részét képezi. Egy rögzített gyűjteményben az egyes elemek nem frissíthetők.

Általában igen, nyilvánvaló esetekben, de gyakran dupla értéket javasol a pénzérték, és uuid helyett, ahol a timeuid szükséges a sorrendhez. Ellenőrizze a numerikus pontosságot és az idő szerinti sorrend beállításait manuálisan.

Képes a megőrzési szabályzatot TTL-értékekké alakítani, és tömörítési stratégiát javasolni. Először is ellenőrizze a törvényes megőrzési időszakot, mivel a lejárt adatok nem állíthatók vissza.

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