SlideShare uma empresa Scribd logo
MongoDB no mundo real
 Jean Carlo Nascimento aka Suissa
Links
               nosqlbr.com.br
              jquerybrasil.org
           frontendbrasil.com.br
          javascriptbrasil.com.br
        comoprogramarphp.com.br
             github.com/suissa
              about.me/suissa
                 @osuissa
Caso de Uso
MongoDB em produção na Sailthru
Sailthru
Comunicação personalizada e plataforma de
análise
https://www.sailthru.com/
Sailthru tamanho
●   200 milhões perfis de usuário
●   40 milhões emails enviados por dia
●   1000 requests por segundo
●   8 replica sets, 40 nós
●   Bilhões de documentos
Arquitetura da Sailthru
● Serviços críticos: API, link rewriting, onsite
  tracking/recommendations, email delivery,
  reporting/user interface
● Amazon EC2 e Colo(Peer1)
● Java, LAMP, Puppet, Scribe, ActiveMQ
MongoDB na Sailthru
● 2 anos de uso
● Replicaset diferentes para propósitos
  diferentes
● Coleções lógicas separadas no aplicativo
● Dados naturalmente particionados por
  cliente
Mongo db no mundo real   slides
Main Database
●   Banco de dados central
●   Estatísticas agregadas
●   Uso geral reduzido
●   Instancias menores
●   Coleções que não precisam escalar
●   Provavelmente nunca precisará de Sharding
Email Database
● Todos emails já enviados
● Uma das maiores coleções (meio bilhão
  documentos)
● Muitas escritas
● Coleções que não precisam escalar
● Provavelmente será a primeira coisa a usar
  Sharding
Horizon Database
● Dados de navegação para uso local
● Coleção pequena porém com muita leitura,
  poderá ser colocada em cache
● Escritas aumentarão
● Logicamente separada
Profile Database
● Perfis dos usuários (cerca de 30 milhões)
● Separado pois o acesso é mais aleatório e
  necessita de um conjunto de dados
● Grandes consultas devem acontecer apenas
  nos escravos
Migração do MySQL para MongoDB
● JSON é lingua franca
● Migrando uma tabela por vez e rodando os 2
  ao mesmo tempo
● Mudança no código para escrever nos 2
● Escrita e execução de script para "reaterrar"
  dados antigos
● Remoção do código que escreve para
  MySQL
Vantagens com MongoDB
● Desenvolvimento rápido
● Fácil armazenamento dos dados do cliente
  como JSON flexível
● Ótima performance
● Encoraja a escalabilidade
● Eles conhecem muito bem
Lições Aprendidas
●   DBRefs são um pouco pesadas
●   Use referencias legíveis
●   Índice para todas queries mais usadas
●   Tire vantagem de múltiplos índices
Dicas
● Documentos devem ser movidos quando
  ultrapassarem o tamanho esperado
● Caso possua campos que serão
  preenchidos posteriormente, ja popule com
  vazio.
● Autoinc pode ser emulado com
  findAndModify
● Cuidado com moedas, guarde em centavos
● Data BSON é bom para timestamp
● Considere antes de usar um Mapper
● Use GridFS para arquivos pouco acessados
mongod
●   Nunca finalize com kill -9
●   Nunca rode sem replicaset
●   Nunca rode sem log
●   Use journaling
Referencias
http://www.slideshare.net/ibwhite/mongodb-in-
production-at-sailthru
http://www.slideshare.net/sailthru/two-years

Mais conteúdo relacionado

PDF
Lições Aprendidas MongoDB
PDF
Secot banco de dados no sql de código aberto
PDF
NoSQL + Node.js
PDF
Fisl banco de dados no sql de código aberto
PPT
Estudo de caso do "O Curioso" (Rio on Rails)
PPTX
Introdução ao MongoDB (NoSQL)
PDF
MongoDB: introdução à sua próxima base de dados
PPT
Talk at QConSP
Lições Aprendidas MongoDB
Secot banco de dados no sql de código aberto
NoSQL + Node.js
Fisl banco de dados no sql de código aberto
Estudo de caso do "O Curioso" (Rio on Rails)
Introdução ao MongoDB (NoSQL)
MongoDB: introdução à sua próxima base de dados
Talk at QConSP

Mais procurados (15)

