Acasă Finanțe personale Aplicarea metodelor de consistență în NoSQL - dummies

Aplicarea metodelor de consistență în NoSQL - dummies

Cuprins:

Video: Reguli de aur pentru aplicarea tapetului 2024

Video: Reguli de aur pentru aplicarea tapetului 2024
Anonim

Proprietatea unei baze de date înseamnă că odată ce datele sunt scrise într-o bază de date cu succes, interogările care urmează pot accesa datele și pot obține o vizualizare consecventă a datelor. În practică, aceasta înseamnă că dacă scrieți o înregistrare într-o bază de date și apoi solicitați imediat acea înregistrare, veți avea garanția că o veți vedea. Este deosebit de util pentru lucruri precum comenzi Amazon și transferuri bancare.

Totuși, consistența este o scală de alunecare și un subiect prea adânc pentru a acoperi aici. Cu toate acestea, în lumea NoSQL, consistența se încadrează în general în unul din cele două tabere:

  • ACID Consistența (ACID înseamnă Atomicitate, Consistență, Izolare, Durabilitate): ACID înseamnă că odată ce datele sunt scrise, citește.

  • Eventual Consistency (BASE): BASE înseamnă că odată ce datele sunt scrise, vor apărea în cele din urmă pentru lectură.

O bătălie a izbucnit între oameni care cred că o consistență puternică într-o bază de date nu este necesară și cei care cred că este absolut necesar (traduce oameni la departamente de marketing! ).

Realitatea este undeva între ele. Contează că postarea unei persoane de pe Facebook nu este văzută de toți prietenii săi timp de cinci minute? Nu, probabil că nu. Schimbați "postul Facebook" la "miliarde de dolari tranzacție financiară", totuși, și atitudinea dvs. se schimbă rapid! Care abordare de consistență pe care o alegeți depinde de situație. Din experiența mea, totuși, o consistență puternică este întotdeauna alegerea în situațiile critice ale sistemului de întreprindere.

Această bază de date are facilități pentru a vă împiedica să corupe sau să pierdeți date,

" care nu este dată pentru toate bazele de date. De fapt, marea majoritate a bazelor de date NoSQL nu oferă garanții ACID. Fundamentele DB, MarkLogic și Neo4j sunt excepții notabile. Unele baze de date NoSQL furnizează o garanție de grad inferior numită Verificați și setați

care verifică dacă altcineva a modificat un document înainte de a permite finalizarea unei tranzacții. Acest comportament este de obicei limitat deoarece tinde să fie implementat pe o singură înregistrare. MongoDB este o bază de date notabilă care oferă capabilități de verificare și setare. Cu MongoDB, o întreagă valoare a datelor poate fi blocată în timpul unei actualizări, împiedicând astfel toate operațiile de citire și de scriere până la finalizarea operației.Compania lucrează la eliminarea acestei limitări. BASE

BASE înseamnă că, mai degrabă decât să garanteze ACID, baza de date are un echilibru de consistență și disponibilitate a datelor. Acest lucru este în mod obișnuit atunci când nodurile dintr-un cluster de baze de date date acționează ca administratori primari ai unei părți a bazei de date și alți noduri dețin replici doar pentru citire.

Pentru a se asigura că fiecare client vede toate actualizările (adică are o vizualizare consecventă a datelor), scrierea la nodul primar care deține datele trebuie să fie blocată până când toate replicile citite sunt actualizate. Aceasta se numește

două

- comitează faza - modificarea se face local, dar se aplică și se confirmă clientului numai când toate celelalte noduri sunt actualizate. BASE relaxează această cerință, cerând ca doar o submulțime a nodurilor care dețin aceleași date să fie actualizată pentru ca tranzacția să reușească. Uneori după ce tranzacția este comisă, replica numai pentru citire este actualizată. Avantajul acestei abordări este acela că tranzacțiile sunt angajate mai rapid. O replică live care poate fi citită înseamnă, de asemenea, că vă puteți răspândi sarcina de citire a datelor, ceea ce face citirea mai rapidă.

Dezavantajul este că clienții care se conectează la unele dintre replicile citite pot vedea informații depășite pentru o perioadă nespecificată de timp. În unele scenarii, această stare este bine. Dacă postați un mesaj nou pe Facebook și unii dintre prietenii dvs. nu îl văd timp de câteva minute, nu este o pierdere uriașă. Dacă trimiteți un ordin de plată băncii dvs., totuși, ați putea dori o tranzacție imediată.

O abordare alternativă a replicilor doar pentru citire este să aibă un cluster

partajat

- nimic în care numai un nod dintr-un cluster servește întotdeauna o anumită parte a bazei de date. Totuși, nimic nu înseamnă că pierzi replicarea. Bazele de date care utilizează această metodă în mod obișnuit repetă datele lor într-o zonă secundară dintr-un alt nod primar sau noduri - dar numai un singur nod este masterul pentru citirea și scrierea în orice moment. Clusterele partajate nu au avantajul unui model de consistență mai simplu, dar necesită un comitet în două faze pentru replici. Acest fapt înseamnă că tranzacția se blochează în timp ce toate replicile sunt actualizate. (O blocare internă plus blocare pentru alte noduri vă oferă două faze.)

De obicei, aceasta are un impact mai redus decât clustele de date partajate, cu replici numai pentru citire, deoarece zonele de date replicate, partajate, nu primesc solicitări de citire o parte din baza de date. Prin urmare, comitetele în două faze sunt mai rapide pe un cluster partajat decât pe un cluster cu replici ușor de citit.

Alegerea ACID sau BASE?

Așa cum v-ați putea aștepta, o mare parte din argument este pentru că vânzătorii NoSQL se pot diferenția de concurenții lor, pretind o abordare diferită, unică. Este interesant de remarcat însă numărul de furnizori NoSQL care respectă cerințele ACID în foaia de parcurs.

