web-dev-qa-db-ja.com

mongodbスタンドアロン接続でトランザクションをどのように使用できますか?

Mongodbでトランザクションを使用したいのですが、レプリカセットにスタンドアロンmongodbでトランザクションクエリを実行できますか。

This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string

再試行可能な書き込みなしで変換を実行する方法。

ありがとう

1

これは不可能であり、マニュアルに明確に文書化されています。

参照: 再試行可能な書き込み

再試行可能な書き込みにより、MongoDBドライバーは、ネットワークエラーが発生した場合、またはレプリカセットまたはシャーディングされたクラスターで正常なプライマリを見つけられなかった場合に、特定の書き込み操作を自動的に1回再試行できます。

再試行可能な書き込みには、次の要件があります:

サポートされている展開トポロジ

再試行可能な書き込みには、レプリカセットまたはシャーディングされたクラスターが必要であり、スタンドアロンインスタンスはサポートしていません。

サポートされているストレージエンジン

再試行可能な書き込みには、WiredTigerやインメモリストレージエンジンなど、ドキュメントレベルのロックをサポートするストレージエンジンが必要です。

1
SqlWorldWide

スタンドアロン展開を単一ノードのレプリカセットに変換できます。チュートリアルに従って スタンドアロンをレプリカセットに変換 しますが、メンバーを追加しないでください。

これにより、レプリカセットのデプロイメントを必要とする機能を使用できるようになります(たとえば、MongoDB 4.0以降のトランザクションとMongoDB 3.6以降の変更ストリーム)。

単一メンバーのデプロイメントの主な欠点は、データの冗長性やフォールトトレランスなどの通常のレプリカセットの利点が得られないことです。 レプリケーションoplogを維持する にする必要があるため、レプリカセットメンバーには、スタンドアロンサーバーと比較して、予想される書き込みオーバーヘッドがあります。

本番レプリカセットの展開には、少なくとも3つのメンバーが必要です。詳細については、MongoDBドキュメントの Deploy a replica set を参照してください。

0
Stennie