SlideShare uma empresa Scribd logo
1 de 17
MongoDB
Escalabilidade e Performance para
desenvolvimento Web
Rafael Nunes
Rafael Nunes
 Sócio da YaW Tecnologia
 Software Engineer at Catchafire.org
(Join Us!!)
 Instrutor da Globalcode
Catchafire
 Professional Volunteer
 Tons of Nonprofits and Projects
 A cause that you support, or any professional help
you can give
 Can be done completely online(most of them are)
Modelo Relacional
 Foi o primeiro modelo de dados descrito
teoriamente(Edgar Frank, 1970)
 O modelo todo se baseia em entidades e relações
 Tuplas com características pré-definidas
 Linguagem padrão
 Como costumávamos iniciar uma aplicação
Modelo Relacional
Desvantagens:
 O modelo de dados precisa sempre estar descrito
 Cada elemento da entidade, tem um tipo
específico(INT, VARCHAR)
 Silver Bullet
NoSQL
 Alternativas ao modelos relacional:
Documento, Grapho, Chave/Valor, Wide Column
 MongoDB, Neo4J, Redis, Cassandra
 Conhecer como se comporta a sua aplicação, para
escolher o que mais se adapta a ela
MongoDB
 Banco de dados orientado a documentos
 Baseado em objetos BSON/JSON
 Um ‘Documento’ representa um objeto(Java,
Python, C#)
 Documentos agregados ou arrays reduzem a
necessidade de ‘join’
 Schema dinâmico
MongoDB
 High Performance em escritas e leituras
 Alta disponibilidade através de servidores
replicados
 Escalabilidade ‘built-in’:
 Sharding automático em coleções distribuidas
 Instâncias de escrita e leitura das réplicas
Cases
 Foursquare
 Craiglist
 SAP PaaS
 Code Academy
 Bit.ly
Mais sobre MongoDB
 Uma instância do Mongo é composta de
‘databases’ e ‘collections’.
 Armazena objetos JSON/BSON
 Schema dinâmico para cada elemento da collection
 Cliente de acesso em quase todas plataformas
modernas: Java/Python/.NET/Ruby/Go/Scala/etc
Operações no
MongoDB
 db.my_collection.find/findOne
 find({‘attr’:’value’,
‘other_obj’:{
‘other_attr’: ‘other_value’
}
})
 db.my_collection.insert(json_object)
 Update/save/findAndModify/remove
Escalabilidade
 Replicação
 Leitura e Escrita em instâncias diferentes
 Sharding
 Backup Incremental
Replicação
 Modelo baseado em réplica sets
 Como funciona:
 Um cluster(3-12) de instâncias
 Replicação automática para garantir o ‘failover’
 Instâncias designadas como primária/secundária
 Configuração das intâncias para definir prioridades
Mais sobre replicação
 Inicializar com ‘—replSet name’
 rs.initiate()
 rs.add – para adicionar membros
Monitoramento
 Serviço de monitoramento
 Coleta dados das réplicas/instâncias e disponibiliza
um console de acesso
Sharding
 Sharding automático
 Réplica das collections basead na Shard key
 Leitura transparente utilizando Shard Keys
Obrigado
www.yaw.com.br
www.catchafire.org
rafael@yaw.com.br
twitter.com/rafanunes

Mais conteúdo relacionado

Semelhante a MongoDB Performance e Escalabilidade

Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
Bancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsBancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsdcarneir
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
Fluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsFluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsAndré Agostinho
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBElaine Naomi
 

Semelhante a MongoDB Performance e Escalabilidade (20)

Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Aula1
Aula1Aula1
Aula1
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Bancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsBancos de dados No-SQL e afins
Bancos de dados No-SQL e afins
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
 
Jsp+Jdbc+Servlets
Jsp+Jdbc+ServletsJsp+Jdbc+Servlets
Jsp+Jdbc+Servlets
 
teste86940.78038637294
teste86940.78038637294teste86940.78038637294
teste86940.78038637294
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Fluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsFluent NHibernate - Baby Steps
Fluent NHibernate - Baby Steps
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 

Mais de Rafael Nunes

Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEERafael Nunes
 
Amazon WebServices Architectur
Amazon WebServices ArchitecturAmazon WebServices Architectur
Amazon WebServices ArchitecturRafael Nunes
 
Linguagens Dinâmicas na JVM
Linguagens Dinâmicas na JVMLinguagens Dinâmicas na JVM
Linguagens Dinâmicas na JVMRafael Nunes
 
Introdução ao Jython
Introdução ao JythonIntrodução ao Jython
Introdução ao JythonRafael Nunes
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWSRafael Nunes
 
Introdução ao Google AppEngine
Introdução ao Google AppEngineIntrodução ao Google AppEngine
Introdução ao Google AppEngineRafael Nunes
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoRafael Nunes
 
JSF 2.0 + Google AppEngine
JSF 2.0 + Google AppEngineJSF 2.0 + Google AppEngine
JSF 2.0 + Google AppEngineRafael Nunes
 
Introdução ao Adobe Flex
Introdução ao Adobe FlexIntrodução ao Adobe Flex
Introdução ao Adobe FlexRafael Nunes
 
JEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiJEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiRafael Nunes
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web ServicesRafael Nunes
 

Mais de Rafael Nunes (14)

REST and JEE
REST and JEEREST and JEE
REST and JEE
 
Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEE
 
Amazon WebServices Architectur
Amazon WebServices ArchitecturAmazon WebServices Architectur
Amazon WebServices Architectur
 
Linguagens Dinâmicas na JVM
Linguagens Dinâmicas na JVMLinguagens Dinâmicas na JVM
Linguagens Dinâmicas na JVM
 
Introdução ao Jython
Introdução ao JythonIntrodução ao Jython
Introdução ao Jython
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWS
 
Django no AWS
Django no AWSDjango no AWS
Django no AWS
 
Introdução ao Google AppEngine
Introdução ao Google AppEngineIntrodução ao Google AppEngine
Introdução ao Google AppEngine
 
Jsf2 gae
Jsf2 gaeJsf2 gae
Jsf2 gae
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJango
 
JSF 2.0 + Google AppEngine
JSF 2.0 + Google AppEngineJSF 2.0 + Google AppEngine
JSF 2.0 + Google AppEngine
 
Introdução ao Adobe Flex
Introdução ao Adobe FlexIntrodução ao Adobe Flex
Introdução ao Adobe Flex
 
JEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiJEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por ai
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 

MongoDB Performance e Escalabilidade