Video: Trecerea zonei neutre de la Merisor cu un EC modernizat 2024
Dacă vă confruntați cu faza de proiectare pentru aplicația dvs. și credeți că HBase ar fi o potrivire bună, atunci proiectarea cheilor de rând și schema pentru a se potrivi modelului de date HBase și arhitectura este abordare corectă. Cu toate acestea, uneori are sens să mutați o bază de date creată inițial pentru o RDBMS către HBase.
Un scenariu comun în care această abordare are sens este o instanță de bază de date MySQL care a atins limitele de scalabilitate. Există tehnici pentru scalarea orizontală a unei instanțe MySQL (cu alte cuvinte, Sharpening, ), dar acest proces este, de obicei, greoaie și problematic, deoarece MySQL pur și simplu nu a fost conceput inițial pentru ștergere.
Trecerea de la modelul relațional la modelul HBase este o disciplină relativ nouă. Cu toate acestea, anumite modele de gândire stabilite au apărut și s-au coalizat în trei principii cheie care trebuie urmate atunci când se apropie o tranziție. Aceste principii sunt denormalizare, duplicare, și chei inteligente (DDI) .
-
Denormalizare: Modelul bazei de date relaționale depinde de a) o schemă de bază de date normalizată și b) se unește între tabele pentru a răspunde la operațiile SQL. Baza de date de normalizare este o tehnică care protejează împotriva pierderii de date, a redundanței și a altor anomalii, deoarece datele sunt actualizate și preluate.
Duplicarea:
-
Pe măsură ce denormalizați schema bazei de date, probabil veți termina duplicarea datelor deoarece vă poate ajuta să evitați operațiile de citire costisitoare din mai multe mese. Nu vă preocupați de depozitarea suplimentară (în mod normal); puteți utiliza scalabilitatea automată a HBase în avantajul dumneavoastră. Fiți conștienți, totuși, că cererea dvs. suplimentară va fi solicitată de către aplicația dvs. client pentru a duplica datele și rețineți că HBase nativ furnizează numai operațiuni atomice la nivel de linie care nu sunt transversale (cu excepția descrisă în HBASE-5229 JIRA) masa.
Cheile inteligente:
-
Deoarece datele stocate în HBase sunt ordonate de cheia rând, iar cheia rând este singurul indice nativ furnizat de sistem, un design inteligent atent al cheii rând poate face o diferență enormă. De exemplu, cheia dvs. de rând ar putea fi o combinație între un număr de comandă de serviciu și numărul de identificare al clientului care a plasat comanda de serviciu. Acest design al cheii de rând vă permite să căutați date referitoare la comanda de serviciu sau să căutați date referitoare la client folosind aceeași cheie de rând în același tabel. Această tehnică va fi mai rapidă pentru unele întrebări și va evita îmbinările costisitoare.
Pentru a clarifica aceste modele de gândire, luați o tabelă cu informații despre clienți și plasați-o în contextul unei baze de date tipice de comandă de servicii. Figura vă arată ce ar putea arăta o schemă de baze de date pentru comenzi de servicii normalizate.
În conformitate cu normele de normalizare a RDBMS, setați tabelul de eșantionare a informațiilor despre clienți, astfel încât să fie separat de tabelul pentru comenzi de servicii, pentru a evita pierderea datelor despre clienți atunci când comenzile de serviciu sunt închise și eventual eliminate. Utilizați aceeași abordare pentru tabelul Produse, ceea ce înseamnă că pot fi adăugate noi produse în baza de date fictivă a companiei, independent de comenzile de serviciu.
Bazându-se pe operațiile de integrare RDBMS, această schemă acceptă interogări care dezvăluie numărul de comenzi de servicii care sunt deschise împotriva unui anumit produs împreună cu locația clientului în care produsul este utilizat.
Asta e bine și dandy, dar este o schemă pe care o folosești cu RDBM. Cum transformați această schemă într-o schemă HBase? Următoarea figură ilustrează o posibilă schemă HBase - una care urmează modelul de design DDI.
Tabelul Informații despre persoanele de contact a fost denormalizat prin includerea numelui clientului și a informațiilor de contact în locul cheilor externe utilizate anterior. De asemenea, datele sunt duplicate, păstrând tabelul cu informații despre clienți ca atare. Acum intră în tabelul cu comenzi de servicii și nu este necesar tabelul Informații de contact pentru clienți.
În plus, a fost utilizată o schemă cheie inteligentă care combină numărul produsului cu numărul clientului pentru a forma numărul comenzii de serviciu (de exemplu, A100 | 00001). Folosind această cheie inteligentă, tabelul pentru comenzile de serviciu poate furniza rapoarte vitale despre deficiențele produsului și clienții care se confruntă în prezent cu probleme legate de produs.
Toate aceste interogări pot fi susținute de HBase la un nivel de nivel atomic pentru aplicație. Deoarece știți că HBase comandă cheile de rând și le sortează într-un mod lexicografic, aplicația dvs. poate face anumite presupuneri educate despre localitatea de date atunci când emit scanări pentru raportare. (Numerele de produse din seria A * vor fi stocate împreună, de exemplu.)
Baza de date pentru comenzi de servicii reprezentată de schema HBase este un exemplu relativ simplu, dar ilustrează modul în care HBase se poate intersecta în anumite cazuri cu RDBMS și oferă o valoare semnificativă. Dacă compania fictivă are terabiți sau chiar câțiva kilobiți de date despre apelurile de serviciu pentru stocare, HBase ar face o diferență uriașă în ceea ce privește costul, fiabilitatea, performanța și scara.
Puteți, bineînțeles, să proiectați comanda HBase a comenzii dvs. de servicii în mai multe moduri diferite. Desigur, designul depinde de întrebările care trebuie suportate, dar aveți posibilitatea de a trece unele baze de date relaționale la aplicații HBase foarte puternice pentru utilizarea în producție, atâta timp cât lucrați dintr-o înțelegere solidă a arhitecturii HBase și a modelului de design DDI.
Acest exemplu a presupus că interogările au fost efectuate de o aplicație Java care utilizează API-urile clientului HBase sau poate printr-o altă limbă folosind Apache Thrift. Acest model de aplicație poate corespunde cerințelor și oferă opțiuni utile de performanță și personalizare pentru compania fictivă de servicii.