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

複数のAWSインスタンスでのMongoDBロードバランシング

    これは完全な答えではありません。詳細が多すぎて、他の多くの質問と同じようにこの質問についてのエッセイ全体を書くことができますが、そのような時間に余裕がないので、コメントを追加します私が見ているものについて。

    レプリカセットは、そのように機能するようには設計されていません。負荷分散を希望する場合は、実際にこれを可能にするシャーディングを探している可能性があります。

    レプリケーションは自動フェイルオーバー用です。

    最新の状態に保つために、メンバーはプライマリと同じ数の操作を取得するため、これはあまり役に立たないようです。

    実際には、多くの接続を持つ1つのサーバーをキューに入れる代わりに、多くのサーバー上に古いデータをキューに入れる多くの接続があります。これは、メンバーの整合性が最終的なものであり、ACIDテクノロジーとは異なり、即時ではないためです。プライマリがロードされている場合、適切なスループットを提供するのに十分な遅延がないことを意味します。

    読み取りは同時に行われるため、プライマリから読み取る場合でもセカンダリから読み取る場合でも、同じ速度が得られます。スレーブを遅らせてOPの一時停止を作成することはできると思いますが、そうすると、非常に古いデータが返されます。

    言うまでもなく、MongoDBはマルチマスターではないため、一度に1つのノードにしか書き込むことができないため、slaveOKは世界で最も有用な設定ではなくなり、10gen自体がこの設定よりもシャーディングを使用することを推奨していることが何度もあります。

    これには、独自のコーディングが必要になります。その時点で、http://en.wikipediaをサポートするデータベースの使用を実際に検討することをお勧めします。 .org / wiki / Multi-master_replication

    これは、上記で説明したように、実際には読み取りではなく書き込みで、探している速度が最も高い可能性があるためです。

    これが推奨される方法ですが、注意点があります。残念ながら、これはマルチマスターレプリケーションで解決できるはずの未解決の問題ですが、マルチマスターレプリケーションでは、ヨーロッパ自体にペストラットの独自の船が追加されるため、真剣に調査してから、 MongoDBは現在、お客様のニーズに対応できません。

    fsyncキューは、SQLの場合と同様に書き込みの速度を低下させるIOボトルネックに対処するように設計されており、読み取りは同時実行されるため、実際には何も心配する必要はありません。スキーマとワーキングセットを正しく計画すれば、大量のデータを取得できるはずです。 OPの量。

    実際、このあたりには、10genの従業員からのリンクされた質問があります。 https:/ /stackoverflow.com/a/17459488/383478 負荷がかかった状態でMongoDBが達成できるスループットを示しています。

    すでに開発ブランチにある新しいドキュメントレベルのロックにより、まもなく拡張されます。



    1. mongoDBでマルチマッチングフィルターカウントを取得する方法

    2. Mongodb:条件が満たされた場合、要素をネストされた配列にプッシュします

    3. どのバージョンでのデフォルトのmongod書き込みの懸念は何ですか?

    4. 多数のドキュメント用のシャーディングキー(MongoDB)