Skip to content

Instantly share code, notes, and snippets.

@juniormartinxo
Created December 4, 2023 11:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save juniormartinxo/aba03b022cb02f307b203ba2b77bb9a2 to your computer and use it in GitHub Desktop.
Save juniormartinxo/aba03b022cb02f307b203ba2b77bb9a2 to your computer and use it in GitHub Desktop.

Modelagem de dados com MongoDB

Referência https://www.youtube.com/watch?v=znciYcOIVv0&t=6s

Quando criamos um banco MongoDB a primeira coisa que devemos focar é em pensar na carga de trabalho.

Operação Tipo de trabalho Informação Frequência Ctricidade Latência Tamanho Vida útil dos dados Sergurança
Qual ação será executada na aplicação? escrita ou leitura Qual(is) campos serão impactados na execução da operação? Quantas execuções p/ dia? alta, média ou baixa Qual o tempo médio para execução da operação? Qual o tamanho dos dados persistidos após a escrita tempo em que os dados serão úteis na coleção LGPD etc

Princípios que devem ser seguidos

1) O quê se usa junto, se guarda junto

Ou seja, se os dados são criados/ alterados em uma mesma tela e em um mesmo formulário eles devem permanecer juntos em uma única coleção

2) Quando referenciar ou embarcar

I) Referenciar

  • quando temos n pra zilhão
  • quando hover muita escrita em ambas e há a necessidade de integridade nas relações
  • quando uma parte dos dados é usada com frequência, mas a outra não

II) Embarcar

  • para integridade das operações de leitura, ou seja, quando temos que ler todos os dados de uma só vez
  • para integridade de operações de escrita "um pra um" ou "um pra muitos", desde que "muitos" não seja um número absurdo.
  • dados que são excluídos ou arquivados juntos
  • não sabe se referencia ou embarca, é melhor embarcar

Patterns MongoDB

1) Attribute Pattern

O Padrão de Atributo é particularmente adequado quando:

  • Temos documentos grandes com muitos campos semelhantes, mas há um subconjunto de campos que compartilham características comuns e queremos classificar ou consultar esse subconjunto de campos;
  • Os campos que precisamos classificar são encontrados apenas em um pequeno subconjunto de documentos; ou
  • Ambas as condições acima são atendidas nos documentos.

Referência:

2) Extended Reference Pattern

Este pattern é adequado para aplicativos com junções repetidas e o aplicativo está tentando consultar os dados várias vezes. A ideia por trás desse padrão é armazenar os dados acessados ​​com frequência de um lado para muitos lados em um relacionamento um para muitos. Ideal para campos que serão utilizados em uma interface com botões do tipo ver detalhes, clique aqui etc.

Referência:

3) Schema Versioning Pattern

Este pattern aproveita o suporte do MongoDB para que documentos com formatos diferentes existam na mesma coleção de banco de dados. Este aspecto polimórfico do MongoDB é muito poderoso. Ele permite que documentos que possuem campos diferentes ou até mesmo tipos de campos diferentes para o mesmo campo coexistam pacificamente lado a lado.

Referência:

4) Computed Pattern

Este pattern é indicado quando haverá o uso intensivo de leitura (significativamente mais leituras do que gravações para uma determinada 'entidade'). Quando temos dados que precisam ser computados repetidamente em nossa aplicação.

Referência

5) Subset Pattern

Este patterno aborda os problemas associados a um conjunto de trabalho que excede a RAM, resultando na remoção de informações da memória. Isso geralmente é causado por documentos grandes que contêm muitos dados que não são realmente usados ​​pelo aplicativo.

Referência

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment