11

更新: MongoDB はバージョン 4.0 からのトランザクションをサポートします。

元の質問:

私の知る限り、MongoDB はトランザクションをサポートしておらず、そのようなサポートを実装する計画もありません。これの理由は何ですか?

4

1 に答える 1

15

トランザクションを持たないことは、MongoDB をスケーラブルにするためのトレードオフです。

トランザクションの目的は、複数の操作が行われている間、データベース全体の一貫性を維持することです。しかし、ほとんどのリレーショナル データベースとは異なり、MongoDB は単一のホストで実行するようには設計されていません。各シャードが複数のサーバーのレプリカセットである複数のシャードのクラスターとしてセットアップされるように設計されています (オプションで異なる地理的な場所にあります)。

トランザクションは、データベースの多数のホストに影響を与える可能性があります。つまり、これらすべてのホスト間でトランザクションを同期する必要があります。これはかなりのオーバーヘッドを意味し、サーバーを追加してデータベースのサイズを大きくすると、スケーリングが非常に悪くなります。

MongoDB FAQでは、次のように説明されています。

MongoDB は、従来のロックやロールバックを伴う複雑なトランザクションをサポートしていません。MongoDB は、パフォーマンスにおいて軽量、高速、予測可能であることを目指しています。これは、MySQL MyISAM 自動コミット モデルに似ています。トランザクションのサポートを非常にシンプルに保つことで、MongoDB は、特に多くのデータベース サーバー プロセスを使用して分割または複製されたシステムのパフォーマンスを向上させることができます。

于 2013-08-04T13:06:30.990 に答える