MongoDB outras alternativas de persistência
-
Upload
eder-magalhaes -
Category
Technology
-
view
303 -
download
2
Embed Size (px)
description
Transcript of MongoDB outras alternativas de persistência

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://[email protected]/
ü 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!
ü hcps://twicer.com/edermag
ü hcp://github.com/edermag
ü hcp://edermag.blogspot.com.br/
ü hcps://bitbucket.org/edermag/