De ce Nosql nu este acid
Publicat: 2022-11-19Există multe dezbateri despre dacă bazele de date NoSQL sunt „acide” sau nu. Argumentul principal împotriva ca bazele de date NoSQL să fie acide este că nu acceptă toate caracteristicile unei baze de date relaționale tradiționale. Bazele de date NoSQL sunt adesea concepute pentru a fi mai scalabile și mai ușor de utilizat decât o bază de date relațională, dar sacrifică unele dintre caracteristicile care fac o bază de date relațională mai robustă. De exemplu, bazele de date NoSQL nu acceptă de obicei tranzacții, care este o caracteristică majoră a unei baze de date relaționale. Aceasta înseamnă că, dacă utilizați o bază de date NoSQL, poate fi necesar să renunțați la unele dintre caracteristicile cu care sunteți obișnuit într-o bază de date relațională.
O bază de date NoSQL nu este compatibilă cu ACID. O stare de spirit consecventă în sensul că este maleabilă, moale și consistentă. Drept urmare, dacă Amazon ar folosi această funcție, ați putea întotdeauna să cumpărați cărți de la ei, dar nu ar putea prezice când vor fi completate. Acestea sunt menite să infirme teorema lui Brewer.
Oracle, MySQL, PostgreSQL și Microsoft SQL sunt toate capabile să accepte proprietățile ACID în tranzacții. Să aruncăm o privire la o poveste tipică NoSQL.
O bază de date NoSQL poate fi utilizată pentru a stoca datele ACID . În designul său original, sistemul nu includea componenta „Sistem de management” a unui SGBD.
Nosql are proprietăți acide?

Nu există un răspuns definitiv la această întrebare, deoarece depinde de implementarea specifică a NoSQL. Unele baze de date NoSQL au proprietăți acide, în timp ce altele nu.
Termenul de atomicitate se referă la faptul că o tranzacție trebuie efectuată în absența unei pluralități de operațiuni. Consistența datelor se referă la faptul că toate datele dintr-o bază de date trebuie înregistrate exact așa cum erau atunci când a fost efectuată tranzacția. Considerăm că izolarea este o stare de confidențialitate completă care împiedică orice altă tranzacție să interfereze cu activitatea noastră în curs. Durabilitatea unei tranzacții indică faptul că celelalte tranzacții care au fost finalizate împreună cu aceasta vor continua să funcționeze. Abordarea NoSQL a gestionării bazelor de date este contrară regulii stricte ACID . Ca rezultat, bazele de date NoSQL nu sunt cea mai bună alegere pentru cei care doresc să ruleze în medii stricte. O bază de date care aderă la standardele ACID este, în general, mai fiabilă și eficientă, precum și oferind o experiență mai consecventă utilizatorilor.
Este Nosql acid sau bază?

Proprietățile ACID (Atomicity, Consistency, Isolation, and Durability) ale unei baze de date relaționale sunt puternic urmate de proprietățile ACID (Attribution, Consistency, Isolation, and Durability) ale unei baze de date NoSQL.
Există o cerere puternică pentru baze de date producătoare de ACID. În era Big Data, avem nevoie de tehnologii care se pot scala. O bază de date NoSQL poate gestiona mai eficient date mari și complexe. Spre deosebire de RDBMS-urile tradiționale , aceste soluții nu folosesc relații tabelare și, prin urmare, nu pun aceleași probleme cu stocarea. Este firesc ca uneori să preferăm disponibilitatea decât consecvența. Când modelul ACID este exagerat, este de preferat să aveți o proprietate de bază. Dacă aveți nevoie de consistență, dar preferați o structură rigidă, o bază de date relațională este o alegere bună. Nu este necesar să alegeți între RDBMS și NoSQL pentru fiecare sistem, așa cum fac mulți.
Baza de date NoSQL este un nou tip de bază de date care nu se bazează pe tranzacții ACID. (Definit în linii mari ca disponibilă, stare moale și eventual consistență.) Datele sunt în general disponibile în sensul general. Dacă nu se răspunde unei cereri, este posibil ca aceasta să fie respinsă. Este cel mai comun tip de sistem de baze de date care efectuează tranzacții ACID. MySQL, PostgreSQL, SQLite, SQL Server și alte baze de date sunt acceptate. Bazele de date orientate pe obiecte sunt un nou tip de baze de date care nu necesită procesarea tranzacțiilor ACID. Cu toate acestea, atunci când se primește un răspuns la o solicitare, un răspuns nu poate garanta disponibilitatea datelor. Dacă datele nu pot fi obținute, acestea vor fi disponibile la un moment dat. În stare soft, actualizările datelor nu sunt permanente; această caracteristică permite actualizări continue de date. Consecvența este esențială: se asigură că datele sunt întotdeauna actualizate, chiar dacă există o mulțime de actualizări.

