MongoDB outras alternativas de persistência

28
Explore outras alternativas de persistência Eder Magalhães @edermag

description

Palestra introduz o MongoDB como uma alternativa de persistência, em sistemas de grande escala e baixo custo.

Transcript of MongoDB outras alternativas de persistência

Page 1: MongoDB outras alternativas de persistência

Explore  outras  alternativas  de  persistência  

Eder  Magalhães  

@edermag  

Page 2: MongoDB outras alternativas de persistência

Agenda  

ü  Um  visão  sobre  banco  de  dados  relacional;  

ü  Demanda  por  um  novos  modelos  de  persistência;  

ü  Introdução  e  caracterís@cas  do  MongoDB;  

ü  JavaScript,  a  linguagem  essencial;  

ü  O  Documento;  

ü  CRUD  em  Mongo  vs  SQL;  

ü  Demos;  

Page 3: MongoDB outras alternativas de persistência

Banco  de  dados  relacional  

ü  +30  anos;  

ü  Consolidada  no  mercado;  

ü  Um  modelo  que  atendeu  a  demanda  coorpora@va;  

ü  Empresas  e  muitas  tecnologias  de  sucesso,  baseado  nesse  modelo  de  desenvolvimento;  

Page 4: MongoDB outras alternativas de persistência

Alguns  pontos  

ü  Escalabilidade;  

ü  Alto  custo:  equipamento  e  licenças;  

ü  Flexibilidade  em  relação  a  mudanças;  

Page 5: MongoDB outras alternativas de persistência

NoSQL,  outro  conceito  

ü  Sigla:  Not  Only  SQL  

ü  Proposta  que  difere  do  modelo  relacional;  

ü  Não  adota  a  linguagem  SQL;  

ü  Foco  em  escabilidade  –  demanda  da  web;  

ü  Aderente  a  cloud  compu@ng;  

Page 6: MongoDB outras alternativas de persistência

O  MongoDB  

ü  Tecnologia  free,  open  source;  

ü  Orientado  a  Documentos;  

ü  Flexível  schemaless;  

ü  Implementado  em  C++;  

ü  API  alto  nível  em  diversas  linguagens;  

ü  Suporte  a  dados  binários:  fotos  e  vídeos;  

ü  Voltado  para  replicação  /  dados  distribuídos;  

Page 7: MongoDB outras alternativas de persistência

Funcionalidade  vs  performance  

Page 8: MongoDB outras alternativas de persistência

JavaScript,  papel  essencial  

ü  A  linguagem  usada  pelo  terminal  do  MongoDB  para  manipular  os  dados;  

ü  Presente  no  desenvolvimento  web:  ü  Front-­‐end;  ü  Back-­‐end  (server);  

ü  É  a  linguagem  “na@va”  do  MongoDB;  

Page 9: MongoDB outras alternativas de persistência

JSON  

ü  A  manipulação  dos  dados  ocorre  via  JSON;  

ü  Formato  simples  e  popular  de  manipulação  de  dados;  

ü  Estrutura:  ü  Arrays:  [ "maça", "pera", "abacate" ] ü  Dic@onary:     { placa: "EEE-0001", renavam: "1231…"}

ü  Tipos  de  valores:  string,  number,  object,  array,  true,  false  e  null;  

ü  hcp://www.json.org  

Page 10: MongoDB outras alternativas de persistência

Shell  

ü  Ambiente/interpretador  JavaScript;  

ü  Simples  e  alto  nível;  

ü  Vamos  experimentar!  

Page 11: MongoDB outras alternativas de persistência

Similaridades  

MongoDB   Banco  Relacional  Database   Database  Coleção   Tabela  Documento   Registro  Chave  primária   Chave  primária  

Page 12: MongoDB outras alternativas de persistência

MongoDB  Schema  Design  

ü  Applica@on  Driven  schema;  

ü  Rich  documents:  arrays  e  objetos  aninhados;  

ü  Schemaless;  

ü  Não  se  preocupe  com  normalização;  

Page 13: MongoDB outras alternativas de persistência

Modelo  versão  relacional  

Page 14: MongoDB outras alternativas de persistência

Modelo  versão  MongoDB  { "placa": "EXZ-0112", "marca": "Jetta", "modelo": "2.0 TSI", "fabricante": "Volkswagen", "cor": "Branco", "ano": { "fabricacao": 2011, "modelo": 2012 }, "opcionais": ["airbag", "teto solar", "ar", "abs" ... ], "proprietarios": [ { "nome": "Pedro Silva", "cpf": "222" } ], "restricoes": { "financeiras": ["Banco Stander"], "multas": ["Velocidade", "Rodizio"] } }

