MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs Menu
Docs Home
/ /

MongoDB Search とベクトル検索の配置

KubernetesクラスターにMongoDB Search とベクトル検索を配置すると、アプリケーション内で強力な検索エクスペリエンスを直接構築できます。MongoDB Search とベクトル検索を使用すると、オンプレミスのMongoDBデータベースと自動的に同期する従来のテキスト検索とAIを使用したベクトル検索機能の両方を構築できます。これにより、高度な検索機能を提供しながら個別のシステムを同期して維持する必要がなくなります。詳しくは、以下を参照してください。

オンプレミス配置で全文検索やセマンティック検索などの検索機能を有効にするには、 MongoDB Search およびベクトル検索プロセス(mongot)を配置し、それをMongoDBデータベース配置(mongod)に接続する必要があります。 。mongot の配置は任意であり、それが提供する検索機能を活用する予定の場合にのみ必要です。

MongoDB Database プロセス(mongod)は、mongot のすべての検索クエリのプロキシとして機能します。mongod はクエリを mongot に転送し、クエリを処理します。mongot はクエリ結果を mongod に返し、ノードはその結果を に転送します。mongot と直接やり取りすることはありません。

mongot プロセスには、データベースや他の検索ノードと共有されていない独自の永続ボリュームがあります。ストレージ は、データベースから継続的に提供されるデータから構築されたインデックスを維持するために使用されます。インデックス定義(メタデータ)はデータベース自体に保存されます。

mongot は、次のアクションを実行します。

  • インデックスを管理します。

    mongot は、データベース内のインデックス定義を更新します。

  • データベースからデータを取得します。

    mongot ノードは、データベースへの永続的な接続を確立し、データベースからインデックスをリアルタイムで更新します。

  • 検索クエリを処理します。

    When mongod$search$searchMeta、または $vectorSearch クエリを受信すると、そのクエリは mongot ノードのいずれかに送信されます。クエリを受け取った mongot はクエリを処理し、データを集計し、その結果を mongod に返し、ユーザーに転送します。

mongot コンポーネントは 1 つのMongoDBレプリカセットと厳密に結合されているため、複数のデータベースやレプリカセットで共有することはできません。つまり、レプリカセット配置には専用の検索ノードがあります。

mongotmongod の間のネットワーク接続は両方向で行われます。

  • mongot は、インデックスの構築とクエリの実行に使用されるデータを取得するためにレプリカセットへの接続を確立します。

  • mongodmongot に接続して、インデックス管理やデータのクエリなどの検索関連の操作を転送します。

Kubernetes演算子 の有無にかかわらず、検索配置アーキテクチャに大きな違いはありません。Kubernetes Operator は、特にデータベースもKubernetes Operator によって管理されている場合に、完全に機能する検索ノードを配置するために必要な手順を簡素化します。

配置するには、MongoDBSearch カスタム リソース(CR)を適用します。これを Kubernetes 演算子が取得して mongot ポッドを取得して配置を開始し、spec で指定された永続ストレージをリクエストします。Kubernetes Operator を使用して配置されたMongoDB 検索 とベクトル検索 は、同じKubernetesクラスター内または完全に独立した外部MongoDBデータベース内にKubernetes Operator によって配置されたMongoDBレプリカセットを対象とできます。使用するように mongot を配置して構成する方法については、以下をご覧ください。

でMongoDB Search とベクトル検索 を活用するには、次の手順に従います。

  • MongoDB Community を配置するには、Kubernetes Operator を使用して Kubernetes クラスター内に配置された、完全に機能する MongoDB 8.2+ レプリカセット が必要です。

  • MongoDB Enterprise を配置するには、次のいずれかの方法で配置された完全に機能するMongoDB 8.2+レプリカセットが必要です。

    • Kubernetes演算子を使用するKubernetesクラスター内

    • Kubernetesクラスターの外部

  • Cloud ManagerまたはMongoDB Ops Manager のインスタンス

始める前に、以下の点を考慮してください。

