18

Click here to load reader

DevDay - MongoDb no mundo real - slides

Embed Size (px)

DESCRIPTION

Apresentação do caso de uso da Sailthru de utilização do MongoDb e o que eles aprenderão com a utilização, dando algumas dicas de uso.

Citation preview

Page 1: DevDay - MongoDb no mundo real - slides

MongoDB no mundo realJean Carlo Nascimento aka Suissa

Page 3: DevDay - MongoDb no mundo real - slides

Caso de Uso

MongoDB em produção na Sailthru

Page 4: DevDay - MongoDb no mundo real - slides

Sailthru

Comunicação personalizada e plataforma de análisehttps://www.sailthru.com/

Page 5: DevDay - MongoDb no mundo real - slides

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

Page 6: DevDay - MongoDb no mundo real - slides

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

Page 7: DevDay - MongoDb no mundo real - slides

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

Page 8: DevDay - MongoDb no mundo real - slides
Page 9: DevDay - MongoDb 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

Page 10: DevDay - MongoDb no mundo real - slides

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

Page 11: DevDay - MongoDb no mundo real - slides

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

Page 12: DevDay - MongoDb no mundo real - slides

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

Page 13: DevDay - MongoDb no mundo real - slides

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

Page 14: DevDay - MongoDb no mundo real - slides

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

Page 15: DevDay - MongoDb no mundo real - slides

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

Page 16: DevDay - MongoDb no mundo real - slides

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

Page 17: DevDay - MongoDb no mundo real - slides

mongod

● Nunca finalize com kill -9● Nunca rode sem replicaset● Nunca rode sem log● Use journaling

Page 18: DevDay - MongoDb no mundo real - slides

Referencias

http://www.slideshare.net/ibwhite/mongodb-in-production-at-sailthruhttp://www.slideshare.net/sailthru/two-years