Your SlideShare is downloading. ×
MongoDB @ Foursquare
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

MongoDB @ Foursquare

464
views

Published on

Published in: Technology

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

No Downloads
Views
Total Views
464
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
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