No soy un experto en bases de datos y no tengo experiencia en informática, así que tengan paciencia conmigo. Quiero saber los tipos de cosas negativas del mundo real que pueden suceder si usa una versión anterior de MongoDB anterior a la v4 , que no era compatible con ACID . 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 cuando 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 entro en 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".
Esa parte "no se guardará correctamente" se refiere a esta comprensión: si hay un corte de energía en el momento en que está escribiendo en 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 de esto una operación atómica mongodb , no se garantiza que la operación haya sido atómica.
Entonces 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á apagado? ¿No se puede arreglar esto de alguna manera? Si no, esto parece significar que no debería almacenar cosas como su users
tabla 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 alternativa estándar (como ejecutar un trabajo en segundo plano para limpiar datos, o solo usar SQL para esto, etc.) .