SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Estudo de Caso @ Foursquare
Antônio José
Bruno Furtado
Edywaldo Rhonan
Jorge Anderson
Maurício José
● 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?
● 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
Quem utiliza MongoDB?
● Github
● SourceForce
● MTV
● Grooveshark
● SAP
● New York Times
● Forbes
● bit.ly
● Viber
● CartolaFC
Estudo de Caso
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.
Alguns Números
Junho de 2011
● > 9,000,000 pessoas
● > 750,000,000 checkins
● > 20,000,000 lugares
● > 20,000,000 pessoas
● > 2,000,000,000 checkins
● > 30,000,000 lugares
Maio de 2012
● > 25,000,000 pessoas
● > 3,000,000,000 checkins
● > 40,000,000 lugares
Dezembro de 2012
Infraestrutura
PHP + MySQL @ VPS
Como era antes
Janeiro/2008 ~ Setembro/2009
PHP + MySQL @ VPS (Slicehost)
Setembro/2009 ~ Janeiro/2010
Scala + PostgreSQL @ EC2 (Amazon)
Scala + MongoDB @ Foursquare (datacenter
próprio)
Como é agora
Histórico de mudanças
Janeiro/2010 ~ Março/2010
● Troca do banco para Mongo. Somente
tabelas inicialmente.
● Em abril troca total.
Março/2010 ~ Setembro/2011
Transição completa dos dados.
Junho/2012~Setembro/2012
Datacenter próprio.
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
● Auto-Sharding
● Balanceamento
● Escalabilidade
● Alto tráfego
● Funcionalidades de Geolocalização
● Modelo de dados simplificado
Por que mudaram?
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.
Como é agora (EC2)
● 10 clusters = 7 sharded + 3 non-sharded
● 3 ~ 4 nós de replicação por shard
● + 200 nós de replicas
Duvidas?
● 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

Weitere ähnliche Inhalte

Ähnlich wie MongoDB @ Foursquare

DevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesDevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesSuissa
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...tdc-globalcode
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAnitaibezerra
 
Nao perca tempo com bancos de dados relacionais, use mongo db
Nao perca tempo com bancos de dados relacionais,   use mongo dbNao perca tempo com bancos de dados relacionais,   use mongo db
Nao perca tempo com bancos de dados relacionais, use mongo dbFernando Boaglio
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosAmbiente Livre
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014Fernando Boaglio
 
MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJavaFernando Boaglio
 
MongoDB com Java - GUOB 2018
MongoDB com Java  - GUOB  2018MongoDB com Java  - GUOB  2018
MongoDB com Java - GUOB 2018Fernando Boaglio
 
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmicaPepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmicaFATEC São José dos Campos
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDatatdc-globalcode
 
Desenvolvimento de WebServices RESTful com NodeJS e MongoDB
Desenvolvimento de WebServices RESTful com NodeJS e MongoDBDesenvolvimento de WebServices RESTful com NodeJS e MongoDB
Desenvolvimento de WebServices RESTful com NodeJS e MongoDBWebSix
 
Projeto Android Your Heroes que Utiliza a API Marvel
Projeto Android Your Heroes que Utiliza a API MarvelProjeto Android Your Heroes que Utiliza a API Marvel
Projeto Android Your Heroes que Utiliza a API MarvelEloi Júnior
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Secot banco de dados no sql de código aberto
Secot   banco de dados no sql de código abertoSecot   banco de dados no sql de código aberto
Secot banco de dados no sql de código abertoSuissa
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 
Banco de dados no Android com Couchbase Lite
Banco de dados no Android com Couchbase LiteBanco de dados no Android com Couchbase Lite
Banco de dados no Android com Couchbase LiteFernando Camargo
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANOsmar Petry
 

Ähnlich wie MongoDB @ Foursquare (20)

DevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesDevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slides
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
 
Nao perca tempo com bancos de dados relacionais, use mongo db
Nao perca tempo com bancos de dados relacionais,   use mongo dbNao perca tempo com bancos de dados relacionais,   use mongo db
Nao perca tempo com bancos de dados relacionais, use mongo db
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014
 
MongoDB com Java - SouJava
MongoDB com Java - SouJavaMongoDB com Java - SouJava
MongoDB com Java - SouJava
 
MongoDB com Java - GUOB 2018
MongoDB com Java  - GUOB  2018MongoDB com Java  - GUOB  2018
MongoDB com Java - GUOB 2018
 
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmicaPepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
Desenvolvimento de WebServices RESTful com NodeJS e MongoDB
Desenvolvimento de WebServices RESTful com NodeJS e MongoDBDesenvolvimento de WebServices RESTful com NodeJS e MongoDB
Desenvolvimento de WebServices RESTful com NodeJS e MongoDB
 
Projeto Android Your Heroes que Utiliza a API Marvel
Projeto Android Your Heroes que Utiliza a API MarvelProjeto Android Your Heroes que Utiliza a API Marvel
Projeto Android Your Heroes que Utiliza a API Marvel
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Secot banco de dados no sql de código aberto
Secot   banco de dados no sql de código abertoSecot   banco de dados no sql de código aberto
Secot banco de dados no sql de código aberto
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Nosql4java
Nosql4javaNosql4java
Nosql4java
 
Banco de dados no Android com Couchbase Lite
Banco de dados no Android com Couchbase LiteBanco de dados no Android com Couchbase Lite
Banco de dados no Android com Couchbase Lite
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEAN
 

MongoDB @ Foursquare

  • 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.
  • 5. Quem utiliza MongoDB? ● Github ● SourceForce ● MTV ● Grooveshark ● SAP ● New York Times ● Forbes ● bit.ly ● Viber ● CartolaFC
  • 7. 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.
  • 9. Junho de 2011 ● > 9,000,000 pessoas ● > 750,000,000 checkins ● > 20,000,000 lugares
  • 10. ● > 20,000,000 pessoas ● > 2,000,000,000 checkins ● > 30,000,000 lugares Maio de 2012
  • 11. ● > 25,000,000 pessoas ● > 3,000,000,000 checkins ● > 40,000,000 lugares Dezembro de 2012
  • 13. PHP + MySQL @ VPS Como era antes
  • 14. Janeiro/2008 ~ Setembro/2009 PHP + MySQL @ VPS (Slicehost)
  • 15. Setembro/2009 ~ Janeiro/2010 Scala + PostgreSQL @ EC2 (Amazon)
  • 16. Scala + MongoDB @ Foursquare (datacenter próprio) Como é agora
  • 18. Janeiro/2010 ~ Março/2010 ● Troca do banco para Mongo. Somente tabelas inicialmente. ● Em abril troca total.
  • 21. 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
  • 22. ● Auto-Sharding ● Balanceamento ● Escalabilidade ● Alto tráfego ● Funcionalidades de Geolocalização ● Modelo de dados simplificado Por que mudaram?
  • 23. 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.
  • 24. Como é agora (EC2) ● 10 clusters = 7 sharded + 3 non-sharded ● 3 ~ 4 nós de replicação por shard ● + 200 nós de replicas
  • 25.
  • 27. ● 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