Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

MongoDB Search 配置オプション

本番前または本番環境のニーズに合わせて、さまざまな配置タイプ、クラウドプロバイダー、およびクラスター階層を使用してクラスターを構造化できます。これらの推奨事項を使用して、配置タイプ、クラウドプロバイダーとリージョン、およびベクトル検索を実行するためのクラスターと検索階層を選択します。

environment
配置タイプ
クラスター階層
クラウドプロバイダーのリージョン
ノード アーキテクチャ

クエリのテスト

Flex or dedicated cluster

Local deployment
Free cluster, Flex, or higher tier

N/A
All


N/A

MongoDB プロセスと Search プロセスは同じノードで実行

アプリケーションのプロトタイプ作成

シャーディングまたはシャーディングされていない専用クラスター

M10M20 、または 以上の階層

すべて

MongoDB プロセスと Search プロセスは同じノードで実行

本番環境

シャーディングまたはシャーディングされていない個別の検索ノードを持つ専用クラスター

M10 以上のクラスター階層とS20以上の検索階層

AWS および Azure (一部のリージョン) または Google Cloud (すべてのリージョン)

MongoDB プロセスと Search プロセスは異なるノードで実行

次のセクションでは、各環境について説明します。

検索クエリをテストし、アプリケーションをプロトタイプするには、以下のセクションで説明されているデプロイメント タイプとノード アーキテクチャをお勧めいたします。

この構成は、次のユースケースに最適です。

  • インデックスするドキュメントの合計が 2M 未満

  • 10GB 未満のインデックス データ

  • 7 日間で 10,000 件未満のクエリ

使用量が記載された値を超える場合は、専用の検索ノードに移行します。

以下のセクションでは、このノード アーキテクチャについて詳しく説明します。

配置タイプ

クラウドのクラスターでMongoDB Search クエリをテストするには、 Flex または専有クラスターを配置できます。

To test MongoDB Search queries locally, create a local Atlas deployment using the Atlas CLI. This could be a single-node replica set hosted on your local computer. Local deployments are limited by the CPU, memory, and storage resources of your local machine. When your application is ready for production, migrate your local Atlas deployment to a production environment.

Cluster Tiers

MongoDB Search クエリをテストするには、 無料クラスター(以前は M0 と呼ばれる)と Flex クラスターを使用します。

For prototyping your application, use dedicated M10, M20, and higher tier clusters or deploy dedicated Search Nodes for workload isolation. When your application is ready for production and to handle large datasets, scale to higher tiers.

クラウドプロバイダーとリージョン

サポートされている任意のクラウドプロバイダーリージョンを使用してください。

The cloud provider and region that you choose affect the configuration options available for the cluster tiers and the cost of running the cluster.

テストおよびプロトタイプ作成環境には、 MongoDBプロセスとMongoDB Search プロセスが 同じノードで実行されるノードアーキテクチャを推奨します。この配置モデルの次の図では、 MongoDB Search mongot プロセスが Atlas クラスター内の各ノードで mongod と並行して実行され、これらは同じリソースを共有しています。

MongoDB Search のアーキテクチャ

デフォルトでは 、Atlas は 最初のMongoDB Searchインデックスを作成するときに、mongod プロセスを実行するのと同じノードでMongoDB Search mongot プロセスを有効にします。

クエリを実行する際、 MongoDB Search は 構成済みの読み込み設定 (read preference)を使用して、クエリを実行するノードを識別します。クエリはまずMongoDBプロセスに送られます。このプロセスは、レプリカセットクラスターの場合は mongod、シャーディングされたクラスターの場合は mongos です。

For a replica set cluster, the mongod process routes the query to the mongot on the same node. For sharded clusters, your cluster data is partitioned across mongod instances (shards) and each mongot process can only access the data on the mongod instance on the same node. Therefore, you can't run MongoDB Search queries that target a particular shard. mongos routes the query to all shards, making these scatter gather queries. If you use zones to distribute a sharded collection over a subset of the shards in the cluster, MongoDB Search routes the query to the zone that contains the shards for the collection that you are querying and runs your $search queries on just the shards where the collection is located.

