SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJavaFernando Boaglio
 
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 - 2017Renato Groff
 
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 IkePaulo Fernandes
 
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 StreamsDaniel Baptista Dias
 
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 LambdaDaniel Baptista Dias
 
Como arquiteturas de dados quebram
Como arquiteturas de dados quebramComo arquiteturas de dados quebram
Como arquiteturas de dados quebramGleicon Moraes
 
MongoDB com Java - GUOB 2018
MongoDB com Java  - GUOB  2018MongoDB com Java  - GUOB  2018
MongoDB com Java - GUOB 2018Fernando Boaglio
 
Desenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com PythonDesenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com PythonRoselma Mendes
 
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 - ReplicaSetJhonathan de Souza Soares
 
TypeScript + Node.js + cosmos db
TypeScript + Node.js + cosmos dbTypeScript + Node.js + cosmos db
TypeScript + Node.js + cosmos dbMVP Microsoft
 
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 PauloRenato Groff
 

Mais procurados (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
 

Destaque

Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 
Mundo real x mundo virtual paulo eduardo
Mundo real x mundo virtual paulo eduardoMundo real x mundo virtual paulo eduardo
Mundo real x mundo virtual paulo eduardoPaulo Martins
 
Contos de Fadas X Mundo Real
Contos de Fadas X Mundo RealContos de Fadas X Mundo Real
Contos de Fadas X Mundo RealMilasan
 
BIG DATA, de Fabiana Andrade
BIG DATA, de Fabiana AndradeBIG DATA, de Fabiana Andrade
BIG DATA, de Fabiana Andradebibliocampsp
 
Desvendando a Plataforma de Serviços Windows Azure
Desvendando a Plataforma de Serviços Windows AzureDesvendando a Plataforma de Serviços Windows Azure
Desvendando a Plataforma de Serviços Windows AzureLucasRomao
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureGiovanni Bassi
 
Cidades Inteligentes e Big Data
Cidades Inteligentes e Big DataCidades Inteligentes e Big Data
Cidades Inteligentes e Big DataDiego Lusa
 
Big Data em 8 perguntas - 09.10.2014 - DATANORTE / GOV RN
Big Data em 8 perguntas -  09.10.2014 - DATANORTE / GOV RNBig Data em 8 perguntas -  09.10.2014 - DATANORTE / GOV RN
Big Data em 8 perguntas - 09.10.2014 - DATANORTE / GOV RNMarcos Luiz Lins Filho
 
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdfAAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdfMicrosoft Brasil
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Leandro Silva
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureLuciano Condé
 
O que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSO que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSLucas A. Romão
 
Big data e mineração de dados
Big data e mineração de dadosBig data e mineração de dados
Big data e mineração de dadosElton Meira
 
Big Data e Governança de Dados, via DMM-Data Management Maturiy Model
Big Data e Governança de Dados, via DMM-Data Management Maturiy ModelBig Data e Governança de Dados, via DMM-Data Management Maturiy Model
Big Data e Governança de Dados, via DMM-Data Management Maturiy ModelCarlos Barbieri
 

Destaque (20)

Hamlet no Holodeck
Hamlet no HolodeckHamlet no Holodeck
Hamlet no Holodeck
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
Mundo real
Mundo realMundo real
Mundo real
 
Mundo real x mundo virtual paulo eduardo
Mundo real x mundo virtual paulo eduardoMundo real x mundo virtual paulo eduardo
Mundo real x mundo virtual paulo eduardo
 
Contos de Fadas X Mundo Real
Contos de Fadas X Mundo RealContos de Fadas X Mundo Real
Contos de Fadas X Mundo Real
 
BIG DATA, de Fabiana Andrade
BIG DATA, de Fabiana AndradeBIG DATA, de Fabiana Andrade
BIG DATA, de Fabiana Andrade
 
Big Data, JVM e Redes Sociais
Big Data, JVM e Redes SociaisBig Data, JVM e Redes Sociais
Big Data, JVM e Redes Sociais
 
Desvendando a Plataforma de Serviços Windows Azure
Desvendando a Plataforma de Serviços Windows AzureDesvendando a Plataforma de Serviços Windows Azure
Desvendando a Plataforma de Serviços Windows Azure
 
A plataforma Azure da Microsoft
A plataforma Azure da MicrosoftA plataforma Azure da Microsoft
A plataforma Azure da Microsoft
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows Azure
 
Cidades Inteligentes e Big Data
Cidades Inteligentes e Big DataCidades Inteligentes e Big Data
Cidades Inteligentes e Big Data
 
Big Data em 8 perguntas - 09.10.2014 - DATANORTE / GOV RN
Big Data em 8 perguntas -  09.10.2014 - DATANORTE / GOV RNBig Data em 8 perguntas -  09.10.2014 - DATANORTE / GOV RN
Big Data em 8 perguntas - 09.10.2014 - DATANORTE / GOV RN
 
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdfAAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
 
Big Data na Nuvem
Big Data na NuvemBig Data na Nuvem
Big Data na Nuvem
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL Azure
 
O que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSO que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaS
 
Hadoop, Big Data e Cloud Computing
Hadoop, Big Data e Cloud ComputingHadoop, Big Data e Cloud Computing
Hadoop, Big Data e Cloud Computing
 
Big data e mineração de dados
Big data e mineração de dadosBig data e mineração de dados
Big data e mineração de dados
 
Big Data e Governança de Dados, via DMM-Data Management Maturiy Model
Big Data e Governança de Dados, via DMM-Data Management Maturiy ModelBig Data e Governança de Dados, via DMM-Data Management Maturiy Model
Big Data e Governança de Dados, via DMM-Data Management Maturiy Model
 

Semelhante a MongoDB na Sailthru

BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
Palestra de PHP
Palestra de PHPPalestra de PHP
Palestra de PHPledsifes
 
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 inteligentesChristiano Anderson
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
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?Marcelo Dieder
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
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 ExpressoV3Flávio Lisboa
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
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 ElasticSearchBernardo Donadio
 
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ídosJoão Helis Bernardo
 
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 - INDAnitaibezerra
 

Semelhante a MongoDB na Sailthru (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
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
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
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
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
 

Mais de Suissa

ES6 funcional TDC - Suissa
ES6 funcional TDC - SuissaES6 funcional TDC - Suissa
ES6 funcional TDC - SuissaSuissa
 
TypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesTypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesSuissa
 
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.jsSuissa
 
Atomic design
Atomic design Atomic design
Atomic design Suissa
 
Palestra node.js
Palestra   node.js Palestra   node.js
Palestra node.js Suissa
 
Be MEAN JSConf Uruguay - Suissa
Be MEAN JSConf Uruguay - SuissaBe MEAN JSConf Uruguay - Suissa
Be MEAN JSConf Uruguay - SuissaSuissa
 
Atomic design
Atomic designAtomic design
Atomic designSuissa
 
Be MEAN
Be MEANBe MEAN
Be MEANSuissa
 
Be mean
Be meanBe mean
Be meanSuissa
 
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 perfeitoSuissa
 
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 perfeitoSuissa
 
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 grafosSuissa
 
Javascript moderno
Javascript modernoJavascript moderno
Javascript modernoSuissa
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 
DevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesDevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesSuissa
 
7 masters wordpress - advanced queries
7 masters   wordpress - advanced queries7 masters   wordpress - advanced queries
7 masters wordpress - advanced queriesSuissa
 
Javascript moderno
Javascript modernoJavascript moderno
Javascript modernoSuissa
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage apiSuissa
 
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 Suissa
 

Mais 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
 
DevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesDevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slides
 
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
 
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
 

MongoDB na Sailthru

  • 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