minicurso epoca mongodb
TRANSCRIPT
um exemplo de Banco de Dados NoSQL
um exemplo de Banco de Dados NoSQL
um exemplo de Banco de Dados NoSQL
DANIELE MONTENEGRO – @lelybarros Bacharel em Ciências Sociais – UFRN Graduanda em Análise e Desenvolvimento de Sistemas – IFRN E-mail: [email protected] MSN: [email protected]
Quem sou?
02/48
um exemplo de Banco de Dados NoSQL
Agenda
1. Modelo SQL
2. NoSQL
3. O mongoDB
4. Operações no mongoDB
5. Execução de Código no Lado Servidor
6. Aplicação Exemplo no Lado Cliente com Java
03/48
um exemplo de Banco de Dados NoSQL
Modelo Relacional
• Criação em 1970;
• Elementos básicos: relações, tuplas e atributos;
• A utilização de restrições de integridade (chaves);
• Normalização.
04/48
um exemplo de Banco de Dados NoSQL
Modelo Relacional
• O modelo relacional usa como linguagem de definição, manipulação e consulta de dados a SQL (Structured Query Language);
• Consistência dos dados.
05/48
um exemplo de Banco de Dados NoSQL
SGBD’s SQL oferecem
• Processos de validação;
• Verificação e garantias de integridade dos dados;
• Controle de concorrência, recuperação de falhas, segurança;
• Controle de transações, otimização de consultas.
06/48
um exemplo de Banco de Dados NoSQL
Modelo ACID do SQL
Atomicidade
Consistência
Isolamento
Durabilidade
07/48
um exemplo de Banco de Dados NoSQL
Limitações do SQL
• Com o crescimento do número de usuários, o sistema começa a ter uma queda de performance.
• Dificuldade em fazer a escalabilidade.
08/48
um exemplo de Banco de Dados NoSQL
Porque tudo mudou com a Web?
• Necessidade de manipulação de grandes volumes de dados não estruturados ou semi-estruturados;
• Novas necessidades de disponibilidade e escalabilidade.
09/48
um exemplo de Banco de Dados NoSQL
O que é NoSQL?
• Termo genérico para um classe definida de banco de dados não-relacionais;
• Forma flexível de estruturar o banco de dados.
10/48
um exemplo de Banco de Dados NoSQL
Quando surgiram?
• O termo surgiu em 1998;
• Primeiras propostas pela comunidade de software livre;
• A primeira implementação foi em 2004 com BigTable da Google;
• Em 2007, a Amazon apresenta o sistema Dynamo.
11/48
um exemplo de Banco de Dados NoSQL
Modelo BASE do NoSQL
Basicamente disponível
Estado leve
Consistente em momento indeterminado
12/48
um exemplo de Banco de Dados NoSQL
Características do NoSQL
• Escalabilidade horizontal;
• Ausência de esquema ou flexível;
• Suporte nativo a replicação;
• API simples para acesso a dados;
• Consistência eventual.
13/48
um exemplo de Banco de Dados NoSQL
Tipos de Modelo de Dados NoSQL
• Orientado a documentos;
• Armazenamento Chave-valor;
• Baseado em Grafos;
• Orientado a Coluna.
14/48
um exemplo de Banco de Dados NoSQL
Exemplos de Banco NoSQL
15/48
um exemplo de Banco de Dados NoSQL
Não usar x Usar o NoSQL • Aplicativos que acessam
dados rapidamente; • Dados que são
acessados com frequência;
• Sistemas que os dados
não precisam ser estruturados.
• Aplicativos que necessitam de uma forte regra de negocio;
• Um maior grau de rigor
quanto à consistência dos dados;
• Sistemas em que os
dados necessitam ser estruturados.
16/48
um exemplo de Banco de Dados NoSQL
O mongoDB
• Banco de dados Orientado a Documentos;
• Usa o formato BSON;
• Escrito em C++;
• Alta performance;
• Suporta tipos ricos.
17/48
um exemplo de Banco de Dados NoSQL
O mongoDB
• Binários oficiais disponíveis para Windows®, Mac OS X, Linux® e Solaris;
• Drivers para C, C#, C++, Haskell, Java™, JavaScript, Perl, PHP, Python, Ruby e Scala;
18/48
um exemplo de Banco de Dados NoSQL
Porque o mongoDB?
• Orientado a documentos;
• Alta performance;
• Alta disponibilidade;
• Fácil escalabilidade;
• Linguagem rica de consulta.
19/48
um exemplo de Banco de Dados NoSQL
Modelo de Dados do mongoDB
• Um banco de dados armazena um conjunto de coleções;
• Uma coleção armazena um conjunto de documentos;
• Um documento é um conjunto de campos;
• Um campo é um par chave-valor;
• Uma chave é um nome;
• Um valor é um tipo básico.
20/48
um exemplo de Banco de Dados NoSQL
Modelo de Dados do mongoDB
21/48
um exemplo de Banco de Dados NoSQL
Coleções
• Agrupamento lógico de documentos;
• Schema-free;
• Número ilimitado de documentos.
22/48
um exemplo de Banco de Dados NoSQL
Documentos
• Unidade de armazenamento;
• Todos devem ter um _id único;
• Tamanho máximo de 4MB. – para objetos maiores, usa-se GridFS
23/48
um exemplo de Banco de Dados NoSQL
BSON
• Objetos no MongoDB;
• "Binary JSON“;
• Permite representação de tipos ricos.
24/48
um exemplo de Banco de Dados NoSQL
Como começar?
• Baixar os Binários disponíveis para 32 e 64 bits no link: Baixar mongoDB
25/48
um exemplo de Banco de Dados NoSQL
Instalação Windows
• Baixa o arquivo do mongo;
• Descompacta de preferência na Unidade C;
• Renomeia o arquivo para mongodb;
• Cria duas pastas uma chamada data e a outra
log;
26/48
um exemplo de Banco de Dados NoSQL
Instalação Windows
Recomendado instalar como serviço, digita -se no Prompt:
27/48
um exemplo de Banco de Dados NoSQL
Instalação Windows
Depois é só iniciar o serviço digitando no Prompt:
28/48
um exemplo de Banco de Dados NoSQL
Instalação Ubuntu
• Abre o terminal e digita:
> sudo apt-get install mongodb
29/48
um exemplo de Banco de Dados NoSQL
Shell do mongoDB
30/48
um exemplo de Banco de Dados NoSQL
Regra de Sintaxe
• O atributo para o mongoDB tem duas regras devem ser satisfeitas:
O nome do atributo não deve
começar com o caractere $; e o caractere ‘.’ jamais poderá ser
incluso.
31/48
um exemplo de Banco de Dados NoSQL
Criando banco, coleções e documentos
• Criar banco: use [nome banco]
• Criar Coleção e adicionar um documento: db.colecao.save({atributo: “valor”, atributo: “valor”})
ou
doc = ({atributo: “valor”, atributo: “valor”})
db.colecao.save(doc)
32/48
um exemplo de Banco de Dados NoSQL
Criando banco, coleções e documentos
33/48
um exemplo de Banco de Dados NoSQL
Listando os dados de uma Coleção
34/48
um exemplo de Banco de Dados NoSQL
Remover dados de uma Coleção
35/48
um exemplo de Banco de Dados NoSQL
Operadores Condicionais
Operadores Valor
$lt Menor que
$lte Menor igual que
$gt Maior que
$gte Maior igual que
$not Não igual
$all Todos os valores de um array
$exists Verificar se um campo existe ou não
$or Corresponder uma consulta a outra
36/48
um exemplo de Banco de Dados NoSQL
Utilitários de administração
• http://localhost:28017;
• db.serverStatus();
• db.stats();
• mongod --repair
37/48
um exemplo de Banco de Dados NoSQL
Banco de Exemplo
38/48
um exemplo de Banco de Dados NoSQL
Comandos
• db.alfabeto.find();
• it;
• db.alfabeto.find().forEach(printjson);
39/48
um exemplo de Banco de Dados NoSQL
Consultas
• db.alfabeto.find({char: "o"});
• db.alfabeto.find({code:{$lte:100}});
• db.alfabeto.find({code:{$in:[102,103,104,105]}}
, {char: 1});
• db.alfabeto. find({code: {$gte:
118}}).sort({code: 0});
40/48
um exemplo de Banco de Dados NoSQL
Resultados de paginação usando
• db.alfabeto.find().limit(5);
• db.alfabeto.find().skip(5).limit(5);
41/48
um exemplo de Banco de Dados NoSQL
Funções de Grupo e Agregação
• db.alfabeto.find().count();
• db.allfabeto.find({code: {$gte: 105}}).count();
• db.contato.distinct("name");
42/48
um exemplo de Banco de Dados NoSQL
Função Group
• SQL:
SELECT name, COUNT(*) FROM colors GROUP BY name;
43/48
um exemplo de Banco de Dados NoSQL
Função Group
• mongoDB
db.colors.group( {key: {name: true},
cond: {}, initial: {count: 0},
reduce: function(doc, out) { out.count++; }
});
44/48
um exemplo de Banco de Dados NoSQL
Mais comandos
• db.cor.drop();
• show collections;
• show dbs.
45/48
um exemplo de Banco de Dados NoSQL
Ferramentas e outros recursos
• Importando e exportando dados;
• Fazer backup e restaurar bancos de dados
46/48
um exemplo de Banco de Dados NoSQL
Dúvidas?
47/48
um exemplo de Banco de Dados NoSQL
Obrigada!