1

私たちはアプリケーションの中央データベースとしてMongodbを使用します。モバイルアプリに直面している消費者。現在レプリカセット1を持つ7人のレプリカセットが現時点ではマスターです。 mongoレプリカに接続するバックエンドはRuby on Railsで構築され、ODMとしてmongoidを使用します。MongoDB:異なるレプリカに接続する異なるアプリケーション

MongoDBレプリカセットには、主に3つの部分が接続されています。

  1. コンシューマアプリケーション
  2. 管理および顧客ケア管理アプリケーションのすべてのこれらの3つのアプリとして設定された同じレプリカに接続

(分析およびそのような目的のために)

  • データ検索アプリケーション今の

    私が知りたいのは、異なるアプリケーションを特定のレプリカに接続できるかどうかです。

    For example, the mobile app connects to the primary for writes and the replicas 2-4 
    to read; the customer care management application connects to the primary 
    (for writes) and replicas 5-7 for reads. 
    

    私は明示的に取り組んでいるmongoid.yml構成で、特定のレプリカを言及すると思ういけません。私はすでにデータ検索アプリケーションのmongoid hostsファイルにreplica-set-7のみを記述していますが、replica-set-2と3のログファイルで特定のクエリが表示されます。

    明らかに、MongoDBは、クライアントmongoidのエンドで指定された構成にもかかわらず、レプリカ間でクエリを配布する基準を決定します。

    私はMongoDbとmongoidを使ってこのようなことが可能かどうかを知りたいと思っています。負荷の問題を解決するのに役立ちます。現在、顧客ケアおよびデータ検索アプリからの膨大なクエリは、消費者が直面するモバイルアプリにも影響を与えます。読み込みは分割されていないためです。だから、基本的には読み物を分離したいと思う。

    また、これが可能であれば、私はもう一度、この可能性のある落とし穴に目を向けるでしょう。特に、3つのアプリケーションすべてがDBに書き込むことができます。たとえば、レプリカ3は突然選挙の後にプライマリになり、データ取得アプリケーションの構成で明示的に言及されません。そこで起こることが懸念になるでしょう。

    これが可能かどうかはまったくわかりません。これを理解する方法があるかどうかを知りたかっただけです。どんな助けも本当に感知できるでしょう。

  • 答えて

    2

    レプリカセットのメンバーに接続すると、レプリカセットの完全な状態がクライアントに通知され、レプリカセットのいずれかに接続できます。最初のホストセットはそのプロセスのシードに過ぎません。アプリケーションがそれらのホストの1つに到達できる限り、どのホストがその構成にあるかは関係ありません。

    Mongoはtagged replica set membersという概念を持っています。接続の作成またはクエリの実行時に、読み取るレプリカセットメンバーの選択に使用するタグを指定できます。

    +0

    提案していただきありがとうございます。私に見てみましょう。 – Sunil

    +0

    http://stackoverflow.com/a/37999438/174843には、どのノードから読み込むかを決めるためのタグの使い方についての解答があります。 –

    関連する問題