Suportul Mongodb pentru proprietățile acidului
Termenul de consistență se referă la cât timp datele ar trebui să rămână consistente cu mai multe operații de citire atunci când sunt scrise în baza de date. Baza de date ar trebui să poată garanta că toate tranzacțiile care se desfășoară concomitent nu vor avea un impact unul asupra celuilalt, așa cum este descris mai sus. Durabilitatea unei baze de date indică faptul că aceasta va fi capabilă să funcționeze chiar și după o întrerupere de curent sau un alt eveniment catastrofal. Cu alte cuvinte, deși MongoDB nu este o bază de date compatibilă cu ACID, acceptă unele dintre caracteristicile cheie ale ACID, cum ar fi atomicitatea și durabilitatea.
De ce Mongodb nu este acid?
MongoDB nu este acid pentru că nu acceptă tranzacții. Tranzacțiile sunt o parte fundamentală a conformității cu acidul . De asemenea, MongoDB nu acceptă chei străine, o altă parte importantă a conformității cu acidul.
MongoDB 4.0 adaugă tranzacții ACID cu mai multe documente. PostgreSQL are suport nativ pentru conformitatea ACID , în timp ce MongoDB nu a putut face acest lucru de mult timp. Pentru noi nu este clar dacă MongoDB face din ACID o prioritate de top sau dacă utilizatorilor le pasă de el. Versiunea 4.0 a MongoDB include garanții pentru tranzacții ACID cu mai multe documente. Potrivit lui Eliot Horowitz, modelul documentului elimină necesitatea tranzacțiilor ACID. Grigori Melnik, VP Products, Server, and Enterprise Tools, consideră că aceasta este o modalitate nouă de a scrie la MongoDB. În versiunea V4.2 a MongoDB, tranzacțiile vor fi posibile prin mai multe implementări de multi-shard.
În ciuda faptului că MongoDB a suportat o serie de motoare de stocare pentru date în trecut, numai WiredTiger poate fi folosit pentru tranzacții. De ce este ACID atât de important pentru MongoDB? Nu suntem siguri ce putem spune despre angajamentul EDB față de tranzacțiile ACID, dar vă putem spune un lucru: tranzacțiile ACID iau foarte în serios. În ciuda statutului nr. 7, rămâne faptul că utilizarea unui limbaj de interogare standard, cum ar fi SQL, oferă încă o valoare semnificativă. Pe măsură ce dezvoltați mai multe aplicații pentru a vă accesa datele, veți fi forțat să le construiți într-un model extins, crescând complexitatea. PostgreSQL, ca cea mai populară bază de date cu scop general, continuă să fie cea mai bună alegere.
Mongodb este complet compatibil cu acidul?
Tranzacțiile cu mai multe instrumente ACID, pe de altă parte, sunt disponibile pentru cazurile de utilizare care le necesită. Ei apreciază flexibilitatea de a-și putea modela datele într-un mod care nu necesită de obicei tranzacții cu mai multe documente, dar care este posibil atunci când fac acest lucru.
Nosql acceptă acidul
Bazele de date Nosql nu acceptă tranzacții cu acid. Aceasta înseamnă că nu pot garanta că o tranzacție va fi procesată corect și că datele pot fi pierdute sau corupte în timpul unei tranzacții.
Baze de date Nosql: modelul de bază este mai durabil și mai consistent
Majoritatea bazelor de date Nosql nu acceptă proprietăți ACID, preferând să folosească un model de bază care poate rezista la abuz și să fie mai durabil.