Cassandra TTL & Cassandra Tipuri de date CQL (exemplu)
⚡ Rezumat inteligent
Cassandra Tipurile de date definesc ce poate conține fiecare coloană, iar TTL controlează cât timp o valoare supraviețuiește înainte de a expira automat. Această pagină listează fiecare tip CQL, explică mecanismul de expirare și prezintă comportamentul de tip tombstone care urmează expirării.
Cassandra Tipuri de date
Cassandra acceptă diferite tipuri de date. Iată tabelul care arată tipurile de date, constantele acestora și descrierea.
| Tip CQL | constante | Descriere |
|---|---|---|
| ascii | Corzi | Șir de caractere US-Ascii |
| bigint | Întregi | 64 de biți semnat lung |
| pată de cerneală | Blobs | Octeți arbitrari în hexazecimal |
| boolean | booleane | Adevărat sau fals |
| contracara | Întregi | Contor distribuit valori 64 de biți |
| data | Numerele întregi, șiruri de caractere | Dată calendaristică fără componentă de timp |
| zecimal | Numerele întregi, flotanți | Decimală de precizie variabilă |
| dubla | Numerele întregi, flotanți | 64-bit virgulă mobilă |
| durată | Durată | O perioadă de luni, zile și nanosecunde |
| pluti | Numerele întregi, flotanți | 32-bit virgulă mobilă |
| congelate | Tupluri, colecții, tipuri definite de utilizator | Stochează o valoare formată din mai multe părți ca un singur blob imuabil |
| INET | Corzi | Adresă IP în format IPv4 sau IPv6 |
| int | Întregi | Număr întreg cu semn pe 32 de biți |
| listă | Colecție ordonată de elemente | |
| Hartă | Colecție în stil JSON de perechi de chei și valori | |
| set | Colecție neordonată de elemente unice | |
| smallint | Întregi | Număr întreg cu semn pe 16 de biți |
| a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match. | Corzi | Șir codificat UTF-8 |
| timp | Numerele întregi, șiruri de caractere | Ora din zi cu precizie de nanosecunde |
| timestamp-ul | Numerele întregi, șiruri de caractere | Data plus ora, codificate în milisecunde de la epocă |
| timeuuid | UUID-uri | UUID de tip 1, sortabil după ora încorporată |
| tinyint | Întregi | Număr întreg cu semn pe 8 de biți |
| tuplu | Un grup fix de câmpuri tipizate | |
| uuid | UUID-uri | UUID standard |
| varchar | Corzi | Șir codificat UTF-8, un alias de text |
| varint | Întregi | Număr întreg de precizie arbitrară |
Trei opțiuni din acea listă cauzează cele mai multe greșeli de modelare, așa că merită menționate explicit.
- text împotriva varchar. Sunt de același tip. Ambele denumiri funcționează, iar combinarea lor nu adaugă nicio valoare.
- marcaj temporal față de timeuuid. Folosește timestamp pentru a înregistra când s-a întâmplat ceva. Folosește timeuuid ca o coloană de grupare atunci când mai multe evenimente partajează o milisecundă, deoarece UUID garantează unicitatea, sortând în același timp după timp.
- zecimal împotriva dublu. Valorile monetare aparțin în zecimal. Un număr dublu introduce o eroare de rotunjire binară care se acumulează în agregări.
A contracara coloana are o restricție specială: un tabel poate conține coloane contor sau coloane obișnuite, niciodată ambele, iar rândurile contor nu pot fi inserate, ci doar incrementate.
Cassandra TTL (Time to Live) folosind expirarea automată a datelor
Cassandra oferă funcționalitate prin care datele pot fi expirate automat.
În timpul inserării datelor, trebuie să specificați valoarea „ttl” în secunde. Valoarea „ttl” este valoarea timpului de viață pentru date. După această perioadă de timp, datele vor fi șterse automat.
De exemplu, specificați valoarea ttl 100 de secunde în timpul inserării. Datele vor fi șterse automat după 100 de secunde. Când datele sunt expirate, acele date expirate sunt marcate cu o piatră funerară.
O piatră funerară există pentru o perioadă de grație. După expirarea datelor, datele sunt eliminate automat după procesul de compactare.
Sintaxă
INSERT INTO KeyspaceName.TableName (ColumnNames) VALUES (ColumnValues) USING TTL TimeInSeconds;
Exemplu
Aici este instantaneul în care datele sunt inserate în tabelul Student cu valoarea ttl de 100 de secunde.
INSERT INTO University.Student (rollno, name, dept, semester) VALUES (3, 'Guru99', 'CS', 7) USING TTL 100;
Aici este instantaneul în care datele expiră automat după 100 de secunde și datele sunt eliminate automat.
Verificarea și modificarea TTL-ului pe datele existente
Odată ce o valoare poartă un TTL, sunt utile trei operații suplimentare, fiecare având un comportament care surprinde pe noii veniți.
Durata de viață rămasă a oricărei coloane care nu este cu cheie primară poate fi citită cu funcția TTL.
SELECT name, TTL(name) FROM University.Student WHERE rollno = 3;
Un rezultat nul înseamnă că coloana nu are setată nicio expirare. Coloanele cu cheie primară nu pot fi interogate în acest fel, deoarece TTL-ul se atașează valorilor și nu cheii.
Unei valori existente i se poate atribui un nou TTL prin actualizarea acesteia, ceea ce resetează numărătoarea inversă din acel moment.
UPDATE University.Student USING TTL 600 SET name = 'Guru99' WHERE rollno = 3;
O valoare implicită la nivel de tabel evită repetarea clauzei la fiecare instrucțiune.
ALTER TABLE University.Student WITH default_time_to_live = 86400;
Urmează două consecințe. În primul rând, TTL se aplică pe coloană, nu pe rând, așadar actualizarea unei coloane fără un TTL lasă acea coloană în urmă după ce restul expiră, producând un rând parțial populat. Setarea TTL pentru întreaga inserție evită acest lucru. În al doilea rând, fiecare expirare scrie o eroare de citire, astfel încât un tabel în care milioane de rânduri expiră împreună va încetini citirile până când compactarea le șterge. Utilizarea TimeWindowCompactionStrategy pentru astfel de tabele permite eliminarea simultană a întregilor tabele SSTable, în loc să fie compactate rând cu rând.
Expirarea poate fi aplicată și elementelor dintr-o colecție, ceea ce este acoperit de Cassandra colecții tutorial.



