Non sono un esperto di database e non ho una formazione informatica formale, quindi abbiate pazienza. Voglio sapere i tipi di cose negative del mondo reale che possono accadere se si utilizza una vecchia versione MongoDB precedente alla v4 , che non erano compatibili con ACID . Questo vale per qualsiasi database ACID non conforme.
Comprendo che MongoDB può eseguire operazioni atomiche , ma che non "supportano il blocco tradizionale e le transazioni complesse", principalmente per motivi di prestazioni. Comprendo anche l'importanza delle transazioni del database e l'esempio di quando il database è per una banca e stai aggiornando diversi record che devono essere tutti sincronizzati, vuoi che la transazione torni allo stato iniziale se c'è un interruzione di corrente in modo che il credito sia uguale all'acquisto, ecc.
Ma quando entro in conversazioni su MongoDB, quelli di noi che non conoscono i dettagli tecnici su come i database sono effettivamente implementati iniziano a lanciare dichiarazioni come:
MongoDB è molto più veloce di MySQL e Postgres, ma c'è una piccola possibilità, come 1 su un milione, che "non salverà correttamente".
Quella parte "non si salva correttamente" si riferisce a questa comprensione: se c'è un'interruzione di corrente nel momento in cui stai scrivendo su MongoDB, c'è la possibilità di un particolare record (supponi che stai monitorando le visualizzazioni di pagina in documenti con 10 attributi ciascuno), che uno dei documenti ha salvato solo 5 degli attributi ... il che significa che nel tempo i contatori delle visualizzazioni di pagina saranno "leggermente" disattivati. Non saprai mai di quanto, sai che saranno corretti al 99,999%, ma non al 100%. Questo perché, a meno che non sia stata specificatamente effettuata un'operazione atomica mongodb , 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 di ACID non soddisfano e in quali circostanze e come si fa a sapere quando lo 0,001% dei dati è spento? Non può essere risolto in qualche modo? Altrimenti, questo sembra significare che non dovresti archiviare cose come la tua users
tabella in MongoDB, perché un record potrebbe non essere salvato. Ma ancora una volta, quell'utente 1 / 1.000.000 potrebbe aver bisogno di "provare a registrarsi di nuovo", no?
Sto solo cercando un elenco di quando / perché accadono cose negative con un database ACID non conforme come MongoDB, e idealmente se esiste una soluzione standard (come eseguire un processo in background per pulire i dati o usare solo SQL per questo, ecc.) .