Mongo db no mundo real slides

2.016 visualizações

Publicada em

Palestra dada no TDC na trilha de NoSQL

0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.016
No SlideShare
0
A partir de incorporações
0
Número de incorporações
18
Ações
Compartilhamentos
0
Downloads
27
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Mongo db no mundo real slides

  1. 1. MongoDB no mundo real Jean Carlo Nascimento aka Suissa
  2. 2. Links nosqlbr.com.br jquerybrasil.org frontendbrasil.com.br javascriptbrasil.com.br comoprogramarphp.com.br github.com/suissa about.me/suissa @osuissa
  3. 3. Caso de UsoMongoDB em produção na Sailthru
  4. 4. SailthruComunicação personalizada e plataforma deanálisehttps://www.sailthru.com/
  5. 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. 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. 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. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. mongod● Nunca finalize com kill -9● Nunca rode sem replicaset● Nunca rode sem log● Use journaling
  17. 17. Referenciashttp://www.slideshare.net/ibwhite/mongodb-in-production-at-sailthruhttp://www.slideshare.net/sailthru/two-years

×