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

MongoDB - Performance e Escalabilidade para aplicações web