Mongo db no mundo real slides
-
Upload
suissa-corp -
Category
Documents
-
view
1.954 -
download
3
description
Transcript of Mongo db no mundo real slides
MongoDB no mundo realJean Carlo Nascimento aka Suissa
Links
nosqlbr.com.brjquerybrasil.org
frontendbrasil.com.brjavascriptbrasil.com.br
comoprogramarphp.com.brgithub.com/suissaabout.me/suissa
@osuissa
Caso de Uso
MongoDB em produção na Sailthru
Sailthru
Comunicação personalizada e plataforma de análisehttps://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-sailthruhttp://www.slideshare.net/sailthru/two-years