Explore	
  outras	
  alternativas	
  de	
  persistência	
  

Eder	
  Magalhães	
  
@edermag	
  
Agenda	
  
ü  Um	
  visão	
  sobre	
  banco	
  de	
  dados	
  relacional;	
  
ü  Demanda	
  por	
  um	
  novos	
  modelo...
Banco	
  de	
  dados	
  relacional	
  
ü  +30	
  anos;	
  
ü  Consolidada	
  no	
  mercado;	
  
ü  Um	
  modelo	
  que	...
Alguns	
  pontos	
  
ü  Escalabilidade;	
  
ü  Alto	
  custo:	
  equipamento	
  e	
  licenças;	
  
ü  Flexibilidade	
  ...
NoSQL,	
  outro	
  conceito	
  
ü  Sigla:	
  Not	
  Only	
  SQL	
  
ü  Proposta	
  que	
  difere	
  do	
  modelo	
  rela...
O	
  MongoDB	
  
ü  Tecnologia	
  free,	
  open	
  source;	
  
ü  Orientado	
  a	
  Documentos;	
  
ü  Flexível	
  sche...
Funcionalidade	
  vs	
  performance	
  
JavaScript,	
  papel	
  essencial	
  
ü  A	
  linguagem	
  usada	
  pelo	
  terminal	
  do	
  MongoDB	
  para	
  

manipu...
JSON	
  
ü  A	
  manipulação	
  dos	
  dados	
  ocorre	
  via	
  JSON;	
  
ü  Formato	
  simples	
  e	
  popular	
  de	
...
Shell	
  
ü  Ambiente/interpretador	
  JavaScript;	
  
ü  Simples	
  e	
  alto	
  nível;	
  
ü  Vamos	
  experimentar!	...
Similaridades	
  
MongoDB	
  

Banco	
  Relacional	
  

Database	
  

Database	
  

Coleção	
  

Tabela	
  

Documento	
  ...
MongoDB	
  Schema	
  Design	
  
ü  Applica@on	
  Driven	
  schema;	
  
ü  Rich	
  documents:	
  arrays	
  e	
  objetos	
...
Modelo	
  versão	
  relacional	
  
Modelo	
  versão	
  MongoDB	
  
