Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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

982 views

Published on

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

Published in: Technology
  • Be the first to comment

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/  

×