Database NoSQL e transazioni ACID
Pubblicato: 2022-11-21Spesso si dice che i database NoSQL sono "non conformi ad ACID". Ciò significa che non applicano tutte le proprietà delle transazioni ACID (Atomicity, Consistency, Isolation, Durability). Tuttavia, ciò non significa che i database NoSQL non possano supportare le transazioni ACID. In effetti, molti database NoSQL supportano le transazioni ACID, anche se potrebbero non applicarle rigorosamente come alcuni database relazionali.
Un database NoSQL è, come suggerisce il nome, un database di base (*). Fondamentalmente, è uno stato d'animo beato e coerente. Ciò significa, ad esempio, che, se Amazon lo utilizzasse, saresti sempre in grado di acquistare un libro da loro senza alcuna garanzia che sia disponibile per il ritiro. Avevano lo scopo di sconfiggere il teorema di Brewer.
Questa volta la posta in gioco è stata alzata, poiché i database NoSQL sono entrati in una nuova era, grazie all'arrivo delle transazioni distribuite: ACID è tornato di moda. In precedenza, le transazioni venivano in genere eseguite su un singolo server, quindi replicate nel resto del cluster secondo necessità.
Il database Oracle NoSQL fornisce all'utente un certo controllo sulle proprietà delle transazioni. Le operazioni di scrittura possono essere eseguite su una singola unità atomica quando si dispone di un numero di righe con la stessa chiave di partizione che condividono la stessa chiave.
Perché Nosql non è compatibile con gli acidi?

I database Nosql non sono compatibili con l'acido perché non forniscono lo stesso livello di coerenza dei dati dei database relazionali. Ciò significa che è più probabile che i database nosql subiscano la perdita o il danneggiamento dei dati in caso di interruzione dell'alimentazione o guasto del sistema.
Matt Turner è Chief Technology Officer per la divisione Media e produzione di MarkLogic. Le sue aree di competenza includono media, intrattenimento e produzione. Matt lavora con clienti e potenziali clienti per progettare hub di dati operativi NoSQL aziendali. Se oggi disponi del DBMS giusto, puoi utilizzare NoSQL con ACID.
Un'operazione atomica, ad esempio, somma due numeri senza essere soggetta a incoerenza. L'integrità dei dati di queste operazioni è garantita e qualsiasi deviazione da questo stato verrà rilevata e corretta. È tuttavia possibile eseguire test ACID in MongoDB. In alcuni casi, può rilevare quando un documento è stato aggiornato e garantire che tutte le query successive che utilizzano il documento lo facciano. I database NoSQL non richiedono una struttura di tabella fissa e non supportano ACID come funzionalità. Nonostante ciò, producono una coerenza finale, il che significa che i dati continueranno a essere coerenti nel tempo. Questo è essenziale perché impedisce ai dati di essere incoerenti. MongoDB è un esempio di database NoSQL. In particolare, il collegamento sottostante non soddisfa la definizione di atomico in un sistema di database relazionale. MongoDB, in questo senso, non è conforme allo standard ACID. Il termine operazione atomica si riferisce a operazioni in cui non c'è incoerenza, come l'aggiunta di due numeri.
I quattro pilastri della gestione dei database: acido
Qual è il significato di acido?
Il termine "acido" si riferisce a proprietà quali atomicità, consistenza, isolamento e durabilità. Viene utilizzato un insieme di regole per specificare come un sistema di database deve gestire i dati quando viene creato.
Nosql ha il controllo delle transazioni?

