Transcript
Page 1: Modelando aplicação em documento - MongoDB

Modelando aplicação em documento

Page 3: Modelando aplicação em documento - MongoDB
Page 4: Modelando aplicação em documento - MongoDB

O que é MongoDB?

•Banco de dados não relacional;

•Orientado a documentos;

•Alta Performance;

•Escalavel;

•Schema Aberto

•Open Source

Page 5: Modelando aplicação em documento - MongoDB

Quem utiliza?•Github;

•Foursquare;

•bit.ly;

•Zynga;

•T Dispatch;

•Apontador;

•Globo.com;

•Entre outros...

Page 6: Modelando aplicação em documento - MongoDB

Onde usar?

•web 2.0

•Migrations

•Flexibilidade

•Cache

Page 7: Modelando aplicação em documento - MongoDB

Drivers•C, C++

•Erlang

•Java

•JavaScript

•Python

•Ruby

• Relação completa em: http://www.mongodb.org/display/DOCS/Drivers

Page 8: Modelando aplicação em documento - MongoDB

Modelo de documento

{‘nome’: ‘Thiago Avelino’,‘empresa’: ‘Mochii’,‘pais’: ‘Londres’}

Page 9: Modelando aplicação em documento - MongoDB

Modelo de documento{‘nome’: ‘Thiago Avelino’,‘empresa’: ‘Mochii’,‘pais’: ‘Londres’}

Sim é um JSON.Fácil de trabalhar com esse modelo de dados na maioria das linguagens

de programação

Page 10: Modelando aplicação em documento - MongoDB

MigrationsÉ possóvel fazer mudança dinamica em um

documento

Page 11: Modelando aplicação em documento - MongoDB

Migrations

{‘nome’: ‘Thiago Avelino’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}

É possóvel fazer mudança dinamica em um documento

Page 12: Modelando aplicação em documento - MongoDB

Migrations

{‘nome’: ‘Thiago Avelino’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}

É possóvel fazer mudança dinamica em um documento

Page 13: Modelando aplicação em documento - MongoDB

Migrations

{‘nome’: ‘Thiago Avelino’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}

É possóvel fazer mudança dinamica em um documento

{‘nome’: ‘Thiago Avelino’,‘cargo’: ‘engenheiro de software’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}

Page 14: Modelando aplicação em documento - MongoDB

Migrations

{‘nome’: ‘Thiago Avelino’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}

É possóvel fazer mudança dinamica em um documento

{‘nome’: ‘Thiago Avelino’,‘cargo’: ‘engenheiro de software’,‘empresa’: ‘Mochii’,‘local’: ‘Londres’}

Adicionado mais um campo sem mexer em modelagem

Page 15: Modelando aplicação em documento - MongoDB

Agregadoresdb.cadastro.insert({‘local’: ‘Berlin’})db.cadastro.insert({‘local’: ‘Londres’})db.cadastro.insert({‘local’: ‘Brasil’})db.cadastro.insert({‘local’: ‘Berlin’})

Page 16: Modelando aplicação em documento - MongoDB

Agregadoresdb.cadastro.insert({‘local’: ‘Berlin’})db.cadastro.insert({‘local’: ‘Londres’})db.cadastro.insert({‘local’: ‘Brasil’})db.cadastro.insert({‘local’: ‘Berlin’})

db.cadastro.distinct(‘local’)

Page 17: Modelando aplicação em documento - MongoDB

Agregadoresdb.cadastro.insert({‘local’: ‘Berlin’})db.cadastro.insert({‘local’: ‘Londres’})db.cadastro.insert({‘local’: ‘Brasil’})db.cadastro.insert({‘local’: ‘Berlin’})

db.cadastro.distinct(‘local’)

Page 18: Modelando aplicação em documento - MongoDB

Agregadoresdb.cadastro.insert({‘local’: ‘Berlin’})db.cadastro.insert({‘local’: ‘Londres’})db.cadastro.insert({‘local’: ‘Brasil’})db.cadastro.insert({‘local’: ‘Berlin’})

db.cadastro.distinct(‘local’)

[‘Berlin’, ‘Londres’, ‘Brasil’]

Page 19: Modelando aplicação em documento - MongoDB

Map/Reduce

Utilizado para criar funções dentro do MongoDB

Escrito em JavaScript

