Visão geral
É possível estruturar seu cluster com diferentes tipos de sistema, provedores de nuvem e camadas de cluster para atender às necessidades de um ambiente de pré-produção ou produção. Use essas recomendações para selecionar o tipo de sistema, provedor de nuvem e região, e cluster e níveis de pesquisa para executar a pesquisa vetorial.
ambiente | Tipo de implementação | Camada do cluster | Região do provedor de nuvem | Arquitetura de nó |
|---|---|---|---|---|
Testando queries | Flex or dedicated cluster Local deployment | Free cluster, Flex, or higher tier N/A | All N/A | Processos do MongoDB e Atlas Search executados no mesmo nó |
Aplicativos de protótipos | Cluster dedicado, fragmentado ou não fragmentado |
| Todos | Processos do MongoDB e Atlas Search executados no mesmo nó |
Produção | Cluster dedicado com nós de pesquisa separados, fragmentados ou não fragmentados |
| AWS e Azure em algumasregiões do ou Google Cloud em todas as regiões | Processos do MongoDB e Atlas Search executados em nós diferentes |
As seções a seguir descrevem cada ambiente:
Ambientes de teste e protótipos
Para testar suas queries de pesquisa e criar protótipos do seu aplicativo, recomendamos o tipo de implantação e a arquitetura de nó descritos nas seções a seguir.
Essa configuração é mais adequada para os seguintes casos de uso:
Menos de 2M de documentos no total para indexar
Menos de 10 GB de dados indexados
Menos de 10.000 queries em um período de 7 dias
Se seu uso exceder os valores listados, migre para nós de pesquisa dedicados.
As seções a seguir descrevem a arquitetura deste nó em mais detalhes.
- Tipo de implementação
Para testar queries do MongoDB Search em clusters na nuvem, você pode implantar um cluster dedicado.
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
Para testar suas queries do MongoDB Search, use clusters gratuitos (anteriormente conhecidos como
M0) e clusters flexíveis.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.- Provedor de nuvem e região
Use qualquer região de provedor de nuvem compatível.
The cloud provider and region that you choose affect the configuration options available for the cluster tiers and the cost of running the cluster.
Arquitetura de nó
Para ambientes de teste e criação de protótipos, recomendamos uma arquitetura de nó na qual os processos do MongoDB e o MongoDB Search sejam executados no mesmo nó. No diagrama a seguir deste modelo de implantação, o processo mongot do MongoDB Search é executado ao lado de mongod em cada nó no Atlas cluster e eles compartilham os mesmos recursos.

