Cassandra TTL & Cassandra Datové typy CQL (příklad)
⚡ Chytré shrnutí
Cassandra Datové typy definují, co může každý sloupec obsahovat, a TTL řídí, jak dlouho hodnota přežije, než automaticky vyprší její platnost. Tato stránka uvádí všechny typy CQL, vysvětluje mechanismus vypršení platnosti a popisuje chování náhrobků, které následuje po vypršení platnosti.

Cassandra Typy dat
Cassandra podporuje různé typy datových typů. Zde je tabulka, která ukazuje datové typy, jejich konstanty a popis.
| Typ CQL | Konstanty | Description |
|---|---|---|
| ascii | Strings | Řetězec znaků US-Ascii |
| bigint | Celé číslo | 64bitová podepsaná délka |
| kapka | kuličky | Libovolné bajty v šestnáctkové soustavě |
| boolean | Booleany | Pravda nebo lež |
| proti | Celé číslo | Distribuované hodnoty čítače 64 bitů |
| datum | Celá čísla, řetězce | Datum v kalendáři bez časové složky |
| desetinný | Celá čísla, plovoucí čísla | S proměnnou přesností v desítkové soustavě |
| zdvojnásobit | Celá čísla, plovoucí čísla | 64bitová plovoucí desetinná čárka |
| trvání | Trvání | Rozpětí měsíců, dnů a nanosekund |
| vznášet se | Celá čísla, plovoucí čísla | 32bitová plovoucí desetinná čárka |
| zmrazené | N-tice, kolekce, uživatelsky definované typy | Ukládá vícedílnou hodnotu jako jeden neměnný objekt blob. |
| inet | Strings | IP adresa ve formátu IPv4 nebo IPv6 |
| int | Celé číslo | 32bitové celé číslo se znaménkem |
| lest | Uspořádaná kolekce prvků | |
| mapa | Kolekce párů klíčů a hodnot ve stylu JSON | |
| sada | Neuspořádaná kolekce unikátních prvků | |
| smallint | Celé číslo | 16bitové celé číslo se znaménkem |
| (souhrnně „Stránka (Stránky)“), a naše postupy pro shromažďování, využívání, uchovávání, ochranu a zpřístupnění takových informací. Tyto zásady platí pro informace, které shromažďujeme na těchto stránkách nebo v e-mailu, textových a jiných elektronických zprávách mezi vámi a těmito stránkami. Rovněž popisují vaše možnosti týkající se využívání vašich osobních údajů, přístupu k nim a jejich opravě. | Strings | Řetězec kódovaný UTF-8 |
| čas | Celá čísla, řetězce | Denní čas s přesností na nanosekundy |
| timestamp | Celá čísla, řetězce | Datum plus čas, kódované v milisekundách od epochy |
| timeuid | UUID | UUID typu 1, seřaditelné podle času vložení |
| tinyint | Celé číslo | 8bitové celé číslo se znaménkem |
| n-tice | Pevná skupina typovaných polí | |
| Nový | UUID | Standardní UUID |
| varchar | Strings | Řetězec kódovaný v UTF-8, alias textu |
| varianta | Celé číslo | Libovolné přesné celé číslo |
Tři možnosti v tomto seznamu způsobují většinu chyb v modelování, proto je vhodné je explicitně uvést.
- text proti varcharu. Jsou stejného typu. Oba názvy fungují a jejich míchání nepřidává žádnou hodnotu.
- časové razítko oproti timeuuid. Pro zaznamenání, kdy se něco stalo, použijte časové razítko. Pokud mnoho událostí sdílí milisekundu, použijte timeuuid jako shlukovací sloupec, protože UUID zaručuje jedinečnost a zároveň se stále třídí podle času.
- desetinné číslo proti dvojnásobku. Peněžní hodnoty patří do desítkové soustavy. Dvojitá soustava (double) zavádí binární chybu zaokrouhlování, která se hromadí napříč agregacemi.
A proti Sloupec má speciální omezení: tabulka může obsahovat sloupce typu čítač nebo běžné sloupce, nikdy ne obojí, a řádky typu čítač nelze vkládat, pouze inkrementovat.
Cassandra TTL (Time to Live) pomocí automatického vypršení platnosti dat
Cassandra poskytuje funkcionalitu, pomocí které mohou data automaticky vypršet.
Během vkládání dat musíte zadat hodnotu 'ttl' v sekundách. Hodnota 'ttl' je hodnota doby do života dat. Po uplynutí této doby budou data automaticky odstraněna.
Například během vkládání zadejte hodnotu ttl 100 sekund. Data budou automaticky vymazána po 100 sekundách. Když vyprší platnost dat, jsou tato data označena náhrobkem.
Náhrobek existuje po dobu odkladu. Po vypršení platnosti dat jsou data po procesu zhutnění automaticky odstraněna.
Syntax
INSERT INTO KeyspaceName.TableName (ColumnNames) VALUES (ColumnValues) USING TTL TimeInSeconds;
Příklad
Zde je snímek, kde se vkládají data do studentské tabulky s hodnotou ttl 100 sekund.
INSERT INTO University.Student (rollno, name, dept, semester) VALUES (3, 'Guru99', 'CS', 7) USING TTL 100;
Zde je snímek, kde platnost dat automaticky vyprší po 100 sekundách a data jsou automaticky odstraněna.
Kontrola a změna TTL u existujících dat
Jakmile hodnota nese TTL, jsou užitečné další tři operace a každá z nich má chování, které překvapí nováčky.
Zbývající dobu platnosti libovolného sloupce, který není primárním klíčem, lze přečíst pomocí funkce TTL.
SELECT name, TTL(name) FROM University.Student WHERE rollno = 3;
Nulový výsledek znamená, že sloupec nemá nastavenou platnost. Sloupce primárního klíče nelze tímto způsobem dotazovat, protože hodnota TTL se připojuje k hodnotám, nikoli ke klíči.
Existující hodnotě lze přiřadit nový TTL její aktualizací, čímž se odpočítávání od daného okamžiku vynuluje.
UPDATE University.Student USING TTL 600 SET name = 'Guru99' WHERE rollno = 3;
Výchozí nastavení pro celou tabulku zabraňuje opakování klauzule v každém příkazu.
ALTER TABLE University.Student WITH default_time_to_live = 86400;
Z toho plynou dva důsledky. Zaprvé, TTL se vztahuje na sloupec, nikoli na řádek, takže aktualizace jednoho sloupce bez hodnoty TTL ponechá tento sloupec po vypršení platnosti ostatních sloupců, čímž vznikne částečně naplněný řádek. Nastavením hodnoty TTL na celý vložený řádek se tomu zabrání. Zadruhé, každá platnost vyprší, takže tabulka, kde miliony řádků vyprší současně, zpomalí čtení, dokud je komprimace nevymaže. Použití metody TimeWindowCompactionStrategy pro takové tabulky umožňuje odstranit celé tabulky SSTable najednou, nikoliv řádek po řádku.
Platnost vypršení lze také použít na prvky uvnitř kolekce, což je popsáno v Cassandra kolekce výukový program.


