MongoDB - Performance e Escalabilidade para aplicações web
-
Upload
rafael-nunes -
Category
Technology
-
view
587 -
download
1
description
Transcript of MongoDB - Performance e Escalabilidade para aplicações web
MongoDBEscalabilidade e Performance para
desenvolvimento WebRafael 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 RelacionalDesvantagens:
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
Obrigadowww.yaw.com.br
www.catchafire.org
twitter.com/rafanunes