データの一貫性の問題

WBOY
WBOYオリジナル
2016-09-19 09:16:261501ブラウズ

1 つのコードで、mysql、redis、mongodb が同時に動作します。これらのデータベース間のデータの一貫性を確保するにはどうすればよいでしょうか?
たとえば、msyql はフィールド A を保存し、redis はフィールド B を保存し、mongodb はフィールド C を保存します。ABC が同時に成功するか失敗するかを確認するにはどうすればよいですか

返信内容:

1 つのコードで、mysql、redis、mongodb が同時に動作します。これらのデータベース間のデータの一貫性を確保するにはどうすればよいでしょうか?
たとえば、msyql はフィールド A を保存し、redis はフィールド B を保存し、mongodb はフィールド C を保存します。ABC が同時に成功するか失敗するかを確認するにはどうすればよいですか

操作は同時に行われますが、各データベースは異なる方法で処理されるため、すべてが成功するという保証はありません。
3 つのプロセスがすべて成功した場合、最終的な成功とみなされます。1 つが失敗した場合、それは失敗とみなされます。

この設定は正しいですか?

redis と mysql のトランザクションは、挿入する前にトランザクションを開始すると、一緒にコミットし、一緒にロールバックする方が操作が簡単だと思います。

3 種類のデータベースが関係しているため、各データベースの強力な一貫性を保証するための既成の XA プロトコルは存在すべきではありません。したがって、次善の策を選択して、

分散トランザクション 1
分散トランザクション 2
の最終的な整合性を確保できます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。