MongoDB @ Foursquare
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
783
On Slideshare
783
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
5
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Estudo de Caso @ Foursquare Antônio José Bruno Furtado Edywaldo Rhonan Jorge Anderson Maurício José
  • 2. ● Not only SQL ● Sem esquema pré-definido ● Características: ○ Escalabilidade ○ Performance ○ Agilidade ○ Complexidade ● Tipos: ○ Orientado a Documentos ○ Chave-Valor ○ BigTable ○ Orientado a Grafos O que é o NoSQL?
  • 3. ● Banco de Dados Orientado a Documentos ● Replicação e Alta Disponibilidade ● Auto-Sharding ● Desenvolvido pela 10gen ● Dados estruturados em JSON/BSON ● GridFS ● Map-Reduce ● Aloca os dados de forma sequencial no disco ○ Torna a busca mais veloz MongoDB
  • 4. Quem utiliza MongoDB? ● Github ● SourceForce ● MTV ● Grooveshark ● SAP ● New York Times ● Forbes ● bit.ly ● Viber ● CartolaFC
  • 5. Estudo de Caso
  • 6. O que é? Foursquare é uma rede social baseada na localização do usuário que permite que ele faça "check-in" utilizando dispositivos móveis para ganhar pontos e recompensas.
  • 7. Alguns Números
  • 8. Junho de 2011 ● > 9,000,000 pessoas ● > 750,000,000 checkins ● > 20,000,000 lugares
  • 9. ● > 20,000,000 pessoas ● > 2,000,000,000 checkins ● > 30,000,000 lugares Maio de 2012
  • 10. ● > 25,000,000 pessoas ● > 3,000,000,000 checkins ● > 40,000,000 lugares Dezembro de 2012
  • 11. Infraestrutura
  • 12. PHP + MySQL @ VPS Como era antes
  • 13. Janeiro/2008 ~ Setembro/2009 PHP + MySQL @ VPS (Slicehost)
  • 14. Setembro/2009 ~ Janeiro/2010 Scala + PostgreSQL @ EC2 (Amazon)
  • 15. Scala + MongoDB @ Foursquare (datacenter próprio) Como é agora
  • 16. Histórico de mudanças
  • 17. Janeiro/2010 ~ Março/2010 ● Troca do banco para Mongo. Somente tabelas inicialmente. ● Em abril troca total.
  • 18. Março/2010 ~ Setembro/2011 Transição completa dos dados.
  • 19. Junho/2012~Setembro/2012 Datacenter próprio.
  • 20. Passo a passo da migração ● Modificar o aplicativo para escrever em ambos os bancos de dados ● Backfill data (Preencher todo o histórico de dados no Mongo, com dados vindos do Postgres) ● Modificar aplicativo para ler do Mongo ● Parar de escrever para SQL, uma vez que temos certeza que todos os dados estão sendo escritos corretamente para o Mongo
  • 21. ● Auto-Sharding ● Balanceamento ● Escalabilidade ● Alto tráfego ● Funcionalidades de Geolocalização ● Modelo de dados simplificado Por que mudaram?
  • 22. Como era antes? ● Inicialmente: PostgreSQL com apenas uma database. ● Dados cresceram rapidamente. ● Dados foram divididos em dois nós: Um para checkins e outro para o resto.
  • 23. Como é agora (EC2) ● 10 clusters = 7 sharded + 3 non-sharded ● 3 ~ 4 nós de replicação por shard ● + 200 nós de replicas
  • 24. Duvidas?
  • 25. ● http://blog.10gen.com/post/15400944604/mongodb-case-study-foursquare ● http://www.10gen.com/customers/foursquare ● http://www.10gen.com/presentations/mongonyc-2011/foursquare ● http://www.10gen.com/presentations/mongonyc-2012-scaling-mongodb-foursquare ● http://www.10gen.com/presentations/mongodb-foursquare-cloud-bare-metal ● https://docs.google.com/presentation/d/1HyWT_zmP-lEAy- 3_eP3KfN6_ql6YeMXxjIIszop9zo8/edit#slide=id.i0 ● http://pt.scribd.com/doc/97692109/Hadoop-Foursquare ● https://moodle2.quixada.ufc.br/pluginfile. php/793/mod_resource/content/2/04_NoSQL_ModelosDistribuicao.pdf ● https://moodle2.quixada.ufc.br/pluginfile. php/779/mod_resource/content/1/04_NoSQL_Introducao.pdf ● http://www.slideshare.net/RodrigoDeSouzaValerio/bancos-de-dados-nosql-not-only-sql ● http://www.youtube.com/watch?v=Ff4_DNKKPeo ● https://docs.google.com/presentation/d/1E29UreMb9su- pfC5ZROMHCIIUsQFsK_QMWEHKtXIdoU/present#slide=id.i0 Referências