Non esiste una risposta definitiva a questa domanda in quanto dipende dallo specifico database NoSQL in questione. Tuttavia, in generale, i database NoSQL non offrono lo stesso livello di controllo delle transazioni dei database relazionali tradizionali . Questo può essere visto come uno svantaggio o un vantaggio, a seconda delle esigenze specifiche dell'applicazione.
Rispetto ai database relazionali, le soluzioni NoSQL hanno una semantica transazionale inferiore ma forniscono comunque operazioni atomiche a un certo livello. Puoi creare rapidamente un piccolo mock-up su Heroku.com usando Node.js o Ruby/Rack se ti senti a tuo agio con loro. Questa funzione non è stata ancora implementata in alcun modo da me. Le transazioni devono includere le proprietà ACID affinché un database possa eseguire le operazioni dell'utente. La maggior parte degli strumenti NoSQL è progettata per rilassare i criteri di coerenza impostati dalle operazioni al fine di fornire capacità di tolleranza agli errori e scalabilità. Potrebbe essere necessario utilizzare database SQL/ACID in memoria, orientati alle colonne e distribuiti, come VoltDB, per questo scopo. Esistono numerose "transazioni di ottimizzazione" che possono essere utilizzate per ottenere questo risultato, ma credo che sia necessaria la comprensione delle garanzie di atomicità dell'implementazione del database (ad esempio, che tipo di operazioni di scrittura e lettura sono atomiche).
Hai sentito parlare delle transazioni HBase? Se è così, per favore fatemelo sapere. In generale, NoSQL si basa su archivi dati chiave/valore. Puoi sempre implementarlo nel tuo RDBMS preferito e puoi mantenere le cose buone, come transazioni, proprietà ACID, supporto dal tuo DBA amichevole e così via, sfruttando al contempo i vantaggi di prestazioni e flessibilità NoSQL Se una soluzione NoSQL può supporta il confronto e il contrasto, le transazioni ottimistiche possono essere implementate in cima.
MongoDB è completamente compatibile con gli acidi?
MongoDB è un potente sistema di database orientato ai documenti che ben si adatta a molte applicazioni moderne. È completamente conforme agli acidi, il che significa che supporta tutte e quattro le proprietà ACID: atomicità, consistenza, isolamento e durata. Questo lo rende una scelta sicura e affidabile per l'archiviazione dei dati.
La versione MongoDB 4.0 include transazioni ACID multi-documento. Nonostante il fatto che Postgres fornisca il supporto nativo per la conformità ACID , MongoDB ha dovuto aspettare anni per questo. Non siamo sicuri se MongoDB si preoccupi per ACID o se sia una priorità o se stiano facendo qualcosa al riguardo. La versione 4.0 di MongoDB include il supporto per le garanzie di transazione ACID multipagina, che è una caratteristica importante. In una recente dichiarazione, il CTO Eliot Horowitz ha affermato che il modello di documento non richiede transazioni ACID. Secondo Grigori Melnik, vicepresidente di Products, Server e Enterprise Tools, è improbabile che questo sia un modo comune per scrivere su MongoDB. La versione V4.2 di MongoDB includerà la possibilità di eseguire transazioni su più carichi di lavoro, nonché una varietà di tipi di transazioni.
Nonostante il supporto di MongoDB per più motori di archiviazione in passato, solo WiredTiger poteva essere utilizzato se fossero necessarie transazioni. Qual è l'importanza di ACID in MongoDB? Non c'è molto che possiamo dire sull'impegno di EDB nelle transazioni ACID, ma possiamo dire una cosa: non siamo delusi. Nonostante tutto il clamore intorno al numero 7, l'utilizzo di un linguaggio di query standard come SQL offre ancora vantaggi significativi. Quando progetti più applicazioni per accedere ai tuoi dati, avrai molto lavoro da fare. Il database generico più popolare è PostgreSQL.
I pro ei contro di MongoDB, Cassandra e Redis
Ad oggi, MongoDB, Cassandra e Redis sono tre dei framework NoSQL più popolari. Di conseguenza, potrebbero non essere adatti a tutti i casi d'uso. Se hai bisogno di un sistema con la capacità di facilitare le transazioni di documenti in più parti, MongoDB è una scelta eccellente. Se vuoi un sistema compatibile con ACID, MySQL è un'opzione migliore.

