Non sono un esperto di database e non ho conoscenze informatiche formali, quindi abbi pazienza con me. Voglio sapere i tipi di mondo reale cose negative che possono accadere se si utilizza MongoDB, che non è compatibile con ACID. Questo vale per qualsiasi database non conforme ACID.Cosa vuol dire che MongoDB non sia ACID compatibile?
Comprendo che MongoDB può eseguire Atomic Operations, ma che non "supporta il blocco tradizionale e le transazioni complesse", principalmente per motivi di prestazioni. Capisco anche l'importanza delle transazioni di database e l'esempio di quando il database è per una banca e si aggiornano diversi record che devono essere tutti sincronizzati, si desidera che la transazione ritorni allo stato iniziale se c'è un interruzione di corrente in modo di credito è uguale acquisto, ecc
Ma quando mi trovo in conversazioni su MongoDB, quelli di noi che non conoscono i dettagli tecnici di come i database sono in effetti implementate inizio gettando intorno affermazioni come:
MongoDB è molto più veloce di MySQL e Postgres, ma c'è una piccola possibilità, come 1 su un milione, che "non salverà correttamente".
Quel "non salverà correttamente" parte si riferisce a questa comprensione: Se c'è un diritto interruzione di corrente nel momento che si sta scrivendo a MongoDB, c'è una possibilità per un particolare record (dicono che stai monitorando pagine visualizzate in documenti con 10 attributi ciascuno), che uno dei documenti ha salvato solo 5 attributi ... il che significa che nel tempo i contatori di visualizzazione di pagina saranno "leggermente" disattivati. Non saprai mai da quanto, sai che saranno corretti al 99,999%, ma non al 100%. Ciò è dovuto al fatto che, a meno che non lo si sia reso esplicitamente un mongodb atomic operation, non è garantito che l'operazione sia stata atomica.
Quindi la mia domanda è, qual è l'interpretazione corretta di quando e perché MongoDB potrebbe non "salvare correttamente"? Quali parti dell'ACID non soddisfano e in quali circostanze e in che modo sai quando lo 0,001% dei tuoi dati è disattivato? Non può essere risolto in qualche modo? In caso contrario, questo sembra significare che non dovresti memorizzare cose come la tua tabella users
in MongoDB, perché un record potrebbe non essere salvato. Ma ancora una volta, quel 1/1.000.000 di utenti potrebbe semplicemente "provare ad accedere di nuovo", no?
Sto solo cercando un elenco di quando/perché le cose negative accadono con un database ACID non conforme come MongoDB, e idealmente se c'è una soluzione standard (come eseguire un lavoro in background per pulire i dati, o usare solo SQL per questo , eccetera.).
"* I modificatori atomici in MongoDB possono funzionare solo contro una singola raccolta *" => Penso che intendevi "contro un singolo ** documento **". – assylias
Informazioni eccellenti, in genere una risposta eccellente con l'eccezione di suggerire di utilizzare MySQL. –
"Una cosa che perdi con MongoDB sono le transazioni con più raccolte (tabella). I modificatori atomici in MongoDB possono funzionare solo su un singolo documento "da mongo doc (https://docs.mongodb.com/v3.2/core/write-operations-atomicity): " In MongoDB, un'operazione di scrittura è atomica su il livello di un singolo documento, anche se l'operazione modifica più documenti incorporati all'interno di un singolo documento. " –