Unele baze de date NoSQL au o conformitate cu ACID în foaia de parcurs, chiar dacă sunt susținători ai BASE, care arată cât de relevante sunt garanțiile ACID pentru sistemele

enterprise, mission

- critice . Multe companii utilizează produse de consistență BASE atunci când testează idei pentru că sunt libere, dar migrează apoi la o bază de date plătită în conformitate cu ACID atunci când doresc să meargă în direct pe un sistem critic de misiune. Cea mai ușoară modalitate de a decide dacă aveți nevoie de ACID este de a lua în considerare interacțiunile pe care oamenii și alte sisteme le au cu datele dvs. De exemplu, dacă adăugați sau actualizați date, este important ca următoarea interogare să poată vedea schimbarea? Cu alte cuvinte, deciziile importante sunt legate de starea actuală a bazei de date? Vedeți date ușor depășite înseamnă că aceste decizii ar putea fi eronate în mod fatal?

În serviciile financiare, nevoia de coerență este evidentă. Gândiți-vă la comercianții care achiziționează acțiuni. Ei trebuie să verifice soldul de numerar înainte de tranzacționare pentru a se asigura că au bani pentru a acoperi tranzacția. Dacă nu văd soldul corect, ei vor decide să cheltuiască bani pentru o altă tranzacție. Dacă baza de date pe care o interoghează este doar în cele din urmă consecventă, este posibil ca acestea să nu vadă lipsa fondurilor suficiente, expunând astfel organizația lor la riscuri financiare.

Cazuri similare pot fi construite pentru ACID peste BASE în domeniul sănătății, al apărării, al serviciilor de informații și al altor sectoare. Cu toate acestea, totul se reduce la date, dar, și importanța atât de actualitate și de securitate a datelor.

Aplicarea metodelor de consistență în NoSQL - dummies

Alegerea editorilor

Evaluarea Vizualizărilor de date - dummies

Evaluarea Vizualizărilor de date - dummies

Vizualizările de date pot fi foarte colorate și impresionante. Dar amintiți-vă că cheia pentru crearea unor vizualizări eficiente de date nu depinde de faptul dacă este interesantă, ci mai degrabă de faptul dacă descoperă problemele reale de afaceri care trebuie abordate. O foaie de lucru vă ajută să creați propriile vizualizări de date sau să evaluați creațiile altora. Aici ...

Determinarea programului care funcționează cel mai bine pentru nevoile tale informatice

Determinarea programului care funcționează cel mai bine pentru nevoile tale informatice

Să lucreze mai bine decât celălalt. În timp, veți dezvolta un sentiment dacă Illustrator sau Photoshop se potrivesc mai bine pentru diverse sarcini. Până atunci, iată un exemplu despre modul în care fiecare program gestionează diferite elemente ale lucrării de design grafic. Graphing Photoshop nu este un program de grafic. Tu ...

Infografice nevergreen: Închirierea obiectelor Build - dummies

Infografice nevergreen: Închirierea obiectelor Build - dummies

Infografics evergreen nu sunt legate de niciun eveniment sau persoană în știri . Ele nu au o componentă sezonieră și nu sunt legate de ceva în timp util. O infographic despre cum se fac CD-urile se va aplica pentru că este vorba de muzică, dar nu este specifică nici unui artist sau gen. Cu infografiile veșnic verzi, ignorați complet evenimentele curente și explorați ideile ...

Alegerea editorilor

Utilizați Zoom în Adobe Photoshop CS5 - manechine

Utilizați Zoom în Adobe Photoshop CS5 - manechine

Adobe Creative Suite 5 oferă scurtături pentru Zooming în Photoshop. Imaginile care arată bine la un nivel de zoom pot părea extrem de proaste la altul. Veți mări și micșora destul de des în timp ce lucrați la imagini în Photoshop. Puteți găsi opțiuni de meniu pentru zoom în meniul Vizualizare; o modalitate mai rapidă de a mări este ...

Text în Photoshop CC - dummies

Text în Photoshop CC - dummies

Când editați o imagine cu text în Photoshop CC, puteți schimba linia care fluxul dvs. de tip fie folosind funcția Warp Text sau tastând pe o cale. Tipul de deformare utilizează forme predefinite la care se formează tipul dvs. (și poate fi utilizat atât cu tipul de punct, cât și cu paragraful) și tastând ...

Alegerea editorilor

Cum se adaugă Biblioteca RegEx în C ++ - dummies

Cum se adaugă Biblioteca RegEx în C ++ - dummies

Cea mai mare parte a bibliotecii Boost funcționează bine adăugând la codul aplicației. Cu toate acestea, câteva componente, cum ar fi RegEx, necesită o bibliotecă. Înainte de a putea folosi o bibliotecă, trebuie să o construiți. După ce ați construit biblioteca, trebuie să o adăugați în aplicație. Există două tehnici de adăugare a ...

Cum Heap Works în C ++ - dummies

Cum Heap Works în C ++ - dummies

Halda este un bloc amorf de memorie pe care programul C ++ îl poate accesa după cum este necesar. Aflați de ce există și cum se utilizează. Așa cum este posibil să treci un pointer la o funcție, este posibil ca o funcție să returneze un pointer. O funcție care returnează adresa ...

Cum să evitați codul de injectare în C ++ - dummies

Cum să evitați codul de injectare în C ++ - dummies

Prima regulă de evitare a codului injectat în programele C ++ , permiterea prelucrării datelor de către un interpret de limbă cu scop general. O eroare obișnuită cu SQL-injectarea este că programul acceptă intrarea utilizatorului ca și cum ar fi fost întotdeauna acceptabilă și îl inserează într-o interogare SQL pe care o trimite apoi la ...