Cuprins:
Video: Web Programming - Computer Science for Business Leaders 2016 2024
Capabilitățile de citire rapidă a stocurilor de la tastatură au la bază cheile bine definite. Aceste chei sunt în mod tipic hashed, ceea ce oferă o valoare de stocare a unei valori cheie o metodă foarte previzibilă de a determina care partiție (și, prin urmare, server) se află pe date. Un anumit server gestionează una sau mai multe partiții.
O tastă bună vă permite să identificați în mod unic înregistrarea unică care răspunde la o interogare fără a trebui să vă uitați la nici o valoare din acea înregistrare. O cheie greșită va cere ca codul dvs. de aplicație să interpreteze înregistrarea dvs. pentru a determina dacă aceasta corespunde, de fapt, interogării.
Dacă nu vă creați bine cheia, este posibil să ajungeți la un server care are o încărcătură disproporționat mai mare decât celelalte, ceea ce duce la performanțe slabe. Folosind actualul sistem de timp ca o cheie, de exemplu, împinge toate datele noi pe ultimul nod din cluster, ceea ce duce la un scenariu de coșmar al reechilibrării.
Partiționarea
Designul de partiții este important deoarece unele magazine cu cheie-valoare, cum ar fi Oracle NoSQL, nu permit modificarea numărului de partiții odată ce un cluster este creat. Distribuția acestora pe servere poate fi însă modificată. Deci, începeți cu un număr mare de partiții pe care le puteți răspândi în viitor.
Un exemplu de partiționare este abordarea consistentă a Voldemort, așa cum se arată. Aici veți vedea aceleași partiții distribuite inițial pe trei servere și apoi pe patru servere mai târziu. Numărul de partiții rămâne același, dar alocarea lor este diferită între servere. Același lucru este valabil și pentru replicile lor.
Accesarea datelor pe partiții
Magazinele cu valoare cheie sunt foarte bine distribuite fără un singur punct de eșec. Aceasta înseamnă că nu este nevoie de un nod de coordonare master pentru a urmări serverele dintr-un cluster. Gestionarea clusterului se face automat prin intermediul unui protocol de chat între nodurile din server.
Aveți posibilitatea să utilizați un truc în driverul clientului pentru a stoarce performanța maximă din recuperarea și stocarea cheilor și valorilor - driverul client ține evidența serverelor care dețin gama de taste. Deci, șoferul clientului știe cu ce server să vorbească.
Cele mai multe baze de date, inclusiv NoSQL, transmit o cerere tuturor membrilor unui cluster. Acest cluster acceptă scrierea internă sau o trece sub capotă la nodul corect. Această configurație înseamnă că este posibilă o deplasare suplimentară în rețea între noduri, ceea ce poate adăuga la latență.
Pentru a evita latența de descoperire, majoritatea driver-elor de magazine de tip key-value mențin o listă de metadate a nodurilor curente dintr-un cluster și ce cheie de partiție acoperă fiecare nod care gestionează.În acest fel, driverul client poate contacta serverul corect, ceea ce face operațiunile mai rapide.
Dacă un nou nod este adăugat într-un cluster și metadatele sunt depășite, cluster-ul informează driverul client, care apoi descarcă cele mai recente metadate de cluster înainte de a retrimite cererea către nodul corect. În acest fel, viteza maximă este menținută cu un minim de cheltuieli generale în timpul dezvoltării. Un alt beneficiu lateral este că nu este nevoie de un balancer de sarcină pentru a transmite interogări către serverul disponibil sau cel mai puțin ocupat - doar un singur server (sau un server de replici citite) primește vreodată o solicitare de client, deci nu este nevoie de echilibrare a încărcării.