0

JavaJavaEEベースのアプリケーションにはMongoDBを使用しています。Mongo DBのクラスターの一部として1つのプライマリと2つのセカンダリを使用しています。MongoDBは、アーキテクチャの一部として継続的に読み取り/更新/書き込みされます。

このため、Mongo DBからフェッチ操作を実行すると、ダーティリード(ゼロ値)が発生します。

これを解決するために、読み取り操作が常にプライマリ自体からフェッチし、書き込み/更新がプライマリ/セカンダリに移動できるように構成しようとしています。

これが可能かどうか教えてください(常にプライマリから読み取り、書き込み/更新にプライマリ/セカンダリを使用します)

そして、それはそのような設計に悪影響を及ぼしますか?

4

2 に答える 2

2

mongoDBは挿入で段階的な書き込みを使用するため、単一ノードでも書き込み操作に遅れが生じる可能性があります。 http://docs.mongodb.org/manual/reference/glossary/#term-journal

問題を回避するために書き込みの懸念を使用してください(ダーティデータの場合): http: //api.mongodb.org/java/2.6/com/mongodb/WriteConcern.html

書き込み操作の詳細については、http: //docs.mongodb.org/manual/core/write-operations/をご覧ください。

これは、エラーチェックなしで書き込みを使用することは本番環境には推奨されないことを示しています。

于 2013-01-29T06:37:42.943 に答える
1

スレーブ読み取りを除外するには、対応するReadPreferenceを設定する必要があります。Mongo接続クラスに関するドキュメントを参照してください。

このようなもの:

 mongo.setReadPreference(ReadPreference.primary());

ただし、ドキュメントには、デフォルトではすべての読み取りがすでにプライマリに送信されるはずであると記載されています。

デフォルトでは、すべての読み取りおよび書き込み操作はプライマリで行われますが、読み取り設定を変更することでセカンダリから読み取ることができます。

アプリでスレーブ読み取りをオンにしなかったのですか?

于 2013-01-29T05:09:14.333 に答える