Ich bin kein Datenbankexperte und habe keinen formalen Hintergrund in der Informatik. Ich möchte wissen, welche negativen Dinge in der realen Welt passieren können, wenn Sie eine alte MongoDB-Version vor Version 4 verwenden , die nicht ACID- konform war. Dies gilt für alle nicht ACID-konformen Datenbanken.
Ich verstehe, dass MongoDB Atomic Operations ausführen kann , aber dass sie "traditionelle Sperren und komplexe Transaktionen nicht unterstützen", hauptsächlich aus Leistungsgründen. Ich verstehe auch die Bedeutung von Datenbanktransaktionen und das Beispiel, wenn Ihre Datenbank für eine Bank bestimmt ist und Sie mehrere Datensätze aktualisieren, die alle synchron sein müssen. Sie möchten, dass die Transaktion in den Ausgangszustand zurückkehrt, wenn es eine gibt Stromausfall, also Kredit gleich Kauf usw.
Aber wenn ich in Gespräche über MongoDB gerate, werfen diejenigen von uns, die die technischen Details der tatsächlichen Implementierung von Datenbanken nicht kennen, Aussagen wie:
MongoDB ist viel schneller als MySQL und Postgres, aber es gibt eine winzige Chance, wie 1 zu 1 Million, dass es "nicht richtig speichert".
Dieser Teil "wird nicht richtig gespeichert" bezieht sich auf dieses Verständnis: Wenn zum Zeitpunkt des Schreibens in MongoDB ein Stromausfall auftritt, besteht die Möglichkeit eines bestimmten Datensatzes (z. B. verfolgen Sie Seitenaufrufe in Dokumenten mit 10 Attributen jeweils), dass eines der Dokumente nur 5 der Attribute gespeichert hat… was bedeutet, dass Ihre Seitenaufrufzähler im Laufe der Zeit "leicht" abweichen werden. Sie werden nie wissen, um wie viel, Sie wissen, dass sie zu 99,999% korrekt sind, aber nicht zu 100%. Dies liegt daran, dass die Operation nicht garantiert atomar ist, es sei denn, Sie haben dies ausdrücklich zu einer Mongodb-Atomoperation gemacht .
Meine Frage ist also, was ist die richtige Interpretation von wann und warum MongoDB möglicherweise nicht "richtig speichert"? Welche Teile von ACID erfüllen es nicht und unter welchen Umständen und woher wissen Sie, wann diese 0,001% Ihrer Daten deaktiviert sind? Kann das nicht irgendwie behoben werden? Wenn nicht, scheint dies zu bedeuten, dass Sie Dinge wie Ihre users
Tabelle nicht in MongoDB speichern sollten , da ein Datensatz möglicherweise nicht gespeichert wird . Aber andererseits muss dieser 1 / 1.000.000-Benutzer möglicherweise nur "erneut versuchen, sich anzumelden", nein?
Ich suche nur nach einer Liste, wann / warum bei einer nicht mit ACID nicht kompatiblen Datenbank wie MongoDB negative Dinge passieren, und im Idealfall, wenn es eine Standardumgehung gibt (z. B. einen Hintergrundjob ausführen, um Daten zu bereinigen, oder nur SQL dafür verwenden usw.). .