Page 20: Modelando aplicação em documento - MongoDB

Map/ReduceExemplo

[_id, nome]Salas =

[_id, sala_id, data]

Reservas =

Descobrir o numero da reserva

https://gist.github.com/2782117

Page 21: Modelando aplicação em documento - MongoDB

map = function () { emit(this.sala_id, [1]);}

reduce = function (sala, values) { var sum = 0; if (values) { for (var i = 0; i < values.length; i++) { sum += 1; } } return sum;}

Page 22: Modelando aplicação em documento - MongoDB

Map/ReduceExemplo

db.reservas.mapReduce(map, reduce, {"out": "resultado"})

db.resultado.find({}){ "_id": ObjectId("4fbd6e69700f6e1266000002"),"value": 1}{ "_id": ObjectId("4fbd6e69700f6e1266000004"),"value": 2}

Page 23: Modelando aplicação em documento - MongoDB

Índice

O Conceito é similar a bancos relacionais, exemplo MySQL

db.colecao.ensureIndex({nome: 1})

db.colecao.ensureIndex({‘endereco.cep’: 1})

Page 24: Modelando aplicação em documento - MongoDB

Índice

db.colecao.getIndex()

Lista dos os índice criado:

Page 25: Modelando aplicação em documento - MongoDB

ÍndiceÍndice unico

db.colecao.ensureIndex({nome: 1, sobrenome: 1}, unique: true});

db.colecao.insert({nome:'jane',sobrenome:'doe'}); // okdb.colecao.insert({nome:'jane',sobrenome:'doe'}); // dup key errordb.colecao.insert({nome:'jane',sobrenome:'smith'}); // ok

Page 26: Modelando aplicação em documento - MongoDB

GridFS

Armazenamento de arquivos binários dentro do MongoDB (Até 4MB)

Maior controle de permissão de acesso;

http://www.mongodb.org/display/DOCS/GridFS

Page 27: Modelando aplicação em documento - MongoDB

GridFS

Armazenamento de arquivos binários dentro do MongoDB (Até 4MB)

Maior controle de permissão de acesso;

http://www.mongodb.org/display/DOCS/GridFS

Page 28: Modelando aplicação em documento - MongoDB

GridFS

HTTPHTTP

File system

File system

Aplicação

Aplicação

Page 29: Modelando aplicação em documento - MongoDB

GridFS

HTTPHTTP

Aplicação

Aplicação

HTTPHTTP

Aplicação

Aplicação

GridFSGridFS

Page 30: Modelando aplicação em documento - MongoDB

Replica Sets

Node #1

Node #1Node #2

Node #2

Aplicação

Aplicação

Replica Sets

Replica Sets

Page 31: Modelando aplicação em documento - MongoDB

Replica Sets

Node #1

Node #1Node #2

Node #2

Aplicação

Aplicação

Replica Sets

Replica Sets

Node #3

Node #3

Page 32: Modelando aplicação em documento - MongoDB

Replica Sets

Node #1

Node #1Node #2

Node #2

Aplicação

Aplicação

Replica Sets

Replica Sets

Node #3

Node #3

Page 33: Modelando aplicação em documento - MongoDB

Sharding

Node #1

Node #1

Node #2

Node #2

Node #3

Node #3

a-da-d e-te-t u-zu-z

Page 34: Modelando aplicação em documento - MongoDB

Modelar aplicação

Page 35: Modelando aplicação em documento - MongoDB

Casos práticos

Quase tudo no mesmo documento

Page 36: Modelando aplicação em documento - MongoDB

Casos práticos

Quase tudo no mesmo documento

4MB

Page 37: Modelando aplicação em documento - MongoDB

Casos práticos

Dividindo aplicação em Collections

Não é fácil controlar muitas ObjID

Page 38: Modelando aplicação em documento - MongoDB

Casos práticos

Como estamos hoje?

Page 39: Modelando aplicação em documento - MongoDB

Cloud

Page 40: Modelando aplicação em documento - MongoDB

Cloud

Page 41: Modelando aplicação em documento - MongoDB

Suporte Comercial

http://www.10gen.com/support

Marcello Baquero - [email protected]

Page 42: Modelando aplicação em documento - MongoDB

Obrigado!Perguntas?

Thiago Avelino@avelino0

www.avelino.usthiagoavelinoster@gma

il.com


Top Related