¿Qué significaba realmente que MongoDB no fuera compatible con ACID antes de v4?

No soy un experto en bases de datos y no tengo experiencia en informática, así que tengan paciencia conmigo. Quiero saber los tipos demundo rea cosas negativas que pueden suceder si usa unaMongoDB versión anterior a v4, que no eranÁCID obediente. Esto se aplica a cualquier base de datos no compatible con ACID.

Entiendo que MongoDB puede realizar Operaciones atómicas, pero que no "admiten el bloqueo tradicional y las transacciones complejas", principalmente por razones de rendimiento. También entiendo la importancia de las transacciones de la base de datos, y el ejemplo de cuándo su base de datos es para un banco, y está actualizando varios registros que todos deben estar sincronizados, desea que la transacción vuelva al estado inicial si hay un corte de energía, por lo que el crédito equivale a la compra, etc.

Pero cuando entablo conversaciones sobre MongoDB, aquellos de nosotros que no conocemos los detalles técnicos de cómo se implementan realmente las bases de datos comenzamos a arrojar declaraciones como:

MongoDB es mucho más rápido que MySQL y Postgres, pero hay una pequeña posibilidad, como 1 en un millón, de que "no se guardará correctamente".

La parte "no se guardará correctamente" se refiere a este entendimiento: si hay un corte de energía en el momento en que está escribiendo a MongoDB, existe la posibilidad de un registro en particular (digamos que está rastreando páginas vistas en documentos con 10 atributos cada uno), que uno de los documentos solo guardó 5 de los atributos ... lo que significa que con el tiempo sus contadores de visitas a la página estarán "ligeramente" apagados. Nunca sabrás por cuánto, sabes que serán 99.999% correctos, pero no 100%. Esto se debe a que, a menos que específicamente haya hecho esto unmongodb operación atómica, no se garantiza que la operación haya sido atómica.

Así que mi pregunta es, ¿cuál es la interpretación correcta de cuándo y por qué MongoDB no puede "guardar correctamente"? ¿Qué partes de ACID no satisface, y bajo qué circunstancias, y cómo sabe cuándo ese 0.001% de sus datos está desactivado? ¿No se puede arreglar esto de alguna manera? Si no, esto parece significar que no deberías almacenar cosas como tuusers table en MongoDB, porque un registro podría no guardarse. Pero, de nuevo, ese usuario de 1 / 1,000,000 podría necesitar "intentar registrarse nuevamente", ¿no?

Solo estoy buscando tal vez una lista de cuándo / por qué suceden cosas negativas con una base de datos no compatible con ACID como MongoDB, e idealmente si hay una solución estándar (como ejecutar un trabajo en segundo plano para limpiar datos, o solo usar SQL para esto, etc. ).

Respuestas a la pregunta(10)

Su respuesta a la pregunta