PDF
MongoDB com Java - SouJava
PPTX
NoSQL no Azure - Azure Tech Nights - 2017
PPTX
Pos-QCon-BigData
PDF
Um milhao tdc2014sp Apresentação por Fernando Ike
PDF
Processamento de dados com Node.js, AWS Lambda e Kinesis Streams
PDF
TDC - Processamento de dados em alta escala com Node.js e AWS Lambda
PDF
Como arquiteturas de dados quebram
PPT
PDF
MongoDB com Java - GUOB 2018
ODP
Desenvolvendo web crawler/scraper com Python
PPTX
Conhecendo o mongodb e clusterização de dados - ReplicaSet
PPTX
Persistência
PPTX
TypeScript + Node.js + cosmos db
PPTX
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
MongoDB com Java - SouJava
NoSQL no Azure - Azure Tech Nights - 2017
Pos-QCon-BigData
Um milhao tdc2014sp Apresentação por Fernando Ike
Processamento de dados com Node.js, AWS Lambda e Kinesis Streams
TDC - Processamento de dados em alta escala com Node.js e AWS Lambda
Como arquiteturas de dados quebram
MongoDB com Java - GUOB 2018
Desenvolvendo web crawler/scraper com Python
Conhecendo o mongodb e clusterização de dados - ReplicaSet
Persistência
TypeScript + Node.js + cosmos db
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
Anúncio

Destaque (20)

PPTX
Hamlet no Holodeck
KEY
Sistemas para o Mundo Real
PPTX
Mundo real
PPT
Mundo real x mundo virtual paulo eduardo
PPT
Contos de Fadas X Mundo Real
PPT
BIG DATA, de Fabiana Andrade
PPTX
Big Data, JVM e Redes Sociais
PPTX
Desvendando a Plataforma de Serviços Windows Azure
PDF
A plataforma Azure da Microsoft
PPTX
Introdução à computação na nuvem e Windows Azure
PDF
Cidades Inteligentes e Big Data
PPT
Big Data em 8 perguntas - 09.10.2014 - DATANORTE / GOV RN
PDF
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
PDF
Big Data na Nuvem
KEY
Sistemas para o Mundo Real - TDC 2012
PPTX
Desenvolvendo para o Windows Azure e SQL Azure
PPTX
O que há de novo no Microsoft Azure IaaS
PDF
Hadoop, Big Data e Cloud Computing
PDF
Big data e mineração de dados
PDF
Big Data e Governança de Dados, via DMM-Data Management Maturiy Model
Hamlet no Holodeck
Sistemas para o Mundo Real
Mundo real
Mundo real x mundo virtual paulo eduardo
Contos de Fadas X Mundo Real
BIG DATA, de Fabiana Andrade
Big Data, JVM e Redes Sociais
Desvendando a Plataforma de Serviços Windows Azure
A plataforma Azure da Microsoft
Introdução à computação na nuvem e Windows Azure
Cidades Inteligentes e Big Data
Big Data em 8 perguntas - 09.10.2014 - DATANORTE / GOV RN
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
Big Data na Nuvem
Sistemas para o Mundo Real - TDC 2012
Desenvolvendo para o Windows Azure e SQL Azure
O que há de novo no Microsoft Azure IaaS
Hadoop, Big Data e Cloud Computing
Big data e mineração de dados
Big Data e Governança de Dados, via DMM-Data Management Maturiy Model
Anúncio

Semelhante a Mongo db no mundo real slides (20)

PDF
Bancos de dados NoSQL
PDF
BigQuery Performance Improvements Storage API
PDF
Palestra de PHP
KEY
Utilizando NoSQL no desenvolvimento de soluções inteligentes
PPTX
No sql Orientado a documento
PDF
Como criar infraestrutura de sites para receber milhões de usuários?
PPS
Apresentação
PDF
Desenvolvendo uma aplicacao Full Javascript
PPTX
LT - Redis
PPTX
Banco de dados
PDF
Palestra nosql
PDF
Tirando água da rocha: escalabilidade via software no ExpressoV3
KEY
Projeto Octopus - Database Sharding para ActiveRecord
PPT
Interoperabilidade entre bancos de dados
PPT
Interoperabilidade entre bancos de dados
PDF
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
PPSX
Conhecendo o Django
PPTX
Mongo db
PDF
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
ODP
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Bancos de dados NoSQL
BigQuery Performance Improvements Storage API
Palestra de PHP
Utilizando NoSQL no desenvolvimento de soluções inteligentes
No sql Orientado a documento
Como criar infraestrutura de sites para receber milhões de usuários?
Apresentação
Desenvolvendo uma aplicacao Full Javascript
LT - Redis
Banco de dados
Palestra nosql
Tirando água da rocha: escalabilidade via software no ExpressoV3
Projeto Octopus - Database Sharding para ActiveRecord
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Conhecendo o Django
Mongo db
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA

Mais de Suissa (20)

