Lições Aprendidas com
André Zimmermann
Fabiano Modos @fmodos
Introdução
 Onde o MongoDB foi utilizado
 Sistema missão critica
 Orientado a Eventos
 Dividido em 6 módulos consumindo o mesma instancia do MongoDB
 Alta concorrência em curto espaço de tempo, média de mil eventos em um minuto
 Documentos com grande número de campos – de 60 até 130.
Introdução
“MongoDB is like Microsoft, they have a great marketing” - Lynn Langit
 Primeiras impressões - NoSQL resolve todos os problemas do SQL tradicional
 NoSQL - MongoDB geram diferentes problemas do SQL tradicional
Introdução
MongoDB é um banco NoSQL orientado a documentos, open-source.
 Alta performance
 Alta disponibilidade
 Escalonamento automático.
Introdução
Introdução
 MongoDB é Consistente e Tolerante a Partições de Rede
 Replicas recebem os dados do mestre de forma assíncrona
 Replicas elegem novo mestre durante partições de rede
Introdução
Introdução
Queries
 Consultas são muito simples de efetuar
Queries
 Essa simplicidade tem um custo
 Coleções pequenas são muito rápidas
 E quando a coleção não couber em memória?
Queries
Demonstração
Projeções
 Documentos tentem a ser grandes por serem não normalizado - NoSQL
 Alto IO, latência, consumo de memória
 Analisar consultas, conhecer os dados, criar Data Transfer Object, efetuar
projeções nas consultas.
 Cautela ao utilizar frameworks de persistência
Projeções
Demonstração
Ordenação
 As ordenações são executadas em memórias pelo MongoDB
 Existe ganho ao executar a ordenação na aplicação, quando falta o index específico
 MongoDB ignora indexes quando a ordenação não respeita a direção dos indexes.
Ordenação
Demonstração
Indexes
 Criação de Index é pesado
 Gera indisponibilidade na coleção
 Pode ser feito em segundo plano, mas é devagar
Indexes
 Index simples – Intersecção
Indexes
 Index Compostos – Respeitar a ordenação dos campos
Indexes
 Mensurar performance do sistema
 Usar ferramentas de analise de performance - DEX
Indexes
Demonstração
Fragmentação
 Fragmentação dos documentos
 Arquivo em disco é mapeado em páginas na RAM
Fragmentação
 Fragmentação dos documentos
 Escrita gera fragmentação
Replicação
 Quão é critico o MongoDB para sua aplicação
 Sistemas críticos não tem janela de manutenção
 Replicação permite manutenção sem indisponibilidade*
 Encontramos problemas ao criar a replicação
 IP x Hostname
 Indisponibilidade ao trocar o standalone para replicado
Replicação
Replicas
rs.initiate({
"_id" : "rsSet",
"members" : [
{ "host" : "10.2.54.4:27017",
"arbiterOnly" : false, "buildIndexes" : true, "priority" : 1 },
{ "host" : "10.2.54.2:27017",
"arbiterOnly" : true, "buildIndexes" : false },
{ "host" : "10.2.56.2:27017",
"arbiterOnly" : false, "buildIndexes" : true }
] })
Transações
 MongoDB: solução para todos os seus problemas?
 A nível individual (único documento) MongoDB, é atômico, consistente,
isolado e talvez durável.
 Não existem transações, lidar com dinheiro se torna extremamente complexo
Transações – como abordamos?
 Modelamos o sistema orientado a eventos
 Cada evento e documento conhece seu estado, impedindo execução duplicada
 Usamos o conhecimento do negócio para mitigar falhas no controle
 Não temos a necessidade de voltar atrás (rollback)
Migração
 Migramos do Mongo 3.0.4 para o 3.2.0
 Problemas ao criar a replicação, da instancia antiga para a nova.
 Criamos a instancia nova com replicação em três nós
 Codificamos uma ferramenta que consulta e insere para migração dos dados
 Ganho de performance – WiredTiger oferece lock por Documento
Conclusão e Perguntas
 MongoDB pode ser a ferramenta ideal para seu sistema
 Conheça os seus dados, modelagem faz diferença
 Padronize suas consultas
 Fragmentação existe no WiredTiger e MMAPv1
 Replicas são essenciais
Obrigado