クエリがMongoDB Search mongot プロセスにルーティングされた後、mongot プロセスは検索とスコアリングを実行し、一致する結果のドキュメントID とその他の検索メタデータを対応する mongod プロセスに返します。次に、mongod プロセスは一致する結果のクエリをドキュメント全体で暗黙的に実行し、その結果をクライアントに返します。クエリで $search 同時実行 オプションを使用すると、 MongoDB Search はクエリ内並列処理を有効にします。詳細については、セグメント間でのクエリ実行の並列化 を参照してください。

mongot プロセスの詳細については、「クエリ処理」を参照してください。

MongoDB Searchインデックスで 保存済みソース フィールド を定義すると、mongot プロセスは mongot の指定フィールドを保存できます。次に、 MongoDB Search クエリで returnStoredSource オプション を使用すると、データベースでドキュメント全体を検索する代わりに、mongot から一致するドキュメントの保存済みフィールドを直接検索できます。

Tip

MongoDB Search を有効にすると、データベースに自動的に同期する統合された完全管理検索エンジンを使用して、データ上に検索を簡単に構築できます。MongoDB Search は、全文検索用の $search$searchMeta などのMongoDB Search集計パイプラインステージ、セマンティック検索用の $vectorSearch などの MongoDB Search 集計パイプライン ステージを、他のMongoDB集計パイプラインステージやスコアベースの結果ランキングと組み合わせて使用する豊富な問い合わせ言語を提供します。

クラスターにプロビジョニングされるリソースによっては、同じノードに両方の プロセスを配置した方が、別個の 専用ノードで検索プロセスを実行中よりもコスト効率が高くなる場合があります。

データベースmongod と検索 mongot プロセス間でリソース競合が発生する可能性があります。これは、インデックスのパフォーマンスとクエリのレイテンシに影響可能性があります。本番環境に対応できるアプリケーションとその検索ワークロードをサポートするには、専用の検索ノードに移行します。

クラスターでMongoDB Search を有効にしても、追加料金や料金は発生しません。ただし、大規模なインデックス付きコレクションまたはインデックス定義では、クラスターのリソース使用率が増加する可能性があります。

mongod プロセスと mongot プロセスの両方が 同じノードで実行されるため、特定の状況下で mongot が使用できなくなる可能性があります。 次の表では、潜在的な原因について説明しています。

原因
説明

cluster Tier Scaling - Network Storage

クラスターを増やすアップまたはスケールダウンすると、Atlas は新しいインスタンスをプロビジョニングします。 インスタンスの準備ができると、Atlas はネットワークストレージを接続し、新しいノードで mongodmongot の両方を起動します。

mongodmongot より前に開始された場合、mongot がを実行中までMongoDB Search クエリは失敗します。

cluster Tier Scaling - Local SSD

ローカルSSD を使用して Atlas クラスターを増やす場合、ストレージを保持して新しいノードに再接続することはできません。そのため、Atlas は最初の同期を実行して検索インデックスを再構築します。最初の同期が完了するまで、検索クエリは失敗します。

Lucene のダウングレード

Lucene のダウングレードが必要になる稀なケースでは、新しい Luceneインデックス形式を読み取れない可能性があります。

ストレージの調整

Atlas クラスター ノードに接続されたネットワークストレージを保持できます。 これにより、mongot に影響ずにボリュームキャパシティーを拡張または圧縮できます。

ただし、クラスターがローカル NVMe ディスクを使用している場合、またはその他のまれな状況では、特定のリージョンではネットワークストレージを保持できない場合があります。このような場合、Atlas は最初の同期を実行し、最初の同期が完了するまで検索クエリは失敗します。

mongot バージョン更新

mongot のバージョン更新中に、Atlas は mongot の古いバージョンを停止し、新しいバージョンを開始します。 この短期間、新しい mongot が起動するまで、検索クエリは失敗します。

新しい mongod ノード

クラスターに新しいノードを追加すると、Atlas は最初の同期を実行して検索インデックスを作成します。 新しい mongodノードを使用する検索クエリは、最初の同期が完了するまで失敗します。

インスタンスの再起動または置換

  • 新しいセキュリティ ポリシーのロールアウト中に、またはクラウドプロバイダーで必要な場合には、Atlasインスタンスが再起動することがあります。 Atlas の再起動中に mongodmongot より前に開始されると、mongot が を実行中まで検索クエリは失敗します。

  • ハードウェアが正常でない場合、またはシステム アーキテクチャを移行した場合は、Atlasインスタンスの交換が必要になる場合があります。 インスタンスを置き換えると、mongot は最初の同期を実行し、最初の同期が完了するまで検索クエリは失敗します。

mongot 再起動

mongot プロセスが設定変更によって再起動されると、mongot が利用可能になるまで検索クエリは失敗します。

本番環境に対応したアプリケーションには、次のセクションで説明する配置タイプとノード アーキテクチャを使用することをお勧めします。

この構成は、次のユースケースに最適です。

  • 既存のテスト環境を本番環境に移行する場合は、専用の検索ノードをクラスターに追加します。詳しくは、「 専用検索ノードへの移行 」を参照してください。

  • 新しい本番環境の配置を最初から作成する場合は、 MongoDB Search が利用できるリージョンとゾーンでMongoDB Search をサポートする M10 以上の階層のクラスターを使用し、専用の検索ノードを環境に追加します。詳しくは、専用検索ノードの追加 を参照してください。

配置タイプ

本番環境向けのアプリケーションには、M10M20、およびそれ以上の専有クラスター階層を使用してください。これらの上位階層のクラスターは、大規模なデータセットや本番環境のワークロードを処理できます。

We recommend that you also deploy dedicated Search Nodes. If your search requirements increase, you can scale up your search deployment independently of scaling up the MongoDB nodes.

クラウドプロバイダーとリージョン

Use Search Nodes in all Google Cloud regions and in a subset of AWS and Azure regions. You must select a cloud provider and region where Search Nodes are available for your deployment.

All cluster tiers are available in supported cloud provider regions. The cloud provider and region that you choose affect the configuration options and search tiers available for the cluster and the cost of running the cluster.

本番環境では、 MongoDBプロセスとMongoDB Search プロセスが別々のノードで実行されるノードアーキテクチャを推奨します。個別の検索ノードを配置するには、専用検索ノードへの移行を参照してください。

この配置モデルの次の図では、 MongoDB Search mongot プロセスは専用の検索ノードで実行されます。このノードは、mongod プロセスが実行されるクラスター ノードとは別です。

別の検索ノードのアーキテクチャ

Atlas は、各クラスターまたはクラスター上の各シャードに検索ノードを配置します。たとえば、3 つのシャードを持つクラスターに 2 つの検索ノードを配置すると、Atlas は 6 つの検索ノード(シャードあたり 2 つ)を配置します。また、検索ノードの数と、各検索ノードにプロビジョニングされるリソースの量を構成することもできます。

When you deploy separate Search Nodes, Atlas automatically assigns a mongod for each mongot for indexing. The mongot communicates with the mongod to listen for and sync index changes for the indexes that it stores. MongoDB Search indexes and processes your queries similar to a deployment where both the mongod and mongot processes run on the same node. To learn more, see Supported Clients and Queries and Indexes. To learn more about deploying Search Nodes separately, see Search Nodes for Workload Isolation.

検索ノードに移行すると、Atlas は検索ノードを配置しますが、検索ノード上のクラスター上のすべてのインデックスが正常に構築されるまで、ノードに対するクエリを処理しません。 Atlas が新しいノードにインデックスをビルドする間も、クラスター ノードのインデックスを使用してクエリを処理し続けます。 Atlas は、検索ノードにインデックスを正常にビルドし、クラスター ノード上のインデックスを削除した後にのみ、検索ノードからクエリの処理を開始します。

注意

