Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Learn why MongoDB was selected as a leader in the 2024 Gartner® Magic Quadrant™
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Construindo com padrões: o padrão computado

Ken W. Alger, Daniel Coupal3 min read • Published Jan 11, 2022 • Updated May 16, 2022
MongoDB
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Vimosvárias maneiras de armazenar dados de forma otimizada na sérieBuilding with Patterns. Agora, vamos examinar um aspecto diferente do design de esquemas. O simples fato de armazenar dados e tê-los disponíveis não é, em geral, tão útil. A utilidade dos dados fica muito mais evidente quando podemos calcular valores a partir deles. Qual é a receita total de vendas do último Amazon Alexa? Quantos espectadores assistiram ao último filme de grande sucesso de bilheteria? Esses tipos de perguntas podem ser respondidos a partir de dados armazenados em um banco de dados, mas precisam ser computados.
No entanto, a execução desses cálculos toda vez que são solicitados torna-se um processo que consome muitos recursos, especialmente em conjuntos de dados enormes. Ciclos de CPU, acesso ao disco e memória, todos podem estar envolvidos.
Pense em um aplicativo da web de informações de filme. Toda vez que visitamos o aplicativo para procurar um filme, a página fornece informações sobre o número de cinemas em que o filme foi exibido, o número total de pessoas que assistiram ao filme e a receita geral. Se o aplicativo precisar computar constantemente esses valores para cada visita à página, ele poderá usar muitos recursos de processamento em filmes populares
Na maioria das vezes, porém, não precisamos saber esses números exatos. Poderíamos fazer os cálculos em segundo plano e atualizar o documento principal de informações do filme de vez em quando. Esses cálculos nos permitem mostrar uma representação válida dos dados sem precisar de esforço extra da CPU.

O padrão computado

O Padrão Computado é utilizado quando temos dados que precisam ser computados repetidamente em nosso aplicativo. O Padrão Computado também é utilizado quando o padrão de acesso a dados faz uso intensivo de leitura; por exemplo, se você tiver 1,000,000 leituras por hora, mas apenas 1,000 gravações por hora, fazer a computação no momento de uma gravação dividiria o número de cálculos por um fator 1000.
Em nosso exemplo de banco de dados de filmes, podemos fazer os cálculos com base em todas as informações de exibição que temos em um determinado filme, calcular o (s) resultado (s) e armazená-los com as informações sobre o filme em si. Em um ambiente de baixa gravação, o cálculo pode ser feito em conjunto com qualquer atualização dos dados de origem. Quando há gravações mais regulares, os cálculos podem ser feitos em intervalos definidos, por exemplo, a cada hora. Como não estamos interferindo nos dados de origem nas informações de triagem, podemos continuar a executar novamente os cálculos existentes ou executar novos cálculos a qualquer momento e saber que obteremos os resultados corretos.
Outras estratégias para realizar o cálculo podem envolver, por exemplo, adicionar um carimbo de data/hora ao documento para indicar quando ele foi atualizado pela última vez. O aplicativo pode então determinar quando o cálculo precisa ocorrer. Outra opção pode ser ter uma fila de cálculos que precisam ser feitos. É melhor deixar a seleção da estratégia de atualização para o desenvolvedor do aplicativo.

Caso de uso de amostra

O Padrão Computado pode ser utilizado sempre que os cálculos precisarem ser executados em relação aos dados. Conjuntos de dados que precisam de somas, como receita ou visualizadores, são um bom exemplo, mas dados de séries temporais, catálogos de produtos, aplicativos de exibição única e fornecimento de eventos também são os principais candidatos a esse padrão.
Este é um padrão que muitos clientes implementaram. Por exemplo, um cliente faz consultas de agregação maciça em dados de veículos e armazena os resultados para que o servidor mostre as informações nas próximas horas.
Uma editora compila todos os tipos de dados para criar listas ordenadas como o "100 Best... ". Essas listas só precisam ser regeneradas de vez em quando, enquanto os dados subjacentes podem ser atualizados em outros momentos.

Conclusão

Esse poderoso padrão de design permite reduzir a carga de trabalho da CPU e aumentar o desempenho do aplicativo. Ele pode ser utilizado para aplicar um cálculo ou uma operação nos dados de uma coleção e armazenar o resultado em um documento. Isso permite evitar que o mesmo cálculo seja feito repetidamente. Sempre que seu sistema estiver executando os mesmos cálculos repetidamente e você tiver uma alta taxa de leitura para gravação, considere o padrão Computed.
Já percorremos mais de um terço desta série Building with Patterns . Na próxima vez, analisaremos os recursos e benefícios do padrão de subconjunto e como ele pode ajudar com problemas de falta de memória .

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Início rápido

Introdução às transações ACID multidocumento em Python


Sep 11, 2024 | 10 min read
Tutorial

Uma leve introdução às listas vinculadas com o MongoDB


Apr 02, 2024 | 13 min read
Tutorial

Atualize sem receios com a stable API do MongoDB


Mar 05, 2024 | 5 min read
Tutorial

Modernizando esquemas RDBMS com um document model do MongoDB


Mar 06, 2024 | 6 min read
Sumário
  • O padrão computado