Introducere în modelul de date în Cassandra
Apache Cassandra a devenit una dintre cele mai puternice baze de date NoSQL. Este alegerea potrivită atunci când doriți o disponibilitate ridicată și scalabilitate, fără a compromite performanța, în special pentru aplicațiile care nu își pot permite să piardă date. În acest subiect, vom afla despre modelul de date din Cassandra.
Un fapt rapid, inginerii Cassandra sunt printre cei mai bine plătiți profesioniști din domeniul tehnologiei astăzi. Companii precum Netflix, Instagram și Apple folosesc Cassandra pentru a oferi experiență clienților extrem de individualizată. Pentru a obține performanțele potrivite, trebuie să proiectați cu atenție schema specifică problemei de afaceri. În acest articol, vom analiza modelul de date Cassandra, care este semnificativ diferit de ceea ce vedem în RDBMS.
Regulile modelului de date Cassandra
În cuvinte simple, modelul de date este structura logică a unei baze de date. Descrie modul în care datele sunt stocate și accesate și relațiile dintre diferitele tipuri de date.
Alegerea modelului corect de date poate fi cea mai dificilă parte a utilizării unei baze de date NoSQL precum Cassandra. După cum am menționat anterior, modelarea datelor în Cassandra este diferită de ceea ce vedem într-un RDBMS.
Cheia de partiție și cheia de clustering sunt termenii de care oricine se ocupă de Cassandra ar trebui să fie conștient. Înainte de a ne afunda în regulile de bază ale modelării datelor în Cassandra, să analizăm rapid ce înseamnă acești termeni,
perete despărțitor
Cassandra este o bază de date distribuită în care datele sunt partiționate și stocate pe diferite noduri dintr-un cluster. Datele sunt împărțite folosind o cheie de partiție - care poate fi unul sau mai multe câmpuri de date. Această cheie de partiție este folosită pentru a crea un mecanism de hashing pentru a răspândi date uniform pe toate nodurile.
grup
Un cluster este o colecție de noduri care reprezintă o singură bază de date logică. O cheie de clustering este formată din unul sau mai multe câmpuri care sunt utilizate pentru a grupa datele împreună într-o partiție.
În aceste restaurante de masă, datele vor fi partiționate folosind country_code, state_name și city_name, iar în cadrul respectivei partiții datele vor fi grupate și sortate în funcție de open_data și restaurant_name.
Acum, să ne uităm la cele două reguli pentru modelarea datelor care ar trebui să fie luate în considerare.
- Datele sunt distribuite uniform în întregul cluster
- Citiți din cât mai puține partiții
Să ne uităm la ce încearcă să transmită aceste reguli
- Știm ce este corect un cluster? Un cluster este format din mai multe noduri. Vrem să partițiem datele între aceste noduri, astfel încât fiecare nod să aibă aproximativ aceeași cantitate de date. După cum știm, datele sunt partiționate în diferite noduri folosind un hash al cheii de partiție (care este prima cheie a cheii primare), deci pe scurt „Ar trebui să alegeți o cheie primară bună”.
- Fiecare partiție se află pe un nod diferit, astfel încât atunci când preluați date, doriți să vă asigurați că datele sunt preluate din cât mai puține partiții. Dacă interogarea dvs. necesită date din diferite partiții, se va emite o comandă pentru a separa noduri pentru a vă obține aceste date, care vor fi aeriene și vor duce la latență.
Cheia unui model de date eficient ar fi un echilibru între aceste două reguli.
Relații de manipulare în Cassandra
Un lucru de reținut este modelarea datelor în Cassandra se face folosind abordarea bazată pe interogare, spre deosebire de RDBMS, unde identificați mai întâi entități, creați tabele, apoi formați interogări folosind JOINS pentru a prelua date.
Pentru a spune cuvinte simple, nu modelăm în jurul relațiilor sau obiectelor, modelăm în jurul interogărilor.
1. Relația unu la unu
Luați în considerare într-o universitate un student se poate înscrie la un singur seminar. Aceasta este o relație unu la unu. Respectând regula nr. 1 ne gândim la întrebările dorite. Vreau să caut seminarul la care participă un student. În acest caz, vom realiza doar un tabel. Tabelul trebuie să conțină detaliile studentului și detaliile seminarului.
2. Relația unu la multe
În același context, dacă aș dori să caut pe toți studenții care participă la un seminar. În loc să folosesc aceeași tabelă și să mă iteresc pe fiecare rând pentru a obține numele studentului pentru acel seminar special, pot face un alt tabel care repartizează datele după numele seminarului. Așadar, atunci când emit interogarea, aceasta atinge doar un nod decât să meargă la toate nodurile pentru a obține numele seminarului.
3. Multe la multe relații
Acum, să luăm în considerare, un student poate participa la multe seminarii, iar la un seminar pot participa mulți studenți. Aici avem relații de la multe la multe. În acest caz, puteți exploata cele două tabele de mai sus pentru a efectua interogări fără a avea un prealabil de a face interogări complexe folosind Joins pe care le faceți de obicei în RDBMS.
Importanța Cassandrei
Odată cu extinderea rapidă a datelor digitale, devine mai important să existe o bază de date extrem de scalabilă, care să tolereze erorile. Permiteți-mi să enumerez câteva puncte despre motivul pentru care ar trebui să folosiți Cassandra
- Operațiuni de citire rapidă: Am discutat despre modul în care modelarea datelor dvs. în mod corect poate optimiza operațiunile de citire pe scară masivă.
- Tolerant la erori: datele sunt reproduse pe noduri, astfel încât chiar dacă un nod coboară datele dvs. este în siguranță.
- Reglare personalizată: Puteți configura Cassandra să funcționeze în funcție de volumul de muncă. Dacă scrieți o mulțime de date, cum ar fi jurnalul, îl puteți regla pentru a gestiona sisteme de scriere grea. Există mai multe alte opțiuni de reglare disponibile.
- Tratând volumele mari de date: pe baza dimensiunii clusterului, Cassandra poate face față volumelor uriașe de date.
Cum se modelează datele în Cassandra?
O bună modelare a datelor urmează acești pași
- Conceptualizează întrebările solicitate de aplicația ta
- Crearea de tabele pentru a satisface aceste interogări
Înainte de a aplica aceste reguli, un lucru de reținut este: „Ne concentrăm pe optimizarea operațiunilor noastre de citire, chiar dacă necesită duplicarea datelor”. Putem avea multe tabele care pot conține date aproape similare.
Acum, consideră că dorim o bază de date care să stocheze informații despre restaurante. Să punem o constrângere a faptului că numele restaurantelor trebuie să fie unice.
Tabelul de mai jos poate fi utilizat atunci când dorim să facem căutări pe baza numelui restaurantului:
Acum, dacă dorim să căutăm restaurantele pentru o anumită locație, am scrie o întrebare care iterează prin toate rândurile și preia numele restaurantelor.
În schimb, ținând cont de regula nr. 2, putem crea cu ușurință un alt tabel care să ne servească nevoia.
Acum datele noastre vor fi partiționate într-un mod în care un nod din cluster va avea restaurante pentru o anumită locație. Acest lucru va optimiza interogările noastre citite, deoarece căutarea de interogări se va întâmpla doar pe un nod cu rânduri mult mai mici decât primul tabel creat.
Și dacă am dori să căutăm restaurante într-un anumit oraș, putem face un alt tabel, mai degrabă decât să reparăm toate rândurile dintr-o singură partiție a tabelului de mai sus.
Concluzie
În acest articol, am acoperit câteva dintre cele mai bune practici pe care le puteți urma una despre cum să abordați modelarea datelor în Cassandra. Dacă înțelegeți aceste concepte și puteți recunoaște eficient tipul de întrebări de care are nevoie aplicația dvs., puteți proiecta un model de date excelent pentru a obține performanțe ridicate din baza de date.
Articole recomandate
Acesta este un ghid pentru Modelul de date din Cassandra. Aici vom discuta despre cum să modelăm datele noastre în Cassandra împreună cu regulile și importanța modelelor de date Cassandra. Puteți parcurge și alte articole sugerate pentru a afla mai multe -
- Ce este modelarea datelor?
- Modele de date în SGBD
- Întrebări de interviu pentru modelarea datelor
- Modelarea datelor Cassandra