{
"placa": "EXZ-0112",
"marca": "Jetta",
"modelo": "2.0 TSI",
"fabricante": "Volkswagen",
...
+	
  Detalhes	
  sobre	
  o	
  MongoDB	
  
ü  O	
  MongoDB	
  não	
  trabalha	
  com	
  chaves	
  estrangeiras;	
  
ü  O...
CRUD	
  -­‐	
  Create	
  
ü  Demonstração	
  de	
  insert;	
  
//MongoDB
db.estudantes.insert(
{ nome: 'Jose da Silva', c...
CRUD	
  -­‐	
  Update	
  
ü  Demonstração	
  de	
  update;	
  
//MongoDB
db.estudantes.update( { nome: 'Jose da Silva' },...
CRUD	
  -­‐	
  Delete	
  
ü  Demonstração	
  de	
  delete;	
  
//MongoDB
db.estudantes.delete( { matricula: '200' } );

/...
CRUD	
  -­‐	
  Query	
  
ü  Demonstração	
  de	
  consultas;	
  
//MongoDB
db.estudantes.find({ curso: 'Arquitetura' }, {...
CRUD	
  -­‐	
  Aggrega@on	
  
ü  Demonstração	
  de	
  consultas	
  agregadas;	
  
//MongoDB
db.estudantes.aggregate(
{ $...
+	
  Consultas	
  
ü  Demonstração	
  de	
  consultas	
  avançadas	
  com	
  grande	
  volume	
  

de	
  dados	
  (base	
...
Drivers	
  
ü  Linguagens	
  c/	
  driver	
  do	
  MongoDB:	
  
ü  Java	
  
ü  Python	
  
ü  C++	
  /	
  C#	
  
ü  No...
Demo	
  em	
  Java	
  
ü  Projeto	
  exemplo	
  demonstrando	
  como	
  trabalhar	
  com	
  o	
  

MongoDB	
  em	
  Java;...
Outras	
  funcionalidades	
  
ü  ReplicaSet;	
  
ü  Sharding;	
  
ü  GridFS;	
  
ü  MapReduce;	
  
Mais	
  opções	
  NoSQL?	
  
ü  Cassandra;	
  
ü  CouchDB;	
  
ü  Redis;	
  
ü  Cloudera;	
  
ü  Veja	
  outros	
  no...
Links	
  
ü  hcp://www.mongodb.org/	
  
ü  hcp://docs.mongodb.org/manual/	
  
ü  hcps://educa@on.mongodb.com/	
  

ü  ...
Vídeo	
  aulas	
  /	
  projetos	
  exemplo	
  
ü  hcp://www.yaw.com.br/screencast	
  
ü  hcp://www.yaw.com.br/open/proje...
Obrigado!	
  
ü  eder@yaw.com.br	
  
ü  hcps://twicer.com/edermag	
  
ü  hcp://github.com/edermag	
  
ü  hcp://edermag...
Upcoming SlideShare
Loading in …5
×

MongoDB outras alternativas de persistência

648 views
527 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
648
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

MongoDB outras alternativas de persistência

  1. 1. Explore  outras  alternativas  de  persistência   Eder  Magalhães   @edermag  
  2. 2. 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;  
  3. 3. 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;  
  4. 4. Alguns  pontos   ü  Escalabilidade;   ü  Alto  custo:  equipamento  e  licenças;   ü  Flexibilidade  em  relação  a  mudanças;  
  5. 5. 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;  
  6. 6. 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;  
  7. 7. Funcionalidade  vs  performance  
  8. 8. 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;  
  9. 9. 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  
  10. 10. Shell   ü  Ambiente/interpretador  JavaScript;   ü  Simples  e  alto  nível;   ü  Vamos  experimentar!  
  11. 11. Similaridades   MongoDB   Banco  Relacional   Database   Database   Coleção   Tabela   Documento   Registro   Chave  primária   Chave  primária  
  12. 12. MongoDB  Schema  Design   ü  Applica@on  Driven  schema;   ü  Rich  documents:  arrays  e  objetos  aninhados;   ü  Schemaless;   ü  Não  se  preocupe  com  normalização;  
  13. 13. Modelo  versão  relacional  
  14. 14. 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"] } }
  15. 15. +  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;  
  16. 16. 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' );
  17. 17. 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';
  18. 18. CRUD  -­‐  Delete   ü  Demonstração  de  delete;   //MongoDB db.estudantes.delete( { matricula: '200' } ); //SQL delete from estudantes where matricula = '200';
  19. 19. CRUD  -­‐  Query   ü  Demonstração  de  consultas;   //MongoDB db.estudantes.find({ curso: 'Arquitetura' }, { nome: 1 }); //SQL select nome from estudantes where curso = 'Arquitetura';
  20. 20. 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;
  21. 21. +  Consultas   ü  Demonstração  de  consultas  avançadas  com  grande  volume   de  dados  (base  de  email);  
  22. 22. Drivers   ü  Linguagens  c/  driver  do  MongoDB:   ü  Java   ü  Python   ü  C++  /  C#   ü  Node.js   ü  Erlang   ü  Ruby   ü  Scala   ü  Perl   ü  PHP  …  
  23. 23. 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;  
  24. 24. Outras  funcionalidades   ü  ReplicaSet;   ü  Sharding;   ü  GridFS;   ü  MapReduce;  
  25. 25. Mais  opções  NoSQL?   ü  Cassandra;   ü  CouchDB;   ü  Redis;   ü  Cloudera;   ü  Veja  outros  no  sie:  hcp://nosql-­‐database.org/    
  26. 26. Links   ü  hcp://www.mongodb.org/   ü  hcp://docs.mongodb.org/manual/   ü  hcps://educa@on.mongodb.com/   ü  Os  comandos  u@lizados  nessa  palestra  foram   disponibilizados  junto  com  o  projeto  demo,  na  url:   ü  hcps://github.com/edermag/mongodb-­‐javaweb  
  27. 27. Vídeo  aulas  /  projetos  exemplo   ü  hcp://www.yaw.com.br/screencast   ü  hcp://www.yaw.com.br/open/projetos/  
  28. 28. Obrigado!   ü  eder@yaw.com.br   ü  hcps://twicer.com/edermag   ü  hcp://github.com/edermag   ü  hcp://edermag.blogspot.com.br/   ü  hcps://bitbucket.org/edermag/  

×