Cuprins:
- Această bază de date are facilități pentru a vă împiedica să corupe sau să pierdeți date,
- 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
- 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
Video: Reguli de aur pentru aplicarea tapetului 2024
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.