PDF
ES6 funcional TDC - Suissa
PDF
TypeScript - Olhe teu tipo, script slides
PDF
Mongoose - Melhores práticas usando MongoDB e Node.js
PDF
Atomic design
PDF
Palestra node.js
PDF
Be MEAN JSConf Uruguay - Suissa
PDF
Atomic design
PDF
Be MEAN
PDF
Be mean
PDF
Devcast node.js e mongo db o casamento perfeito
PDF
Flisol - Nodejs e MongoDb o casamento perfeito
PDF
Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos
PDF
Javascript moderno
PDF
DevDay - O elo perdido: sincronizando webapps
PDF
DevDay - MongoDb no mundo real - slides
PDF
7 masters wordpress - advanced queries
PDF
Javascript moderno
PDF
Curso mongo db com php
PPT
Html5 storage api
PPT
Palestra sobre MongoDB com PHP no PHP'n'Rio
ES6 funcional TDC - Suissa
TypeScript - Olhe teu tipo, script slides
Mongoose - Melhores práticas usando MongoDB e Node.js
Atomic design
Palestra node.js
Be MEAN JSConf Uruguay - Suissa
Atomic design
Be MEAN
Be mean
Devcast node.js e mongo db o casamento perfeito
Flisol - Nodejs e MongoDb o casamento perfeito
Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos
Javascript moderno
DevDay - O elo perdido: sincronizando webapps
DevDay - MongoDb no mundo real - slides
7 masters wordpress - advanced queries
Javascript moderno
Curso mongo db com php
Html5 storage api
Palestra sobre MongoDB com PHP no PHP'n'Rio

Mongo db no mundo real slides

  • 1. MongoDB no mundo real Jean Carlo Nascimento aka Suissa
  • 2. Links nosqlbr.com.br jquerybrasil.org frontendbrasil.com.br javascriptbrasil.com.br comoprogramarphp.com.br github.com/suissa about.me/suissa @osuissa
  • 3. Caso de Uso MongoDB em produção na Sailthru
  • 4. Sailthru Comunicação personalizada e plataforma de análise https://www.sailthru.com/
  • 5. Sailthru tamanho ● 200 milhões perfis de usuário ● 40 milhões emails enviados por dia ● 1000 requests por segundo ● 8 replica sets, 40 nós ● Bilhões de documentos
  • 6. Arquitetura da Sailthru ● Serviços críticos: API, link rewriting, onsite tracking/recommendations, email delivery, reporting/user interface ● Amazon EC2 e Colo(Peer1) ● Java, LAMP, Puppet, Scribe, ActiveMQ
  • 7. MongoDB na Sailthru ● 2 anos de uso ● Replicaset diferentes para propósitos diferentes ● Coleções lógicas separadas no aplicativo ● Dados naturalmente particionados por cliente
  • 9. Main Database ● Banco de dados central ● Estatísticas agregadas ● Uso geral reduzido ● Instancias menores ● Coleções que não precisam escalar ● Provavelmente nunca precisará de Sharding
  • 10. Email Database ● Todos emails já enviados ● Uma das maiores coleções (meio bilhão documentos) ● Muitas escritas ● Coleções que não precisam escalar ● Provavelmente será a primeira coisa a usar Sharding
  • 11. Horizon Database ● Dados de navegação para uso local ● Coleção pequena porém com muita leitura, poderá ser colocada em cache ● Escritas aumentarão ● Logicamente separada
  • 12. Profile Database ● Perfis dos usuários (cerca de 30 milhões) ● Separado pois o acesso é mais aleatório e necessita de um conjunto de dados ● Grandes consultas devem acontecer apenas nos escravos
  • 13. Migração do MySQL para MongoDB ● JSON é lingua franca ● Migrando uma tabela por vez e rodando os 2 ao mesmo tempo ● Mudança no código para escrever nos 2 ● Escrita e execução de script para "reaterrar" dados antigos ● Remoção do código que escreve para MySQL
  • 14. Vantagens com MongoDB ● Desenvolvimento rápido ● Fácil armazenamento dos dados do cliente como JSON flexível ● Ótima performance ● Encoraja a escalabilidade ● Eles conhecem muito bem
  • 15. Lições Aprendidas ● DBRefs são um pouco pesadas ● Use referencias legíveis ● Índice para todas queries mais usadas ● Tire vantagem de múltiplos índices
  • 16. Dicas ● Documentos devem ser movidos quando ultrapassarem o tamanho esperado ● Caso possua campos que serão preenchidos posteriormente, ja popule com vazio. ● Autoinc pode ser emulado com findAndModify ● Cuidado com moedas, guarde em centavos ● Data BSON é bom para timestamp ● Considere antes de usar um Mapper ● Use GridFS para arquivos pouco acessados
  • 17. mongod ● Nunca finalize com kill -9 ● Nunca rode sem replicaset ● Nunca rode sem log ● Use journaling