SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
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

Semelhante a MongoDB outras alternativas de persistência

Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
NoSQL no Azure - Azure Tech Nights - 2017
NoSQL no Azure - Azure Tech Nights - 2017NoSQL no Azure - Azure Tech Nights - 2017
NoSQL no Azure - Azure Tech Nights - 2017Renato Groff
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloRenato Groff
 
Tesi Dados Final
Tesi Dados FinalTesi Dados Final
Tesi Dados Finaljcaroso
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoVitor Silva
 
MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017MongoDB também no Azure? SIM! - DevOps Summit 2017
MongoDB também no Azure? SIM! - DevOps Summit 2017Renato Groff
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de DadosDeep Tech Brasil
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalierGleicon Moraes
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkGuilherme Carlos
 
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdfTDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdfFernandoIto8
 
Visao geral TI03 2-0
Visao geral TI03 2-0Visao geral TI03 2-0
Visao geral TI03 2-0Ale Uehara
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018Renato Groff
 
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Andre Santos
 

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

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

Mais de Eder Magalhães

Concorrencia, baixa Latência e alta disponibilidade
Concorrencia, baixa Latência e alta disponibilidadeConcorrencia, baixa Latência e alta disponibilidade
Concorrencia, baixa Latência e alta disponibilidadeEder Magalhães
 
Java Is Back, Novidade do Java 8
Java Is Back, Novidade do Java 8Java Is Back, Novidade do Java 8
Java Is Back, Novidade do Java 8Eder Magalhães
 
Desenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeDesenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeEder Magalhães
 
Java e uma visão sobre PaaS
Java e uma visão sobre PaaSJava e uma visão sobre PaaS
Java e uma visão sobre PaaSEder Magalhães
 
JDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesJDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesEder Magalhães
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingEder Magalhães
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EEEder Magalhães
 
As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8Eder Magalhães
 
Desenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooDesenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooEder Magalhães
 
Futuro da linguagem e plataforma: Java 7 e 8
Futuro da linguagem e plataforma: Java 7 e 8Futuro da linguagem e plataforma: Java 7 e 8
Futuro da linguagem e plataforma: Java 7 e 8Eder Magalhães
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoEder Magalhães
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011Eder Magalhães
 
Introducao ao Spring Web MVC
Introducao ao Spring Web MVCIntroducao ao Spring Web MVC
Introducao ao Spring Web MVCEder Magalhães
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem PráticaEder Magalhães
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringEder Magalhães
 

Mais de Eder Magalhães (20)

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

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/