In einem Code werden MySQL, Redis und Mongodb gleichzeitig betrieben. Wie können wir die Konsistenz der Daten zwischen diesen Datenbanken sicherstellen?
Msyql speichert beispielsweise Feld A, Redis speichert Feld B und Mongodb speichert Feld C. Wie können wir sicherstellen, dass ABC gleichzeitig erfolgreich ist oder fehlschlägt
In einem Code werden MySQL, Redis und Mongodb gleichzeitig betrieben. Wie können wir die Konsistenz der Daten zwischen diesen Datenbanken sicherstellen?
Msyql speichert beispielsweise Feld A, Redis speichert Feld B und Mongodb speichert Feld C. Wie können wir sicherstellen, dass ABC gleichzeitig erfolgreich ist oder fehlschlägt
Obwohl die Vorgänge gleichzeitig erfolgen, wird jede Datenbank anders verarbeitet und es gibt keine Garantie dafür, dass sie alle erfolgreich sind.
Der endgültige Erfolg kann dann betrachtet werden, wenn alle drei Prozesse erfolgreich sind. Wenn einer fehlschlägt, wird dies als Misserfolg betrachtet.
Ist diese Einstellung korrekt?
Ich denke, Redis- und MySQL-Transaktionen sind einfacher zu betreiben. Starten Sie die Transaktion vor dem Einfügen und der Mongodb-Vorgang ist erfolgreich
Da es sich um drei Arten von Datenbanken handelt, sollte es kein vorgefertigtes XA-Protokoll geben, um eine starke Konsistenz jeder Datenbank sicherzustellen. So können Sie sich mit dem nächstbesten zufrieden geben und letztlich für Konsistenz sorgen.
Verteilte Transaktion 1
Verteilte Transaktion 2