Quale tipo di database Nosql segue le proprietà degli acidi?
Come con MySQL, postgresql, oracle e Microsoft SQL, le transazioni in tutti i database relazionali sono garantite come funzionali ACID.
L'abbreviazione di atomicità, consistenza, isolamento e densità è acido. Le transazioni sono considerate complete quando vengono completate o falliscono completamente nelle transazioni ACID. Nelle transazioni, nessun organismo è stato in grado di completare completamente la transazione. Le proprietà ACID delle transazioni sono garantite da ogni database relazionale. Prima di entrare in NoSQL, esaminiamo una storia tipica. Una rapida occhiata alla pagina dei dettagli di Amazon rivela oltre 100 diverse funzionalità. Per preparare una pagina di questo tipo se ogni caratteristica è rappresentata nella propria tabella, sarebbero necessarie centinaia di join. Se avessimo le risorse per farlo, scaleremmo verticalmente il nostro hardware per dire 16 core, 128 GB di RAM e 25 banche SSD. Di conseguenza, sono nati i database NoSQL.
Perché MongoDB è il miglior database per le transazioni acide
Le transazioni sono atomiche perché sono di natura commit o rollback. Le transazioni di cui viene eseguito il commit devono essere coerenti con lo stato del database al momento della transazione. Le transazioni devono essere separate l'una dall'altra e da altri sistemi affinché funzionino in modo indipendente. Durabilità delle transazioni : le transazioni devono essere affidabili se devono essere impegnate e ripristinate senza perdere dati. MongoDB, che memorizza i dati in un formato documento, supporta le transazioni ACID. Le transazioni sono classificate come atomiche, nel senso che sono impegnate o annullate. Se una transazione è coerente con lo stato del database al momento del commit, dovrebbe essere coerente con lo stato del database al momento del commit. Le transazioni sono separate l'una dall'altra e da altri sistemi. MongoDB, oltre ad essere durevole, consente di mantenere la coerenza con lo stato del database al momento del commit di una transazione.
Acido di transazione Nosql
Le transazioni in un database NoSQL non sono compatibili con ACID. Ciò significa che se esegui una serie di operazioni come un'unica transazione, non è garantito che tutte le operazioni vengano salvate nel database. Ciò può portare a incoerenze nei dati e può rendere difficile il debug dei problemi.
I database NoSQL sono database che memorizzano e recuperano i dati come se non fossero relazionali. Nelle sezioni seguenti, esamineremo le transazioni NoSQL. L'uso di componenti di lunga durata è importante perché indica che i dati vengono conservati in caso di guasto del sistema. Per garantire che un'operazione sia separata da altre operazioni simultanee, l'isolamento è l'obiettivo principale. La transazione ACID garantisce che i nostri dati non cadano mai in uno stato incoerente perché un'operazione o un'attività è stata completata solo parzialmente o è stata completata in modo errato. Quando utilizziamo le proprietà ACID, siamo in grado di mantenere la correttezza e la coerenza nel nostro database. Di seguito è riportato un esempio di transazioni ACID. Dobbiamo inviare 50 da S1 a S2.
I database compatibili con Base come MongoDB non sono ancora compatibili con Acid
Non è ancora noto se i database conformi a BASE, come MongoDB, saranno conformi ad ACID in futuro. MongoDB, d'altra parte, non può garantire che tutti i nodi vedranno la stessa scrittura contemporaneamente.
Nosql supporta l'acido
Si discute se i database NoSQL supportino o meno le transazioni acide. Le transazioni acide sono un insieme di proprietà che garantiscono la coerenza e l'integrità dei dati in un database. Alcuni sostengono che poiché i database NoSQL non sono relazionali, non supportano transazioni acide. Altri sostengono che poiché i database NoSQL sono progettati per essere scalabili e gestire grandi quantità di dati, devono supportare transazioni acide per mantenere l'integrità dei dati. In definitiva, spetta al singolo database decidere se supportare o meno le transazioni acide.
Per le aziende che cercano un'opzione cloud SQL scalabile e accessibile in qualsiasi momento, cloud SQL è una scelta eccellente. Tuttavia, il cloud SQL deve anche tenere a mente le prestazioni e l'affidabilità del DBMS tradizionale. È una soluzione ideale per le piccole imprese e le startup che richiedono un rapido accesso e gestione dei dati grazie alla sua facilità d'uso e facilità di configurazione. Man mano che la tua azienda cresce, Cloud SQL è lo strumento ideale per archiviare e gestire i tuoi dati, grazie alla sua potente piattaforma GCP.
I vantaggi e gli svantaggi dei modelli base
Nonostante ciò, MongoDB è unico in quanto utilizza un modello base con aggiornamenti costanti nel tempo.
È importante notare che i modelli BASE offrono alcuni vantaggi rispetto ai modelli ACID, ma lo fanno a proprie spese.
Questo è in definitiva determinato da quale applicazione funziona meglio.
Nosql e Sql gestiscono le transazioni
I database SQL sono più efficienti per le transazioni su più righe rispetto ai database NoSQL per dati non strutturati come documenti o JSON. I database SQL vengono utilizzati anche per archiviare dati in sistemi legacy che in precedenza erano basati su database relazionali.
Ogni operazione sui dati in un database Oracle NoSQL avviene contemporaneamente l'una con l'altra. Le proprietà ACID della semantica delle transazioni sono spesso discusse. Sebbene non esistano criteri configurabili per l'atomicità o l'isolamento, gli utenti possono impostare criteri di coerenza e durata. La flessibilità dei criteri di coerenza aiuta gli sviluppatori a creare soluzioni aziendali coerenti pur rispettando i requisiti di latenza e scalabilità.
I pro ei contro dei database Sql e Nosql
I dati vengono archiviati in documenti piuttosto che in database relazionali. A questo proposito, sono raggruppati in una varietà di modelli di dati flessibili da classificare come SQL piuttosto che solo SQL. I tipi di database che possono essere classificati in tre tipi utilizzando NoSQL includono database di documenti puri, archivi di valori-chiave, database a colonne larghe e database a grafo. I database SQL sono ottimi per applicazioni orientate alle transazioni come strumenti di gestione delle relazioni con i clienti, software di contabilità e piattaforme di e-commerce. I database SQL sono ideali per i dati fortemente strutturati. Il termine "database NoSQL", utilizzato dal database NoSQL di Oracle, è più di un semplice SQL. I documenti, piuttosto che le tabelle, sono archiviati in un database. Di conseguenza, sono classificati come database "non solo SQL", oltre a essere suddivisi in vari tipi di dati in base alla loro flessibilità. Database di documenti, archivi di valori-chiave, database a colonne larghe e database a grafo sono esempi di database NoSQL. I database NoSQL sono scelte eccellenti per i dati non strutturati perché sono semplici da costruire. SQL è un linguaggio di query che può essere utilizzato in qualsiasi database NoSQL; questo non significa che non puoi usarlo in un database NoSQL. NoSQL e SQL sono infatti tecnologie complementari. SQL è un linguaggio comune utilizzato nei database NoSQL per la ricerca di dati. I database SQL sono probabilmente la scelta migliore se hai bisogno di un database in grado di gestire le transazioni. I database SQL sono ideali per i sistemi che gestiscono transazioni come strumenti di gestione delle relazioni con i clienti, software di contabilità e piattaforme di e-commerce.