Por padrão, o Atlas habilita o processo mongot do MongoDB Search no mesmo nó que executa o processo mongod quando você cria seu primeiro índice do MongoDB Search.
Quando você executa uma query, o MongoDB Search usa a preferência de leitura configurada para identificar o nó no qual executar a query. A query primeiro vai para o processo do MongoDB, que é mongod para um cluster de conjunto de réplicas ou mongos para um cluster fragmentado.
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.
Depois que a query é roteada para um processo mongot do MongoDB Search, o processo mongot executa a pesquisa e a pontuação e retorna os IDs dos documento e outros metadados da pesquisa dos resultados correspondentes para o processo mongod correspondente. O processo mongod então realiza uma pesquisa completa do documento implicitamente para os resultados correspondentes e retorna os resultados ao cliente. Se você usar a opção $search concurrent em sua query, o MongoDB Search ativará o paralelismo intraquery. Para saber mais, consulte Parallelize Query Execution Across Segments.
Para saber mais sobre o processo mongot, consulte Processamento de query.
Você pode definir campos de origem armazenados em seu índice do MongoDB Search para que o processo mongot possa armazenar os campos especificados em mongot. Em seguida, você pode usar a Opção returnStoredSource em sua consulta do MongoDB Search para recuperar os campos armazenados para documentos correspondentes diretamente do mongot em vez de fazer uma pesquisa completa de documento no banco de dados.
Benefícios
Ao ativar o MongoDB Search, você pode criar facilmente a pesquisa sobre seus dados com um mecanismo de pesquisa integrado e totalmente gerenciado que se sincroniza automaticamente com seu banco de dados. O MongoDB Search fornece uma linguagem de query avançada que usa fases do pipeline de agregação do MongoDB Search, como $search e $searchMeta para pesquisa de texto completo e $vectorSearch para pesquisa semântica em conjunto com outras fases do pipeline de agregação do MongoDB e classificação de resultados baseada em pontuação.
Dependendo dos recursos provisionados para seu cluster, a implantação de ambos os processos no mesmo nó pode ser mais econômicas do que executar o processo de pesquisa em um nó dedicado separado.
Limitações
Você pode enfrentar contenção de recursos entre o banco de dados mongod e os processos de pesquisa mongot. Isso pode impacto negativamente o desempenho do seu índice e a latência das suas queries. Para oferecer suporte a aplicativos prontos para produção e suas cargas de trabalho de pesquisa, migre para nós de pesquisa dedicados.
Custo
Não há taxas ou encargos adicionais quando você ativa o MongoDB Search em seu cluster. No entanto, é possível observar um aumento na utilização de recursos no cluster para grandes collections indexadas ou definições de índice.
Considerações
Como os processos mongod e mongot são executados no mesmo nó, mongot pode ficar indisponível em determinadas circunstâncias. A tabela a seguir descreve as possíveis causas:
Causa | Descrição |
|---|---|
cluster Tier Scaling - Network Storage | Quando você escala um cluster para cima ou para baixo, o Atlas provisiona uma nova instância. Após a instância estar pronta, o Atlas anexa o armazenamento de rede e inicia Se o |
cluster Tier Scaling - Local SSD | Quando você escala um Atlas cluster usando o SSD local, não é possível reter o armazenamento e anexe-o novamente aos novos nós. Portanto, o Atlas executa uma sincronização inicial para reconstruir os índices de pesquisa. As queries de pesquisa falham até que a sincronização inicial seja concluída. |
Downgrade do Lucene | Em casos raros em que é necessário fazer o downgrade do Lucene, talvez você não consiga ler os formatos de índice Lucene mais recentes. |
Ajuste de armazenamento | Você pode manter o armazenamento de rede conectado aos nós do Atlas cluster. Isso permite que você expanda ou contraia a capacidade de volume sem impacto para No entanto, reter o armazenamento de rede pode não ser possível em determinadas regiões, quando o cluster estiver usando discos NVMe locais ou em outras circunstâncias raras. Nesses casos, o Atlas executa uma sincronização inicial e as queries de pesquisa falham até que a sincronização inicial seja concluída. |
| Durante uma atualização de versão do |
Novo nó | Quando você adiciona um novo nó ao seu cluster, o Atlas executa uma sincronização inicial para criar os índices de pesquisa. As queries de pesquisa que usam o novo nó |
Reinicialização ou substituição da instância |
|
| Sempre que o processo |
Ambiente de produção
Para seu aplicativo pronto para produção, recomendamos usar o tipo de implantação e a arquitetura de nó descritos nas seções a seguir.
Essa configuração é mais adequada para os seguintes casos de uso:
Se você optar por migrar seu ambiente de teste existente para a produção, adicione nós de pesquisa dedicados ao seu cluster. Para saber mais, consulte Migrar para nós de pesquisa dedicados.
Se você criar um novo sistema de produção do zero, certifique-se de usar clusters de nível
M10ou maiores que ofereçam suporte ao MongoDB Search nas regiões e zonas onde o MongoDB Search está disponível e adicione nós de pesquisa dedicados ao seu ambiente. Para saber mais, consulte Adicionar nós de pesquisa dedicados.
- Tipo de implementação
Para aplicativos prontos para produção, use
M10,M20e níveis superiores de cluster dedicado. Esses clusters de nível superior podem lidar com grandes conjuntos de dados e cargas de trabalho de produção.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.
- Provedor de nuvem e região
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.
Arquitetura de nó
Para ambientes de produção, recomendamos uma arquitetura de nó na qual os processos do MongoDB e os processos do MongoDB Search são executados em nós separados. Para implantar nós de pesquisa separados, consulte Migrar para nós de pesquisa dedicados.
No diagrama a seguir deste modelo de sistema, o processo mongot do MongoDB Search é executado em nós de pesquisa dedicados, que são separados dos nós do cluster nos quais o processo mongod é executado.

