SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
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
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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (15)

MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJava
 
NoSQL no Azure - Azure Tech Nights - 2017
NoSQL no Azure - Azure Tech Nights - 2017NoSQL no Azure - Azure Tech Nights - 2017
NoSQL no Azure - Azure Tech Nights - 2017
 
Pos-QCon-BigData
Pos-QCon-BigDataPos-QCon-BigData
Pos-QCon-BigData
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando Ike
 
Processamento de dados com Node.js, AWS Lambda e Kinesis Streams
Processamento de dados com Node.js, AWS Lambda e Kinesis StreamsProcessamento de dados com Node.js, AWS Lambda e Kinesis Streams
Processamento de dados com Node.js, AWS Lambda e Kinesis Streams
 
TDC - Processamento de dados em alta escala com Node.js e AWS Lambda
TDC - Processamento de dados em alta escala com Node.js e AWS LambdaTDC - Processamento de dados em alta escala com Node.js e AWS Lambda
TDC - Processamento de dados em alta escala com Node.js e AWS Lambda
 
Como arquiteturas de dados quebram
Como arquiteturas de dados quebramComo arquiteturas de dados quebram
Como arquiteturas de dados quebram
 
Node slide
Node slideNode slide
Node slide
 
MongoDB com Java - GUOB 2018
MongoDB com Java  - GUOB  2018MongoDB com Java  - GUOB  2018
MongoDB com Java - GUOB 2018
 
Desenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com PythonDesenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com Python
 
Conhecendo o mongodb e clusterização de dados - ReplicaSet
Conhecendo o mongodb e clusterização de dados - ReplicaSetConhecendo o mongodb e clusterização de dados - ReplicaSet
Conhecendo o mongodb e clusterização de dados - ReplicaSet
 
Persistência
PersistênciaPersistência
Persistência
 
TypeScript + Node.js + cosmos db
TypeScript + Node.js + cosmos dbTypeScript + Node.js + cosmos db
TypeScript + Node.js + cosmos db
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
 
Mongo
MongoMongo
Mongo
 

Destacado

MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
Terra / Neo
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Fernando Boaglio
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
Thiago Avelino
 

Destacado (15)

MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
Hackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com JavascriptHackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com Javascript
 
Conhecimentos básicos para construir um portal que atenda 10milhões de pesoas
Conhecimentos básicos para construir um portal que atenda 10milhões de pesoasConhecimentos básicos para construir um portal que atenda 10milhões de pesoas
Conhecimentos básicos para construir um portal que atenda 10milhões de pesoas
 
MongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaMongoDB outras alternativas de persistência
MongoDB outras alternativas de persistência
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
NoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETECNoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETEC
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slides
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
Introdução ao mongodb - José Inoue - TchêLinux Uruguaiana
Introdução ao mongodb - José Inoue - TchêLinux UruguaianaIntrodução ao mongodb - José Inoue - TchêLinux Uruguaiana
Introdução ao mongodb - José Inoue - TchêLinux Uruguaiana
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
The Rise of Microservices
The Rise of MicroservicesThe Rise of Microservices
The Rise of Microservices
 

Similar a DevDay - MongoDb no mundo real - slides

Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
pichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
pichiliani
 

Similar a DevDay - MongoDb no mundo real - slides (20)

Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
Palestra de PHP
Palestra de PHPPalestra de PHP
Palestra de PHP
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
LT - Redis
LT - RedisLT - Redis
LT - Redis
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Mongo db
Mongo dbMongo db
Mongo db
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 

Más de Suissa

Flisol - Nodejs e MongoDb o casamento perfeito
Flisol - Nodejs e MongoDb o casamento perfeitoFlisol - Nodejs e MongoDb o casamento perfeito
Flisol - Nodejs e MongoDb o casamento perfeito
Suissa
 
7 masters wordpress - advanced queries
7 masters   wordpress - advanced queries7 masters   wordpress - advanced queries
7 masters wordpress - advanced queries
Suissa
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
Suissa
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage api
Suissa
 

Más de Suissa (20)

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

Último

Último (9)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

DevDay - MongoDb 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
  • 8.
  • 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