Mongo db no mundo real slides

2,028 views

Published on

Palestra dada no TDC na trilha de NoSQL

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,028
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
27
Comments
0
Likes
3
Embeds 0
No embeds

No notes for 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

×