SlideShare uma empresa Scribd logo
Explore	
  outras	
  alternativas	
  de	
  persistência	
  

Eder	
  Magalhães	
  
@edermag	
  
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;	
  
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;	
  
Alguns	
  pontos	
  
ü  Escalabilidade;	
  
ü  Alto	
  custo:	
  equipamento	
  e	
  licenças;	
  
ü  Flexibilidade	
  em	
  relação	
  a	
  mudanças;	
  
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;	
  
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;	
  
Funcionalidade	
  vs	
  performance	
  
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;	
  
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	
  
Shell	
  
ü  Ambiente/interpretador	
  JavaScript;	
  
ü  Simples	
  e	
  alto	
  nível;	
  
ü  Vamos	
  experimentar!	
  
Similaridades	
  
MongoDB	
  

Banco	
  Relacional	
  

Database	
  

Database	
  

Coleção	
  

Tabela	
  

Documento	
  

Registro	
  

Chave	
  primária	
  

Chave	
  primária	
  
MongoDB	
  Schema	
  Design	
  
ü  Applica@on	
  Driven	
  schema;	
  
ü  Rich	
  documents:	
  arrays	
  e	
  objetos	
  aninhados;	
  
ü  Schemaless;	
  
ü  Não	
  se	
  preocupe	
  com	
  normalização;	
  
Modelo	
  versão	
  relacional	
  
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"]
}
}
+	
  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;	
  
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' );
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';
CRUD	
  -­‐	
  Delete	
  
ü  Demonstração	
  de	
  delete;	
  
//MongoDB
db.estudantes.delete( { matricula: '200' } );

//SQL
delete from estudantes where matricula = '200';
CRUD	
  -­‐	
  Query	
  
ü  Demonstração	
  de	
  consultas;	
  
//MongoDB
db.estudantes.find({ curso: 'Arquitetura' }, { nome: 1 });

//SQL
select nome from estudantes where curso = 'Arquitetura';
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;
+	
  Consultas	
  
ü  Demonstração	
  de	
  consultas	
  avançadas	
  com	
  grande	
  volume	
  

de	
  dados	
  (base	
  de	
  email);	
  
Drivers	
  
ü  Linguagens	
  c/	
  driver	
  do	
  MongoDB:	
  
ü  Java	
  
ü  Python	
  
ü  C++	
  /	
  C#	
  
ü  Node.js	
  
ü  Erlang	
  
ü  Ruby	
  
ü  Scala	
  
ü  Perl	
  
ü  PHP	
  …	
  
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;	
  
Outras	
  funcionalidades	
  
ü  ReplicaSet;	
  
ü  Sharding;	
  
ü  GridFS;	
  
ü  MapReduce;	
  
Mais	
  opções	
  NoSQL?	
  
ü  Cassandra;	
  
ü  CouchDB;	
  
ü  Redis;	
  
ü  Cloudera;	
  
ü  Veja	
  outros	
  no	
  sie:	
  hcp://nosql-­‐database.org/	
  

	
  
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	
  
Vídeo	
  aulas	
  /	
  projetos	
  exemplo	
  
ü  hcp://www.yaw.com.br/screencast	
  
ü  hcp://www.yaw.com.br/open/projetos/	
  
Obrigado!	
  
ü  eder@yaw.com.br	
  
ü  hcps://twicer.com/edermag	
  
ü  hcp://github.com/edermag	
  
ü  hcp://edermag.blogspot.com.br/	
  
ü  hcps://bitbucket.org/edermag/	
  

Mais conteúdo relacionado

PDF
Visao geralti netshoes03
PDF
Visao geralti netshoes03
PDF
Graficos com PrimeFaces
PDF
Apresentação Banco de Dados - Caché
PDF
SQLAlchemy - Desenvolvendo uma aplicação com Python
PDF
Palestra nosql
PDF
NoSql e NewSql
KEY
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Visao geralti netshoes03
Visao geralti netshoes03
Graficos com PrimeFaces
Apresentação Banco de Dados - Caché
SQLAlchemy - Desenvolvendo uma aplicação com Python
Palestra nosql
NoSql e NewSql
Utilizando NoSQL no desenvolvimento de soluções inteligentes

Semelhante a MongoDB outras alternativas de persistência (20)

PPT
Mongo Db - PHP Day Workshop
PPTX
NoSQL no Azure - Azure Tech Nights - 2017
PPTX
DocumentDB - Azure Fridays São Paulo
PPTX
MongoDB + PHP
PPT
Tesi Dados Final
PDF
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
PPTX
MongoDB também no Azure? SIM! - DevOps Summit 2017
PDF
[DTC21] André Marques - Jornada do Engenheiro de Dados
ODP
MongoDB Schema Design - Latinoware 2014
PPT
L'esprit de l'escalier
ODP
Persistência Poliglota, Big Data e NoSQL FISL 15
PPTX
Desenvolvimento de aplicações PHP com MongoDB
PPTX
No sql Orientado a documento
PPTX
Ruby on Rails for beginners 2.0
PDF
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
PDF
Visao geral TI03 2-0
PPTX
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
PDF
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
PPTX
#1 Introdução ao MongoDB
PDF
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Mongo Db - PHP Day Workshop
NoSQL no Azure - Azure Tech Nights - 2017
DocumentDB - Azure Fridays São Paulo
MongoDB + PHP
Tesi Dados Final
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
MongoDB também no Azure? SIM! - DevOps Summit 2017
[DTC21] André Marques - Jornada do Engenheiro de Dados
MongoDB Schema Design - Latinoware 2014
L'esprit de l'escalier
Persistência Poliglota, Big Data e NoSQL FISL 15
Desenvolvimento de aplicações PHP com MongoDB
No sql Orientado a documento
Ruby on Rails for beginners 2.0
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
Visao geral TI03 2-0
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
#1 Introdução ao MongoDB
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Anúncio

