レプリカセットでは、プライマリMongoDBインスタンスがすべての書き込み操作を受け取るマスターインスタンスです。
プライマリデフォルトは読み取りモードで、MongoDBクライアントに関係します。 ドライバ/クライアントオプションです。つまり、最初に書き込まれたマスターインスタンスから(他のレプリカセットメンバーにレプリケートされる前に)データを読み込むことを意味します。
プライマリの読取り設定以外のモードを使用すると、失効したデータを読み取る危険性があります。
お読みくださいレプリケーションセットのクエリオプションです。デフォルトでは、読み取りの問題はローカルです。これは、クエリの実行時に利用可能な最新のデータを返します。データはレプリカセットメンバーの大多数に保持されておらず、ロールバックされている可能性があります。このオプションは、の大文字に設定することができます。これにより、レプリカセットメンバーの大部分に永続化され、ロールバックされない最新のデータがクエリで読み取られます。しかし、あなたはそれを正しく設定しなければなりません(WiredTigerエンジンといくつかの他の要件でのみ動作します...)、レプリカセットのメンバーの大部分には書き込まれても保存されていない最新のデータが欠落する可能性があります。
既定のオプションを使用して、読み取りの優先順位と読み取りの問題が発生したとします。次に、MongoDBドライバはプライマリ・レプリカ・セット・メンバ(マスター・インスタンス)に読取り要求をルーティングし、そのインスタンスはその時点で使用可能な最新のデータを戻します。そのデータは、レプリカセットメンバーの大多数に保持されず、ロールバックされる可能性があります。
同様に、読者の関心と読書の設定オプションの異なる組み合わせを使用するユースケースを考えることができます。
- ローカル/ primaryPreferred
- ローカル/二次
- ローカル/ secondaryPreferred
- ローカル/最寄り
- 過半数/ primaryPreferred
- 過半数/二次
- 過半数/ secondaryPreferred
- 過半数/最寄りの
オプションについては、MongoDB Doc。いくつかの組み合わせはいくつかの状況で意味をなさないかもしれませんし、他の組み合わせでは他の状況では意味をなさないかもしれません私は完全性のためにここにそれらを単に列挙しました。 (queryオプション) 読み取り懸念オプションに従って実行される読み取り優先オプション(ドライバオプション)
、第2の要求に応じて
- 要求がルーティングされます。そして、私は次のようにすることを解釈したいです
清潔にしてくれてありがとう、Elyasin。 – Krock