O Atlas implanta nós de pesquisa com cada cluster ou com cada fragmento no cluster. Por exemplo, se você implantar dois nós de pesquisa para um cluster com três shards, o Atlas implantará seis nós de pesquisa (dois por shard). Você também pode configurar o número de nós de pesquisa e a quantidade de recursos provisionados para cada nó de pesquisa.
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.
Quando você migra para os Nós de Pesquisa, o Atlas implanta os Nós de Pesquisa, mas não atende a queries nos nós até que ele crie com êxito todos os índices no cluster nos Nós de Pesquisa. Enquanto o Atlas cria os índices nos novos nós, ele continua a atender queries usando os índices nos nós do cluster. O Atlas começa a atender queries dos nós de pesquisa somente depois de criar com êxito os índices nos nós de pesquisa e remover os índices nos nós do cluster.
Observação
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.
Para os nós existentes, o Atlas periodicamente obtém e carrega uma nova lista incremental de arquivos de índice. O Atlas mantém arquivos de índice por até quatorze (14) dias.
Quando você executa uma query, a query é roteada para mongod com base na preferência de leitura configurada. O processo mongod encaminha a query de pesquisa por meio de um balanceador de carga no mesmo nó, que distribui as solicitações entre todos os processos mongot.
O processo mongot do MongoDB Search executa a pesquisa e a pontuação e retorna os IDs dos documento e os metadados dos resultados correspondentes para mongod. O mongod então realiza uma pesquisa completa do documento para os resultados correspondentes e retorna os resultados ao cliente. Se você usar a opção $search concurrent em sua query, o MongoDB Search ativará o paralelismo intraquery. Para saber mais, consulte Parallelize Query Execution Across Segments.
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).
Você pode definir campos de origem armazenados em seu índice do MongoDB Search para que o processo mongot possa armazenar os campos especificados em mongot. Em seguida, você pode usar a Opção returnStoredSource em sua consulta do MongoDB Search para recuperar os campos armazenados para documentos correspondentes diretamente do mongot em vez de fazer uma pesquisa completa de documento no banco de dados.
Benefícios
A distribuição de nós de pesquisa separados oferece os seguintes benefícios:
- Alta disponibilidade
- Quando você implanta nós de pesquisa separados, o Atlas aplica um mínimo de dois nós de pesquisa para garantir que sua carga de trabalho permaneça operacional, com tempo mínimo de inatividade, em evento de falha ou interrupção.
- Escalabilidade
Quando você implanta nós de pesquisa separados, é possível dimensionar o armazenamento e a computação de forma independente do seu cluster MongoDB. Isso permite que você também dimensione a carga da query independentemente do MongoDB.
Para dimensionar os nós de pesquisa horizontalmente, aumente ou reduza o número de nós de pesquisa. Você pode provisionar de um mínimo de 2 até um máximo de 32 nós de pesquisa. Para equilibrar a carga de query, o MongoDB Search distribui queries de pesquisa em todos os nós de pesquisa disponíveis.
Para dimensionar os nós de pesquisa verticalmente, selecione diferentes níveis de pesquisa, configurações de CPU, RAM e armazenamento que suportem suas cargas de trabalho de texto completo.
- Desempenho
Ao implantar nós de pesquisa dedicados, você melhora o desempenho e a utilização de recursos para os processos
mongodemongote elimina a contenção de recursos entre esses processos.Os nós de pesquisa dedicados oferecem suporte à pesquisa simultânea de segmentos, o que permite que o MongoDB Search pesquise vários segmentos de índice ao mesmo tempo. O uso da pesquisa simultânea de segmentos melhora o tempo de resposta da query em alguns casos.
- Isolamento da carga de trabalho
- A implantação de nós de pesquisa dedicados não afeta diretamente a transferência de dados para os nós do banco de dados principal. Os nós de pesquisa lidam com as queries de pesquisa separadamente das operações do banco de dados principal, fornecendo isolamento da carga de trabalho enquanto você incorre em cobranças de rede apenas para o tráfego entre os nós de pesquisa e os nós do banco de dados.
Dicas para dimensionar e escalar nós de pesquisa
Para determinar os requisitos de memória para os nós de pesquisa, use as seguintes métricas do Atlas:
Tamanho do Índice de Pesquisa
RAM total no nó de pesquisa
Considere um aplicativo que possui um índice de pesquisa de 10 GB e 4 GB de RAM total no nó de pesquisa. Nesse caso, se 1 GB de RAM for usado por outros processos e apenas 3 GB estiverem disponíveis para os dados de índice, os 7 GB restantes dos dados de índice (10 GB - 3 GB = 7 GB) serão paginados, conforme necessário, do disco. A paginação frequente do disco causa aumento de falhas de página, E/S de disco e IOWait da CPU, resultando em degradação do desempenho.
Se você usar uma camada de cluster de pesquisa mais alta com mais RAM, como 8 GB ou mais, isso permite que o Atlas sirva a maior parte dos dados do índice de pesquisa a partir da memória, minimizando leituras de disco e falhas de página e, com isso, melhorando o desempenho.
Observação
Os SSDs locais usados para nós de pesquisa exigem uma sobrecarga de armazenamento de 20% para permitir operações de indexação.
Custo dos Nós de Pesquisa
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.
Habilitar Encryption at rest
Por padrão, os processos de pesquisa e MongoDB são executados nos mesmos nós. Com essa arquitetura, a criptografia gerenciada pelo cliente se aplica aos dados do seu banco de dados , mas não se aplica aos índices de pesquisa.
Quando você habilita nós de pesquisa dedicados, os processos de pesquisa são executados em nós separados. Isso permite que você ative criptografia de dados do nó de pesquisa, para que possa criptografar os dados do banco de dados e os índices de pesquisa com as mesmas chaves gerenciadas pelo cliente para uma cobertura abrangente de criptografia.
Observação
Os nós de banco de dados e os nós de pesquisa usam métodos de criptografia diferentes com as mesmas chaves gerenciadas pelo cliente. Os nós de banco de dados usam o WiredTiger Mecanismo de armazenamento criptografado, enquanto os nós de pesquisa usam criptografia no nível do disco.
Para saber mais, consulte Ativar o gerenciamento de chaves do cliente para nós de pesquisa.
Importante
Este recurso está disponível em todos os provedores de KMS, mas os nós de pesquisa devem estar na AWS.
Adicionar nós de pesquisa dedicados
Adicionar nós de pesquisa dedicados a um novo cluster permite:
Change the size and scale of your search deployment independently from your database deployment.
Eliminar a contenção de recursos que você possa enfrentar em um cluster que executa o banco de dados MongoDB e os processos de pesquisa no mesmo nó.
Para adicionar nós de pesquisa dedicados:
Create your cluster as an
M10or 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
M10and higher cluster tiers and in cloud provider regions that support node isolation.Enable Search Nodes for workload isolation and Configure Search Nodes.
Migrar para nós dedicados do Atlas Search
Para migrar da preparação para a produção e adicionar nós de pesquisa dedicados, faça as seguintes alterações no seu sistema de preparação e protótipo existente:
If your deployment uses a Flex cluster, change the cluster tier to a higher tier. Dedicated Search Nodes are supported only for
M10and higher cluster tiers.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.
Habilite Search Nodes for workload isolation e configure nós de pesquisa. Para saber mais, consulte Adicionar nó de pesquisa.
Quando você distribui nós de pesquisa dedicados, a seguinte sequência de ações ocorre:
O Atlas cria os índices de pesquisa nos nós de pesquisa e remove os índices dos nós do cluster.
O Atlas direciona as queries de pesquisa para os nós de pesquisa.
O MongoDB Search usa os índices de pesquisa para atender às queries em seu cluster.
Solução de problemas de implantação
Failed to Execute search Command Erro
Se você implantar mongot para executar junto com mongod e não configurar os nós de pesquisa, mongot pode ser encerrado e retornar o erro Failed to Execute search Command durante qualquer um dos seguintes eventos:
Aumentando um cluster
Failover de nó
Atualizando
mongot
Se você implantar mongot em nós de pesquisa dedicados, o mongod usará um provisionamento que roteia queries de pesquisa apenas para os nós íntegros em que o processo mongot está ativo.