Scaling your cluster by adding search nodes or by changing the search tier triggers a rebuild of the full MongoDB Search index. However, if your cluster has dedicated search nodes for which you haven't enabled Encryption at Rest using Customer Key Management, Atlas provides the following optimizations:

  • When you scale your search nodes, Atlas uses a recent copy of your index in S3, Google Cloud Storage, or Azure Blob Storage instead of rebuilding the entire MongoDB Search index on the new node.

  • 既存のノードの場合、Atlas はインデックスファイルの新しい増分リストを定期的に取得してアップロードします。Atlas はインデックスファイルを最大14日間保存します。

クエリを実行すると、クエリは 構成済みの読み込み設定 (read preference) に基づいて mongod にルーティングされます。mongod プロセスは、同一のノード上のロードバランサーを通じて検索クエリーを転送します。その結果、 mongot プロセス全体にリクエストが分散されます。

MongoDB Search mongot プロセスは検索とスコアリングを実行し、一致する結果のドキュメントID とメタデータを mongod に返します。次に、mongod はドキュメント全体で一致する結果の検索を実行し、その結果をクライアントに返します。クエリで $search 同時実行 オプションを使用すると、 MongoDB Search はクエリ内並列処理を有効にします。詳細については、セグメント間でのクエリ実行の並列化 を参照してください。

If you delete all the Search Nodes on your cluster, there will be an interruption in processing your search query results. To learn more, see Modify a Cluster. If you delete your Atlas cluster, Atlas pauses and then deletes all associated MongoDB Search deployments (mongot processes).

MongoDB Searchインデックスで 保存済みソース フィールド を定義すると、mongot プロセスは mongot の指定フィールドを保存できます。次に、 MongoDB Search クエリで returnStoredSource オプション を使用すると、データベースでドキュメント全体を検索する代わりに、mongot から一致するドキュメントの保存済みフィールドを直接検索できます。

別個の検索ノードを配置すると次のメリットが得られます。

高可用性
別個の検索ノードを配置すると、Atlas は少なくとも 2 つの検索ノードを強制して、障害や中断が発生した場合にワークロードが最小限のダウンタイムで機能し続けるようにします。
スケーラビリティ

検索ノードを個別に配置すると、MongoDB クラスターから独立してストレージと計算能力をスケールできます。これにより、MongoDB とは独立してクエリ負荷をスケールすることも可能です。

検索ノードを水平方向に増やすするには、検索ノードの数を増減します。最小 2 から最大 32 の検索ノードまでプロビジョニングできます。クエリの負荷を分散するために、 MongoDB Search は検索クエリを利用可能なすべての検索ノードに分散します。

検索ノードを垂直方向にスケールするには、フルテキストワークロードをサポートするさまざまな検索階層、CPU、RAM、およびストレージ構成を選択します。

パフォーマンス

専用の検索ノードを導入することで、mongodおよび mongotプロセスのパフォーマンスとリソース利用率が向上し、これらのプロセス間のリソース競合が解消されます。

専用検索ノードは同時セグメント検索をサポートしているため、 MongoDB Search は複数のインデックスセグメントを同時に検索できます。同時セグメント検索を使用すると、クエリの応答時間が改善される場合があります。

ワークロードの分離
専用の検索ノードを配置しても、メインのデータベースノードへのデータ転送には直接影響しません。検索ノードは検索クエリをデータベースのメイン操作とは別に処理するため、ワークロードを分離できますが、検索ノードとデータベースノード間のトラフィックに対してのみネットワーク料金が発生します。

検索ノードのメモリ要件を決定するには、次の Atlas メトリクスを使用します。

  • 検索インデックスのサイズ

  • 検索ノード上の RAM の合計

検索インデックスが 10 GB で、検索ノードの合計 RAM が 4 GB のアプリケーションを考えてみましょう。この場合、1GBのRAMが他のプロセスで使用され、インデックスデータ用に3GBのみが使用可能な場合、残りの7GBのインデックスデータ(10GB - 3GB = 7GB)は、必要に応じてディスクからページインされます。ディスクからの頻繁なページングは、ページフォールト、ディスク I/O、CPU IOWait の増加を引き起こし、パフォーマンスの低下を招きます。