Lições Aprendidas MongoDB

  • 1.
    Lições Aprendidas com AndréZimmermann Fabiano Modos @fmodos
  • 2.
    Introdução  Onde oMongoDB foi utilizado  Sistema missão critica  Orientado a Eventos  Dividido em 6 módulos consumindo o mesma instancia do MongoDB  Alta concorrência em curto espaço de tempo, média de mil eventos em um minuto  Documentos com grande número de campos – de 60 até 130.
  • 3.
    Introdução “MongoDB is likeMicrosoft, they have a great marketing” - Lynn Langit  Primeiras impressões - NoSQL resolve todos os problemas do SQL tradicional  NoSQL - MongoDB geram diferentes problemas do SQL tradicional
  • 4.
    Introdução MongoDB é umbanco NoSQL orientado a documentos, open-source.  Alta performance  Alta disponibilidade  Escalonamento automático.
  • 5.
  • 6.
    Introdução  MongoDB éConsistente e Tolerante a Partições de Rede  Replicas recebem os dados do mestre de forma assíncrona  Replicas elegem novo mestre durante partições de rede
  • 7.
  • 8.
  • 9.
    Queries  Consultas sãomuito simples de efetuar
  • 10.
    Queries  Essa simplicidadetem um custo  Coleções pequenas são muito rápidas  E quando a coleção não couber em memória?
  • 11.
  • 12.
    Projeções  Documentos tentema ser grandes por serem não normalizado - NoSQL  Alto IO, latência, consumo de memória  Analisar consultas, conhecer os dados, criar Data Transfer Object, efetuar projeções nas consultas.  Cautela ao utilizar frameworks de persistência
  • 13.
  • 14.
    Ordenação  As ordenaçõessão executadas em memórias pelo MongoDB  Existe ganho ao executar a ordenação na aplicação, quando falta o index específico  MongoDB ignora indexes quando a ordenação não respeita a direção dos indexes.
  • 15.
  • 16.
    Indexes  Criação deIndex é pesado  Gera indisponibilidade na coleção  Pode ser feito em segundo plano, mas é devagar
  • 17.
    Indexes  Index simples– Intersecção
  • 18.
    Indexes  Index Compostos– Respeitar a ordenação dos campos
  • 19.
    Indexes  Mensurar performancedo sistema  Usar ferramentas de analise de performance - DEX
  • 20.
  • 21.
    Fragmentação  Fragmentação dosdocumentos  Arquivo em disco é mapeado em páginas na RAM
  • 22.
    Fragmentação  Fragmentação dosdocumentos  Escrita gera fragmentação
  • 23.
    Replicação  Quão écritico o MongoDB para sua aplicação  Sistemas críticos não tem janela de manutenção  Replicação permite manutenção sem indisponibilidade*  Encontramos problemas ao criar a replicação  IP x Hostname  Indisponibilidade ao trocar o standalone para replicado
  • 24.
  • 25.
    Replicas rs.initiate({ "_id" : "rsSet", "members": [ { "host" : "10.2.54.4:27017", "arbiterOnly" : false, "buildIndexes" : true, "priority" : 1 }, { "host" : "10.2.54.2:27017", "arbiterOnly" : true, "buildIndexes" : false }, { "host" : "10.2.56.2:27017", "arbiterOnly" : false, "buildIndexes" : true } ] })
  • 26.
    Transações  MongoDB: soluçãopara todos os seus problemas?  A nível individual (único documento) MongoDB, é atômico, consistente, isolado e talvez durável.  Não existem transações, lidar com dinheiro se torna extremamente complexo
  • 27.
    Transações – comoabordamos?  Modelamos o sistema orientado a eventos  Cada evento e documento conhece seu estado, impedindo execução duplicada  Usamos o conhecimento do negócio para mitigar falhas no controle  Não temos a necessidade de voltar atrás (rollback)
  • 28.
    Migração  Migramos doMongo 3.0.4 para o 3.2.0  Problemas ao criar a replicação, da instancia antiga para a nova.  Criamos a instancia nova com replicação em três nós  Codificamos uma ferramenta que consulta e insere para migração dos dados  Ganho de performance – WiredTiger oferece lock por Documento
  • 29.
    Conclusão e Perguntas MongoDB pode ser a ferramenta ideal para seu sistema  Conheça os seus dados, modelagem faz diferença  Padronize suas consultas  Fragmentação existe no WiredTiger e MMAPv1  Replicas são essenciais
  • 30.