Cuprins
În tutorialele anterioare cu care am intrat pe deplin CQL și modul în care ne ajută să ne gestionăm Cassandra, am văzut operațiunile de bază pentru spații de taste și tabelele din Cassandra, le-am putea aplica pentru a crea o structură inițială în baza de date, cu toate acestea există o cantitate considerabilă de concepte avansate pe care trebuie să le cunoaștem pentru a obține maximum de Cassandra.Aceste concepte sau caracteristici pentru a le numi într-un fel, ne permit să realizăm funcționalități diferite în tabelele noastre, oferindu-ne o serie de posibilități mult mai mari decât restul celorlalte. Baza de date NoSQL.
Anterior am creat câteva tabele și am folosit valori cum ar fi textul sau data pentru coloanele noastre, dar aceasta nu este doar atât CQL are disponibile, să vedem tipurile de date pe care le avem pentru operațiunile noastre:
asciiȘir de caractere US-ASCII.
bigintO valoare întreagă pe 64 de biți.
blobTipul de date exprimat ca hexazecimal în consola de comandă a CQLÎn plus, nu are validare și se bazează pe octeți arbitrari.
booleanTipul clasic de date booleene în care valorile sale pot fi adevărate sau false.
tejgheacontorul este un nou tip de date pentru aceia dintre noi care provin din lumea relațională și indică faptul că este distribuit pe 64 de biți.
zecimalUn alt tip de date pe care îl putem recunoaște, care ne oferă precizie zecimală pentru informațiile noastre.
dublaTipul de date în virgulă mobilă, dar bazat pe 64 de biți.
plutiLa fel ca precedentul, este un tip de date în virgulă mobilă, dar bazat pe 32 de biți.
inetAcest tip este destul de particular și foarte util în același timp și ne permite să stocăm un șir de caractere ale unei adrese IP, acceptă atât formatul IPV4 Ce IPV6.
intTipul clasic de date întregi care acceptă numere de până la 32 de biți.
listăUn alt tip de date care debutează în Cassandra și ne permite să stocăm o colecție ordonată de elemente.
HartăLa fel ca lista, este un alt tip de date noi și ne permite să stocăm o matrice asociativă, care este foarte utilă pentru dezvoltarea aplicațiilor.
a stabilitSimilar cu tipul de date din listă, stochează o colecție de articole, dar în nici o ordine specifică.
textStochează un șir de caractere codificat.
timestamp-ulTipul de date care stochează data și ora, codificate ca un număr întreg de 8 octeți.
varintTipul de date de precizie pentru numere întregi arbitrare.
După cum putem vedea, există multe tipuri de date pe care le putem recunoaște dacă venim din lumea relațională, cum ar fi altele pe care le vom vedea pentru prima dată și care fac Cassandra se remarcă deasupra altor baze de date.
În Cassandra nu numai că avem tipuri de date pentru tabelele noastre, datorită CQL Putem atribui tabelelor din proprietățile bazei noastre de date care ne ajută enorm în sarcinile de întreținere și dezvoltare, să vedem ce avem la dispoziție.
CachingAceastă proprietate ne oferă optimizarea memoriei cache. Nivelurile disponibile pentru această proprietate sunt Acolo sau tuturor, chei_numai sau doar chei, rânduri_numai sau doar rânduri și nici unul sau nici unul. Cu toate acestea, toate opțiunile sunt destul de utile numai_rând trebuie utilizat cu grijă ca Cassandra puneți o cantitate considerabilă de date în memorie atunci când opțiunea este utilizată.
cometariuO opțiune care este prezentă în modelul relațional și este utilizată de administratori sau dezvoltatori pentru a face notițe și a evidenția detalii importante în tabele.
CompactareaAceastă proprietate permite definirea strategiei de gestionare a mentă, poate fi de următoarele tipuri: Primul SizeTiered care se declanșează atunci când tabelul trece de o limită, avantajul utilizării acestei strategii este că nu degradează performanța la scriere, totuși are un dezavantaj este că folosește ocazional de două ori dimensiunea datelor de pe disc, rezultând o performanță slabă citind. A doua strategie este Compactare nivelată și funcționează la diferite niveluri în timp, alăturând tabelele cu altele mai lungi, rezultând o performanță de citire destul de bună.
ComprimareAceastă proprietate determină modul în care informațiile vor fi comprimate. Putem selecta pentru a obține avantaje în ceea ce privește viteza sau spațiul, unde cu cât viteza este mai mare, cu atât este mai puțin spațiu pe disc salvat.
Gc_grace_secondsAceastă proprietate definește timpul de așteptare pentru a elimina informațiile de pe pietre funerare. În mod implicit, sunt 10 zile.
Populate_io_cache_on_flushAceastă proprietate este dezactivată în mod implicit și ar trebui să o activăm numai dacă sperăm că toate informațiile se vor potrivi în memoria cache.
Read_repair_chanceO proprietate foarte interesantă care indică un număr între 0 și 1.0 care specifică probabilitatea de a repara informațiile atunci când cvorumul nu este atins. Valoarea implicită este 0,1.
Replicate_on_writeAceastă proprietate se aplică numai tabelelor de tip tejghea. Când sunt definite, replicile scriu tuturor replicilor afectate, ignorând nivelul de consistență specificat.
Deci știm deja ce avem, atât la nivelul tipurilor de date, cât și al proprietăților, este timpul să aplicăm câteva dintre lucrurile învățate la tabelele noastre în Cassandra.
Mai întâi vom crea un tabel simplu căruia îi vom aplica proprietatea de comentarii, să vedem sintaxa pe care o vom folosi pentru aceasta:
CREAȚI articole de TABEL (titlul textului, conținutul textului, categoria textului, CHEIA PRIMARĂ (titlul)) CU comentariu = 'Tabel pentru stocarea informațiilor articolului';Ne deschidem consola de comandă CQL și ne creăm tabelul cu proprietatea menționată, să vedem cum arată:
După cum știm deja, consola de comandă nu returnează nimic, cu excepția faptului că nu există nicio eroare, dar dacă vrem să vedem aceste modificări, putem merge la OpsCenter și verificați dacă totul a decurs corect:
MARI
După cum putem vedea, putem vedea comentariul nostru și alte proprietăți cu valorile lor implicite. Este important de menționat că definiția restului proprietăților din Cassandra este destul de simplu, așa cum am putut vedea cu exemplul anterior, folosind sintaxa CU o putem face fără nicio problemă.Vom realiza un alt exemplu în care vom defini proprietățile comprimare Da compactare dar pentru aceasta este important să știm că au o serie de subopțiuni pentru utilizarea lor, să vedem pentru comprimare că ar trebui să știm:
Compresie_stabilăAceastă opțiune specifică algoritmul de compresie de utilizat, valorile sale sunt: LY4Compressor, SnappyCompressor, Da DeflateCompressor.
Chunck_length_kbTabelele sunt comprimate de blocuri. Valorile mai lungi oferă în general o compresie mai bună, dar măresc dimensiunea informațiilor de citit. În mod implicit, această opțiune este setată la 64 kb.
Manipularea opțiunilor de compresie poate duce la o creștere semnificativă a performanței, inclusiv multe implementări ale Cassandra Sunt cu acele valori implicite, dar pentru perfecțiune este necesar să folosiți aceste valori. Să vedem acum ce trebuie să știm compactare:
ActivatDetermină dacă proprietatea va rula în tabel, deși în mod implicit toate proprietățile au compactare activat.
ClasăAici vom defini tipul de strategie pentru tratarea tabelelor.
prag_minAceastă valoare este disponibilă împreună cu strategia SizeTiered y reprezintă numărul minim de tabele necesare pentru a începe un proces de compactare. Este definit în mod implicit la 4.
prag_maxDisponibil în același mod în strategie SizeTiered y definește numărul maxim de tabele procesate în compact. Este definit în mod implicit la 32.
Acestea sunt unele dintre cele mai importante opțiuni pentru aceste proprietăți, ceea ce este important de menționat este că pentru definirea acestor opțiuni trebuie să folosim o sintaxă JSON Pentru a fi valid, să vedem un exemplu de includere a acestor două proprietăți:
CREATE TABLE table_for_properties (int id, nume text, proprietate text, număr varint, CHEIE PRIMARĂ (id)) WITHcompression = {'sstable_compression': 'DeflateCompressor', 'chunk_length_kb': 64} ANDcompaction = {'class': 'SizeTieredCompactionStrategy', 'min_threshold': 6};După cum putem vedea, am schimbat tipul de compresie și am definit dimensiunea pentru aceasta, în plus pentru compactare am lăsat strategia obișnuită cu valoarea clasă și am definit prag_min ca 6 a crescut valoarea implicită astfel, pentru a finaliza, să vedem cum arată acest lucru atunci când îl executăm în consola noastră de comandă:
În ultimul tutorial am putut vedea că, ca urmare a definirii mai multor chei primare, acestea sunt create ca chei de grupare și spune-ne calea Cassandra sortează informațiile, în mod implicit ordinea este definită în ordine crescătoare și efectuarea unei interogări în ordine descrescătoare poate cauza probleme de performanță, cu toate acestea Cassandra are o soluție pentru orice problemă și este cu propoziția CLUSTERING ***** BY. Să vedem cum să-l folosim.
CREAȚI TABEL comenzi_utilizatori (text utilizator, marcaj orar dată, plată salarială, text departament, text supervizor, CHEIE PRIMARĂ (utilizator, dată)) CU CLUSTERING ***** BY (data DESC);Să ne executăm sintaxa în consola de comandă și să vedem cum arată:
După cum am putut vedea, a fost destul de ușor să rezolvăm această problemă doar cu o linie simplă, dar, mai important, am reușit să ne extindem cunoștințele atunci când vine vorba de manipularea tabelelor în Cassandra, cu care terminăm acest tutorial, unde am acoperit tot ce trebuie să știm pentru crearea optimă a tabelelor în Cassandra.