Page 15: MongoDB outras alternativas de persistência

+  Detalhes  sobre  o  MongoDB  

ü  O  MongoDB  não  trabalha  com  chaves  estrangeiras;  

ü  O  MongoDB  não  tem  suporte  a  controle  transacional;  

ü  Toda  operação  que  manipula  dados  é  atômica;  

Page 16: MongoDB outras alternativas de persistência

CRUD  -­‐  Create  

ü  Demonstração  de  insert;  

//MongoDB db.estudantes.insert( { nome: 'Jose da Silva', curso: 'Ciências da Computação', universidade: 'USCS', matricula: '010' } );

//SQL insert into estudantes(nome, curso, universidade, matricula) values('Jose da Silva', 'Ciências da computação', 'USCS', '010' );

Page 17: MongoDB outras alternativas de persistência

CRUD  -­‐  Update  

ü  Demonstração  de  update;  

//MongoDB db.estudantes.update( { nome: 'Jose da Silva' }, { $set: { nome: 'Jose da Silva Souza' } } );

//SQL update estudantes set nome = 'Jose da Silva Souza' where nome = 'Jose da Silva';

Page 18: MongoDB outras alternativas de persistência

CRUD  -­‐  Delete  

ü  Demonstração  de  delete;  

//MongoDB db.estudantes.delete( { matricula: '200' } );

//SQL delete from estudantes where matricula = '200';

Page 19: MongoDB outras alternativas de persistência

CRUD  -­‐  Query  

ü  Demonstração  de  consultas;  

//MongoDB db.estudantes.find({ curso: 'Arquitetura' }, { nome: 1 });

//SQL select nome from estudantes where curso = 'Arquitetura';

Page 20: MongoDB outras alternativas de persistência

CRUD  -­‐  Aggrega@on  

ü  Demonstração  de  consultas  agregadas;  

//MongoDB db.estudantes.aggregate( { $group: { _id: '$curso', total: { $sum: 1 } } });

//SQL select curso, count(id) from estudantes group by curso;

Page 21: MongoDB outras alternativas de persistência

+  Consultas  

ü  Demonstração  de  consultas  avançadas  com  grande  volume  de  dados  (base  de  email);  

Page 22: MongoDB outras alternativas de persistência

Drivers  

ü  Linguagens  c/  driver  do  MongoDB:  ü  Java  ü  Python  ü  C++  /  C#  ü  Node.js  ü  Erlang  ü  Ruby  ü  Scala  ü  Perl  ü  PHP  …  

Page 23: MongoDB outras alternativas de persistência

Demo  em  Java  

ü  Projeto  exemplo  demonstrando  como  trabalhar  com  o  MongoDB  em  Java;  

ü  Tecnologias  u@lizadas:  ü  MongoDB  Driver  para  Java;  ü  Spark  microcontainer;  ü  Freemaker;  ü  Maven;  ü  Bootstrap;  

Page 24: MongoDB outras alternativas de persistência

Outras  funcionalidades  

ü  ReplicaSet;  

ü  Sharding;  

ü  GridFS;  

ü  MapReduce;  

Page 25: MongoDB outras alternativas de persistência

Mais  opções  NoSQL?  

ü  Cassandra;  

ü  CouchDB;  

ü  Redis;  

ü  Cloudera;  

ü  Veja  outros  no  sie:  hcp://nosql-­‐database.org/  

 

Page 26: MongoDB outras alternativas de persistência

Links  

ü  hcp://www.mongodb.org/  

ü  hcp://docs.mongodb.org/manual/  

ü  hcps://[email protected]/  

ü  Os  comandos  u@lizados  nessa  palestra  foram  disponibilizados  junto  com  o  projeto  demo,  na  url:  

ü  hcps://github.com/edermag/mongodb-­‐javaweb  

Page 27: MongoDB outras alternativas de persistência

Vídeo  aulas  /  projetos  exemplo  

ü  hcp://www.yaw.com.br/screencast  

ü  hcp://www.yaw.com.br/open/projetos/  

Page 28: MongoDB outras alternativas de persistência

Obrigado!  

ü  [email protected]  

ü  hcps://twicer.com/edermag  

ü  hcp://github.com/edermag  

ü  hcp://edermag.blogspot.com.br/  

ü  hcps://bitbucket.org/edermag/