8GB 以上の RAM を持つ上位のクラスター階層を使用すると、Atlas は検索インデックスの大部分のデータをメモリから提供でき、ディスクの読み取りとページ フォールトを最小化され、パフォーマンスが向上します。

注意

検索ノードに使用されるローカル SSD では、インデックス操作をサポートするために 20% のストレージ オーバーヘッドが必要です。

MongoDB supports separate Search Nodes on dedicated (M10 or higher) clusters. Search Nodes are deployed on compute-intensive instances with high-performance local storage. You must deploy a minimum of two nodes. You will be billed daily for hourly resource usage per node. To learn more, see Search Node Costs.

デフォルトでは、MongoDBプロセスと検索プロセスは同じノードで実行されます。このアーキテクチャでは、カスタマー マネージドの暗号化はデータベースデータに適用されますが、検索インデックスには適用されません。

専用の検索ノードを有効にすると、検索プロセスは別々のノードで実行されます。これにより、検索ノード データの暗号化が有効になり、データベースデータと検索インデックスの両方を同じカスタマー マネージド キーで暗号化して、包括的な暗号化をカバレッジすることができます。

注意

データベース ノードと検索ノードは、同じカスタマー マネージド キーを使用して異なる暗号化方法を使用します。データベース ノードはWiredTiger暗号化ストレージ エンジンを使用し、検索ノードはディスク レベルの暗号化を使用します。

詳細については、「検索ノードのカスタマーキー管理を有効にする」を参照してください。

重要

この機能は KMS プロバイダー全体で利用できますが、検索ノードは AWS 上にある必要があります。

新しいクラスターに専用の検索ノードを追加すると、次のことが可能になります。

  • Change the size and scale of your search deployment independently from your database deployment.

  • MongoDBデータベースと検索プロセスを同じノードで実行するクラスターで発生する可能性のあるリソース競合を解消します。

専用の検索ノードを追加するには以下の手順に従います。

  1. Create your cluster as an M10 or higher tier in a cloud provider and region that supports node isolation. To learn more, see Create a Cluster.

    Dedicated Search Nodes are supported only for M10 and higher cluster tiers and in cloud provider regions that support node isolation.

  2. Enable Search Nodes for workload isolation and Configure Search Nodes.

ステージングから本番環境に移行し、専用の検索ノードを追加するには、既存のステージングとプロトタイプ作成の配置に次の変更を加えます。

  1. If your deployment uses a Flex cluster, change the cluster tier to a higher tier. Dedicated Search Nodes are supported only for M10 and higher cluster tiers.

  2. Deploy your cluster in regions where Search Nodes are also available. Dedicated Search Nodes are available on a subset of the AWS and Azure regions and in all supported Google Cloud regions. If your existing cluster is hosted in regions where Search Nodes aren't available, migrate your cluster to regions where Search Nodes are available. To learn more, see Cloud Provider Regions that Support Node Isolation.

  3. Search Nodes for workload isolation を有効にして、検索ノードを構成します。詳しくは、「検索ノードを追加する」を参照してください。

    専用の検索ノードを配置すると、次の一連のアクションが実行されます。

    • Atlas は検索ノードに検索インデックスを構築し、クラスター ノードからインデックスを削除します。

    • Atlas は検索クエリを検索ノードにルーティングします。

    • MongoDB Search は、検索インデックスを使用してクラスターにクエリを処理します。

mongod と並行して mongot を実行し、検索ノードを構成しない場合、mongot は次のいずれかのイベント中に終了し、Failed to Execute search Command エラーを返す可能性があります。

  • クラスターのスケールアップ

  • ノード フェイルオーバー

  • アップグレード mongot

mongot を専用の検索ノードにデプロイすると、mongod は検索クエリをmongot プロセスがアクティブな正常なノードのみにルーティングするプロキシを使用します。

戻る

クエリ