MongoDB - Performance e Escalabilidade para aplicações web

17
MongoDB Escalabilidade e Performance para desenvolvimento Web Rafael Nunes

description

Apresentação no TDC 2013 sobre MongoDB e seu uso em aplicações web

Transcript of MongoDB - Performance e Escalabilidade para aplicações web

Page 1: MongoDB - Performance e Escalabilidade para aplicações web

MongoDBEscalabilidade e Performance para

desenvolvimento WebRafael Nunes

Page 2: MongoDB - Performance e Escalabilidade para aplicações web

Rafael Nunes Sócio da YaW Tecnologia

Software Engineer at Catchafire.org(Join Us!!)

Instrutor da Globalcode

Page 3: MongoDB - Performance e Escalabilidade para aplicações web

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)

Page 4: MongoDB - Performance e Escalabilidade para aplicações web

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

Page 5: MongoDB - Performance e Escalabilidade para aplicações web

Modelo RelacionalDesvantagens:

O modelo de dados precisa sempre estar descrito

Cada elemento da entidade, tem um tipo específico(INT, VARCHAR)

Silver Bullet

Page 6: MongoDB - Performance e Escalabilidade para aplicações web

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

Page 7: MongoDB - Performance e Escalabilidade para aplicações web

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

Page 8: MongoDB - Performance e Escalabilidade para aplicações web

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

Page 9: MongoDB - Performance e Escalabilidade para aplicações web

Cases Foursquare

Craiglist

SAP PaaS

Code Academy

Bit.ly

Page 10: MongoDB - Performance e Escalabilidade para aplicações web

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

Page 11: MongoDB - Performance e Escalabilidade para aplicações web

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

Page 12: MongoDB - Performance e Escalabilidade para aplicações web

Escalabilidade Replicação

Leitura e Escrita em instâncias diferentes

Sharding

Backup Incremental

Page 13: MongoDB - Performance e Escalabilidade para aplicações web

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

Page 14: MongoDB - Performance e Escalabilidade para aplicações web

Mais sobre replicação Inicializar com ‘—replSet name’

rs.initiate()

rs.add – para adicionar membros

Page 15: MongoDB - Performance e Escalabilidade para aplicações web

Monitoramento Serviço de monitoramento

Coleta dados das réplicas/instâncias e disponibiliza um console de acesso

Page 16: MongoDB - Performance e Escalabilidade para aplicações web

Sharding Sharding automático

Réplica das collections basead na Shard key

Leitura transparente utilizando Shard Keys