Otimize com o MongoDB Atlas: Performance Advisor, analisador de queries e muito mais
Avalie esse Tutorial
Otimizar o desempenho do MongoDB envolve compreender as complexidades do esquema e das consultas do seu banco de dados, e navegar nesse cenário pode parecer assustador. Pode haver muito o que ter em mente, mas o MongoDB Atlas fornece diversas ferramentas para ajudar a identificar áreas onde a forma como você interage com seus dados pode ser melhorada.
Neste tutorial, Go ver o que são algumas dessas ferramentas, onde encontrá-las e como podemos usar o que elas nos indicam para aproveitar ao máximo nosso banco de dados. Quer você seja um DBA, desenvolvedor ou apenas um Entusiasta do MongoDB, nosso objetivo é capacitar você com o conhecimento para aproveitar todo o potencial dos seus dados.
À medida que seu aplicativo cresce e os casos de uso evoluem, possíveis problemas podem se apresentar no que antes era um esquema bem projetado. Como você pode identificá-los? Bem, no Atlas, na tela do explorador de dados, selecione a collection que você gostaria de examinar. Acima dos documentos exibidos, você verá uma guia chamada "Schema Anti-Patterns".
Agora, em minha collection, tenho um quadro que descreve as tarefas necessárias para nosso próximo sprint, então meus documentos têm a seguinte aparência:
1 { 2 "boardName": "Project Alpha", 3 "boardId": "board123", 4 "tasks": [ 5 { 6 "taskId": "task001", 7 "title": "Design Phase", 8 "description": "Complete the initial design drafts.", 9 "status": "In Progress", 10 "assignedTo": ["user123", "user456"], 11 "dueDate": "2024-02-15", 12 }, 13 // 10,000 more tasks 14 ] 15 }
Embora isso tenha funcionado bem quando nosso projeto era pequeno em escopo, as listas de tarefas necessárias realmente ficaram fora de controle (relacionáveis, tenho certeza). Vamos acessar nossa guia antipadrão de esquema e ver o que ela diz.
A partir daqui, você receberá uma lista de antipadrão detectados em seu banco de dados e algumas possíveis correções. Se clicarmos no item "Evite usar arrays ilimitadas em documentos", podemos aprender um pouco mais.
Esta collection tem alguns problemas. Dentro dos meus documentos, tenho uma matriz substancial. Matrizes grandes podem causar vários problemas, desde exceder o tamanho limite em documentos (16 MB) até degradar o desempenho dos índices à medida que as matrizes aumentam de tamanho. Agora que identifiquei isso, posso clicar em "Saiba como corrigir esse problema" para ser levado ao documentação do MongoDB. Nesse caso, a solução mencionada é a referência. Isso envolve armazenar as tarefas em uma collection separada e ter um campo para indicar a qual quadro elas pertencem. Isso resolverá meu problema da matriz ilimitada.
Agora, cada aplicativo é único e, portanto, a forma como você usa o MongoDB para aproveitar seus dados será igualmente única. Raramente há uma resposta correta sobre como modelar seus dados com o MongoDB, mas com essa ferramenta você pode ver o que está desacelerando seu banco de dados e o que você pode considerar alterar – de índices não utilizados que estão aumentando o tempo de operação de gravação para mais de - confiança na cara operação
$lookup
, quando documentos incorporados fariam.Enquanto você continua usando seu MongoDB database, o desempenho deve estar sempre em sua mente. O desempenho lento pode prejudicar a experiência do usuário com seu aplicativo e, às vezes, pode até torná-lo inutilizável. Com conjuntos de dados maiores e operações complexas, essas operações lentas podem se tornar mais difíceis de evitar sem esforço consciente. O Performance Advisor fornece uma visão global do seu cluster e, como o nome sugere, pode ajudar a identificar e resolver os problemas de desempenho.
O Performance Advisor é uma ferramenta disponível para clusters M10+ e instâncias sem servidor. Ele monitora as queries que o MongoDB considera lentas, com base em quanto tempo as operações em seu cluster normalmente levam. Quando você abrir seu cluster no MongoDB Atlas, verá uma guia chamada "Performance Advisor".
Essa ferramenta funciona monitorando continuamente os padrões de consulta e as características da carga de trabalho em tempo real. Aproveitando esses dados, o Performance Advisor identifica automaticamente possíveis problemas de desempenho e fornece recomendações específicas e acionáveis para otimizar as operações do banco de dados.
Essas sugestões geralmente incluem a criação de novos índices, modificações dos existentes ou a remoção de índices redundantes, todas com o objetivo de reduzir o tempo de execução da query e melhorar a eficiência geral. Sem índices, o MongoDB precisa verificar todos os documentos de uma coleção para retornar um resultado de consulta, mas os índices permitem que o MongoDB limite o número de documentos que ele deve verificar. Os índices melhoram o desempenho da sua consulta, mas têm um custo de desempenho para operações de gravação. Por isso, uma ferramenta que possa equilibrar os prós e os contras de cada índice se torna inestimável.
Meu banco de dados parece estar bem com os índices que tenho no momento e só detecta algumas áreas de melhoria em meus esquemas, mas é importante verificar regularmente esta página. Isso ocorre porque essa página monitora uma amostra das coleções mais ativas do 20. Isso significa que o consultor de desempenho pode apresentar regularmente novas áreas de otimização. Vamos dar uma olhada em como um desses pode ser.
A partir desse exemplo na documentação do MongoDB, temos um banco de dados que contém informações sobre viagens de táxi na cidade de Nova York. Uma consulta típica no aplicativo seria mais ou menos assim:
1 db.yellow.find({ "dropoff_datetime": "2014-06-19 21:45:00", 2 "passenger_count": 1, 3 "trip_distance": {"$gt": 3 } 4 })
Com uma collection grande o suficiente, a execução de queries em dados de campos específicos gerará operações potencialmente lentas sem collections indexadas corretamente. Se olharmos para os índices sugeridos, somos apresentados a essa tela, exibindo os índices que podemos querer criar.
Serão sugeridos índices potenciais em ordem de impacto no desempenho, do mais impactante para o menos. O impacto é uma indicação das possíveis melhorias de desempenho que o índice sugerido trazer. Se estivermos satisfeitos com nossa sugestão, podemos selecionar " create index. " Se quisermos refinar as áreas para que as recomendações sejam mostradas, podemos selecionar collection específicas no menu suspenso ou reduzir o intervalo de tempo em que queremos analisar o desempenho do cluster.
Enquanto o MongoDB Performance Advisor se destaca por fornecer recomendações proativas e automatizadas para indexação e melhorias gerais de desempenho, o MongoDB Query Profiler atende a um propósito distinto e complementar. É a ferramenta ideal para um exame manual mais detalhado das operações do seu banco de dados.
O Query Profiler permite capturar e analisar informações detalhadas sobre consultas individuais, incluindo tempo de execução e utilização de recursos. Esse nível de granularidade é particularmente útil quando você precisa diagnosticar e solucionar problemas específicos de desempenho que não estão diretamente relacionados à indexação, como consultas de execução lenta ou padrões de consulta ineficientes. Com o Query Profiler, você pode identificar consultas que estão demorando mais do que o esperado, entender seus planos de execução e identificar os estágios exatos de uma consulta que estão causando gargalos.
No painel do cluster, clique na guia “Profiler”. Os clusters do Atlas têm a criação de perfil habilitada por padrão. Na guia Profiler, você verá uma lista de consultas, comandos e operações recentes. Cada entrada exibirá informações importantes, como tipo de operação, namespace, tempo de execução e muito mais. Procure queries com longos tempos de execução. Estas são suas queries lentas.
Clique em qualquer query para expandir e visualizar informações detalhadas, incluindo o padrão da query, o número de documentos retornados, o uso do índice e as estatísticas de execução.
Preste atenção às consultas que não usam índices ou que verificam um grande número de documentos. Considere criar novos índices ou modificar os existentes para melhorar a eficiência da query.
Depois de fazer alterações, como indexação, monitore o Query Profiler para observar qualquer melhoria no desempenho da consulta. Verifique regularmente o Query Profiler para acompanhar o desempenho do seu banco de dados.
Lembre-se de que o gerenciamento eficaz do banco de dados é um processo contínuo, e o monitoramento e a otimização regulares são a chave para manter um sistema de banco de dados saudável e eficiente.
Já vimos como examinar nosso banco de dados e como melhorar nossos modelos de dados e consultas em nosso aplicativo, mas o melhor método sempre será começar com um bom design. O MongoDB Atlas oferece uma variedade de modelos de modelagem de dados projetados para demonstrar as melhores práticas para vários casos de uso. Esses modelos servem como um ponto de partida valioso, especialmente para aqueles que são novos nos bancos de dados NoSQL ou estão procurando otimizar seus esquemas MongoDB existentes. Para encontrá-los, acesse a visão geral do seu projeto e você verá o “Data Toolkit”. Abaixo deste cabeçalho, clique em "Modelos de modelagem de dados".
Esses modelos fornecem vários exemplos que demonstram vários casos de uso, de " Store Sales " a " Financial Analytics. " Eles fornecem informações sobre padrões de modelagem de dados, a melhor forma de consultar dados armazenados dessa forma e listas de casos de uso nos quais esses modelos podem ser úteis. Você está planejando armazenar dados ilimitados? Confira o exemplo " Customer Reviews ". Isso demonstra um bom exemplo de utilização do padrão de subconjunto .
É importante considerar que, embora você possa não ver um exemplo exato do que é seu aplicativo, esses modelos estão lá para destacar as práticas recomendadas no design de esquema. Você provavelmente verá algo que pode aplicar ou deve considerar sobre a forma como está usando seus dados e aprenderá a melhor forma de aproveitar ao máximo o document model.
A otimização do MongoDB database é um processo contínuo. À medida que seu aplicativo desenvolve e seus dados crescem, é essencial monitorar e ajustar regularmente a implantação do MongoDB Atlas para garantir um desempenho consistentemente alto.
Neste tutorial, mergulhamos no mundo do MongoDB Atlas, explorando as ferramentas e técnicas poderosas disponíveis para otimizar esquemas e queries. Mantenha-se proativo, monitore o desempenho e use as ferramentas disponíveis para garantir que seus bancos de dados MongoDB Atlas sejam executados de forma tranquila e eficiente.
Se você quiser saber mais sobre o MongoDB e a melhor forma de projetar seus dados, vá até o Centro de Desenvolvedores e confira Um resumo dos antipadrão de design de esquema e Como identificá-los ou nossos Fóruns da comunidade de desenvolvedores para ver o que outras pessoas estão construindo.