sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでの2フェーズコミット

    トランザクションをAに適用してからBに適用するまでの間にアプリケーションまたはデータベースが突然クラッシュした場合でも、state:"pending"のトランザクションが存在します。 グローバルトランザクションコレクション内。クラッシュ後に実行するリカバリスクリプトは、これに気づき、2つのアカウントを確認し、一方のアカウントには保留中のトランザクションがあり、もう一方のアカウントにはないことを確認する必要があります。これで、トランザクションをロールバックするか、トランザクションを完了しようとするために知っておく必要のあるすべてのことがわかります。

    はい、そのスマートな回復スクリプトを書くことは簡単ではありません。しかし、それらのために設計されていないデータベースシステムでのトランザクションは常に困難です。一緒に更新する必要のあるフィールドが常に同じドキュメント内にあるようにドキュメントを設計することで、MongoDBでトランザクションを要求することを回避できる場合がありますが、これを行うための正しい方法が常にあるとは限りません。ユースケースでトランザクションが絶対に必要な場合は、健全性を保護し、リレーショナルデータベースを使用してください。



    1. シンプルなExpressアプリでNode.jsクラスターを使用するにはどうすればよいですか?

    2. mongodb会話システム

    3. SlackのChatOpsを使用したMySQL、MongoDB、PostgreSQLの管理

    4. MeteorSubscribeはコレクションのソート順を更新しません