次の表は、 Kubernetes Operator が自動的に実行する構成タスクと、 KubernetesにMongoDB Search とベクトル検索を正常に配置し、 KubernetesのMongoDBレプリカセットまたは外部MongoDBレプリカセットに接続するために実行する必要があるアクションを示しています。

タスク
(Inside Kubernetes)
Performed by
(External MongoDB)
Performed by

Kubernetes内でのMongoDB Ops Managerの配置

Kubernetes 演算子

Kubernetes 演算子

Kubernetes の外部でのCloud ManagerまたはMongoDB Ops Managerの配置

あなたの

あなたの

MongoDBレプリカセットの配置

Kubernetes 演算子

あなたの

MongoDBSearch カスタムリソースを作成する

あなたの

あなたの

MongoDBレプリカセットへの接続文字列の指定

Kubernetes 演算子

あなたの

mongot 構成 YAML を作成

Kubernetes 演算子

Kubernetes 演算子

mongod プロセスで必要なレプリカセットパラメータを設定する

Kubernetes 演算子

あなたの

searchCoordinator ロールを持つ mongot のユーザーを作成

Kubernetes Operator と MongoDBUserリソースを適用することで

あなたの

クエリ検索に必要な権限を持つユーザーでMongoDBレプリカセットを構成する

あなたの

あなたの

MongoDB Search およびベクトル検索インデックスの作成

あなたの

あなたの

mongodノードから接続するために検索ポッドを外部で公開します

不要

あなたの

mongot ノードからの接続用にmongodポッドを外部で公開します

不要

あなたの

次の画像は、mongot プロセスのセキュリティ構成を示しています。MongoDBサーバーがKubernetesクラスター内にある場合、 Kubernetes Operator はMongoDB Search とベクトル検索の キーファイル認証 を自動的に設定します。MongoDBサーバーが外部の場合は、レプリカセットのキーファイル認証情報を含むkubernetes secretを作成し、MongoDBSearch CRで参照する必要があります。

検索用のキーファイル認証と TLS 構成を示す図。
クリックして拡大します

mongot プロセスは、mTLS を使用して mongod 接続を認証します。TLS を有効にすると、mongot プロセスは認証のクライアント証明書としてMongoDBサーバーの TLS 証明書を使用します。この証明書は、mongot が構成されている CA 証明書に対して検証されます。認証を正しく機能させるには、TLS を有効にして、mongotmongod の両方を構成する必要があります。

同じKubernetesクラスター内のMongoDBリソースをインデックスように構成された場合、MongoDB と MongoDBSearch リソースの両方が TLS 用に構成されている場合、 Kubernetes Operator は mongod CA 証明書を mongot に自動的に伝達し、検索クエリ接続で mTLS を有効にします。MongoDBレプリカセットがKubernetesの外部に配置されている場合は、レプリカセットのCA証明書を含むKubernetes secretを作成し、MongoDBSearch.spec.source.external.tls.caフィールドで参照、検索クエリリクエストでmTLS認証を有効にする必要があります。

MongoDBSearch は、TLS を使用して転送中のデータと認証情報を保護できます。インデックスマネジメントコマンドと検索クエリでは、(空のオブジェクトであっても、{}spec.security.tlsフィールドを指定し、spec.security.tls.certificateKeySecretRefフィールドのKubernetes SecretでTLS証明書を提供します。この TLS 証明書は、MongoDB レプリカセットが使用する CA 証明書を発行したのと同じ CA によって発行され、署名されている必要があります。

MongoDBSearch と MongoDB の両方が Kubernetes 演算子によって配置されると、基礎の mongotmongod の構成は大部分が Kubernetes 演算子自体によって処理されます。MongoDBレプリカセットがKubernetesの外部に配置される場合、.spec.source.external.tlsフィールドには、mongod が構成されているのと同じ CA 証明書を含むkubernetes secretが入力され、mongod 構成自体で searchTLSMode パラメータが requireTLS に設定されている必要があります。

項目一覧