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
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);
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;
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