Mais de Eder Magalhães (20)

PDF
Cvc programacao reativa
PDF
Concorrencia, baixa Latência e alta disponibilidade
PDF
Java Is Back, Novidade do Java 8
PDF
Desenvolva uma app Java web em poucos passos, com o Forge
PDF
Java e uma visão sobre PaaS
PDF
JDK8: Lambda, Jigsaw e novidades
PDF
JavaEE 7, na era do cloud computing
PDF
Introdução a Plataforma Java EE
PDF
As modificações na Linguagem: Java 7 e Java 8
PDF
Desenvolvimento Produtivo com Spring Roo
PDF
Futuro da linguagem e plataforma: Java 7 e 8
PDF
Arquiteturas Java EE no Google App Engine
PDF
Java7 tdc2011
PDF
Richfaces 4 - Desenvolvimento JSF mais rico
PDF
JSF 2 Components JustJava2011
PDF
Introducao Spring ROO
PDF
Introducao Google GO
PDF
Introducao ao Spring Web MVC
PDF
JavaFX: Abordagem Prática
PDF
Desenvolvimento RIA com GWT e Spring
Cvc programacao reativa
Concorrencia, baixa Latência e alta disponibilidade
Java Is Back, Novidade do Java 8
Desenvolva uma app Java web em poucos passos, com o Forge
Java e uma visão sobre PaaS
JDK8: Lambda, Jigsaw e novidades
JavaEE 7, na era do cloud computing
Introdução a Plataforma Java EE
As modificações na Linguagem: Java 7 e Java 8
Desenvolvimento Produtivo com Spring Roo
Futuro da linguagem e plataforma: Java 7 e 8
Arquiteturas Java EE no Google App Engine
Java7 tdc2011
Richfaces 4 - Desenvolvimento JSF mais rico
JSF 2 Components JustJava2011
Introducao Spring ROO
Introducao Google GO
Introducao ao Spring Web MVC
JavaFX: Abordagem Prática
Desenvolvimento RIA com GWT e Spring
Anúncio

Último (20)

PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Aula sobre banco de dados com firebase db
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Aula sobre desenvolvimento de aplicativos
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Aula 18 - Manipulacao De Arquivos python
Apple Pippin Uma breve introdução. - David Glotz
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
COBITxITIL-Entenda as diferença em uso governança TI
Custos e liquidação no SAP Transportation Management, TM130 Col18
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Émile Durkheim slide elaborado muito bom
Aula sobre banco de dados com firebase db
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx

MongoDB outras alternativas de persistência

  • 1. Explore  outras  alternativas  de  persistência   Eder  Magalhães   @edermag  
  • 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. 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. Alguns  pontos   ü  Escalabilidade;   ü  Alto  custo:  equipamento  e  licenças;   ü  Flexibilidade  em  relação  a  mudanças;  
  • 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. 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;  
  • 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. 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. Shell   ü  Ambiente/interpretador  JavaScript;   ü  Simples  e  alto  nível;   ü  Vamos  experimentar!  
  • 11. Similaridades   MongoDB   Banco  Relacional   Database   Database   Coleção   Tabela   Documento   Registro   Chave  primária   Chave  primária  
  • 12. MongoDB  Schema  Design   ü  Applica@on  Driven  schema;   ü  Rich  documents:  arrays  e  objetos  aninhados;   ü  Schemaless;   ü  Não  se  preocupe  com  normalização;  
  • 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. +  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. 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. 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. CRUD  -­‐  Delete   ü  Demonstração  de  delete;   //MongoDB db.estudantes.delete( { matricula: '200' } ); //SQL delete from estudantes where matricula = '200';
  • 19. CRUD  -­‐  Query   ü  Demonstração  de  consultas;   //MongoDB db.estudantes.find({ curso: 'Arquitetura' }, { nome: 1 }); //SQL select nome from estudantes where curso = 'Arquitetura';
  • 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. +  Consultas   ü  Demonstração  de  consultas  avançadas  com  grande  volume   de  dados  (base  de  email);  
  • 22. Drivers   ü  Linguagens  c/  driver  do  MongoDB:   ü  Java   ü  Python   ü  C++  /  C#   ü  Node.js   ü  Erlang   ü  Ruby   ü  Scala   ü  Perl   ü  PHP  …  
  • 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. Outras  funcionalidades   ü  ReplicaSet;   ü  Sharding;   ü  GridFS;   ü  MapReduce;  
  • 25. Mais  opções  NoSQL?   ü  Cassandra;   ü  CouchDB;   ü  Redis;   ü  Cloudera;   ü  Veja  outros  no  sie:  hcp://nosql-­‐database.org/    
  • 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. Vídeo  aulas  /  projetos  exemplo   ü  hcp://www.yaw.com.br/screencast   ü  hcp://www.yaw.com.br/open/projetos/  
  • 28. Obrigado!   ü  eder@yaw.com.br   ü  hcps://twicer.com/edermag   ü  hcp://github.com/edermag   ü  hcp://edermag.blogspot.com.br/   ü  hcps://bitbucket.org/edermag/