すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:接続文字列 URI を使用したシャードクラスターインスタンスへの接続

最終更新日:Jun 16, 2026

ApsaraDB for MongoDB のシャードクラスターインスタンスでは、各 mongos ノードにエンドポイントが提供されます。任意の mongos ノードに接続して、データベースにアクセスできます。接続文字列 URI を使用すると、負荷分散と高可用性を実現できます。

背景情報

Sharded cluster architecture

MongoDB のシャードクラスターは、高いスケーラビリティを実現するために、複数のシャードにデータを分散します。コンフィグサーバーはクラスターのメタデータを保存し、mongos ノードはアプリケーションのエントリポイントとして機能します。mongos ノードはルーティング情報を読み取り、リクエストを適切なシャードに転送します。

  • mongos ノードへのアクセスは、単一の mongod プロセスへのアクセスと同様です。

  • すべての mongos ノードは対等です。1 つ以上の mongos ノードを介して、シャードクラスターにアクセスできます。

  • mongos ノードはステートレスであり、スケールアウトできます。全体のサービス容量は、シャードの総容量と mongos の総容量のうち小さい方によって決まります。

  • アプリケーションのリクエストを複数の mongos ノードに均等に分散します。

接続文字列 URI について

シャードクラスターインスタンスに接続するには、MongoDB の 接続文字列 URI 形式を理解する必要があります。すべての MongoDB 公式 ドライバー は、この形式をサポートしています。

接続文字列 URI の例:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

パラメーターの説明:

  • mongodb:// :これが接続文字列 URI であることを示すプレフィックスです。

  • username:password@ :データベースへのログオンに使用するユーザー名とパスワードです。

  • hostX:portX :mongos ノードのアドレスです。

  • /database :認証データベースです。

  • ?options :追加の接続オプションです。

シャードクラスターインスタンスへの接続

ApsaraDB for MongoDB は、接続文字列 URI を使用したシャードクラスターインスタンスへの接続をサポートしています。これにより、自動的な負荷分散と高可用性を実現できます。

  1. シャードクラスターインスタンスの接続文字列 URI を取得します。詳細については、「シャードクラスターインスタンスへの接続」をご参照ください。

  2. アプリケーションで、接続文字列 URI を使用してインスタンスに接続します。詳細については、「コードを使用したシャードクラスターインスタンスへの接続」をご参照ください。

    次の Java の例では、データベースアカウント test を使用して admin データベースに接続します:

    String user = "test";
    String password = "MongoDB****";
    String myURI = "mongodb://" + user + ":" + password + "@s-bp1c04c07823****.mongodb.rds.aliyuncs.com:3717,s-bp1500549e0b****.mongodb.rds.aliyuncs.com:3717/admin";
    MongoClient mongoClient = new MongoClient(new MongoClientURI(myURI));

    この方法では、クライアントが複数の mongos ノードにリクエストを自動的に分散し、負荷分散を実現します。URI に 2 つ以上の mongos ノードが含まれている場合、いずれかのノードに障害が発生しても、クライアントは正常な残りのノードに自動的にフェイルオーバーします。

複数の mongos ノードがある場合、アプリケーションごとにグループ化してアクセス分離を行うことができます。たとえば、mongos ノードが 4 つあり、アプリケーションが 2 つある場合、アプリケーション A は mongos 1 と 2 を使用し、アプリケーション B は mongos 3 と 4 を使用するように構成できます。各アプリケーションの URI には、対応する mongos のアドレスのみを指定してください。

説明

アプリケーションがアクセスする mongos ノードは相互に分離されますが、バックエンドのシャードは共有されたままです。

一般的な接続パラメーター

  • 読み書き分離の実装

    接続文字列 URI のオプションに readPreference=secondaryPreferred を追加して、読み取りリクエストを優先的にセカンダリノードにルーティングします。

    例:

    データベースアカウントは test、データベースは admin です:

    mongodb://test:****@s-bp10fb1cf399****.mongodb.rds.aliyuncs.com:3717,s-bp10f49cdf5e****.mongodb.rds.aliyuncs.com:3717/admin?readPreference=secondaryPreferred
  • 接続数の制限

    接続文字列 URI のオプションに maxPoolSize=xx を追加して、クライアントごとのコネクションプールサイズを xx に制限します。

    次の例では、コネクションプールサイズを 100 に設定します。データベースアカウントは test、データベースは admin です:

    mongodb://test:****@s-bp10fb1cf399****.mongodb.rds.aliyuncs.com:3717,s-bp10f49cdf5e****.mongodb.rds.aliyuncs.com:3717/admin?readPreference=secondaryPreferred&maxPoolSize=100
  • 過半数ノードによる書き込み確認の保証

    接続文字列 URI のオプションに w=majority を追加して、書き込みが成功する前に、ノードの過半数からの確認応答を必須にします。

    例:

    データベースアカウントは test、データベースは admin です:

    mongodb://test:****@s-bp10fb1cf399****.mongodb.rds.aliyuncs.com:3717,s-bp10f49cdf5e****.mongodb.rds.aliyuncs.com:3717/admin?readPreference=secondaryPreferred&maxPoolSize=100&w=majority