Este documento fornece uma introdução a bancos de dados NoSQL e ao MongoDB. Ele discute as limitações dos bancos de dados relacionais SQL, as características e tipos de bancos de dados NoSQL, e fornece detalhes sobre como instalar e usar o MongoDB, incluindo como criar bancos de dados, coleções e documentos, e executar consultas e operações.
1. um exemplo de Banco de Dados NoSQL
um exemplo de Banco de Dados NoSQL
2. Quem sou?
DANIELE MONTENEGRO – @lelybarros
Bacharel em Ciências Sociais – UFRN
Graduanda em Análise e Desenvolvimento de
Sistemas – IFRN
E-mail: monte.daniele@gmail.com
MSN: danie_monte@hotmail.com
um exemplo de Banco de Dados NoSQL 02/48
3. 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
um exemplo de Banco de Dados NoSQL 03/48
4. 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.
um exemplo de Banco de Dados NoSQL 04/48
5. 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.
um exemplo de Banco de Dados NoSQL 05/48
6. 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.
um exemplo de Banco de Dados NoSQL 06/48
7. Modelo ACID do SQL
Atomicidade
Consistência
Isolamento
Durabilidade
um exemplo de Banco de Dados NoSQL 07/48
8. 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.
um exemplo de Banco de Dados NoSQL 08/48
9. 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.
um exemplo de Banco de Dados NoSQL 09/48
10. 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.
um exemplo de Banco de Dados NoSQL 10/48
11. 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.
um exemplo de Banco de Dados NoSQL 11/48
12. Modelo BASE do NoSQL
Basicamente disponível
Estado leve
Consistente em momento indeterminado
um exemplo de Banco de Dados NoSQL 12/48
13. 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.
um exemplo de Banco de Dados NoSQL 13/48
14. Tipos de Modelo de Dados NoSQL
• Orientado a documentos;
• Armazenamento Chave-valor;
• Baseado em Grafos;
• Orientado a Coluna.
um exemplo de Banco de Dados NoSQL 14/48
16. Não usar x Usar o NoSQL
• Aplicativos que
necessitam de uma forte • Aplicativos que acessam
regra de negocio; dados rapidamente;
• Um maior grau de rigor • Dados que são
quanto à consistência acessados com
dos dados; frequência;
• Sistemas em que os • Sistemas que os dados
dados necessitam ser não precisam ser
estruturados. estruturados.
um exemplo de Banco de Dados NoSQL 16/48
17. O mongoDB
• Banco de dados Orientado a Documentos;
• Usa o formato BSON;
• Escrito em C++;
• Alta performance;
• Suporta tipos ricos.
um exemplo de Banco de Dados NoSQL 17/48
18. 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;
um exemplo de Banco de Dados NoSQL 18/48
19. Porque o mongoDB?
• Orientado a documentos;
• Alta performance;
• Alta disponibilidade;
• Fácil escalabilidade;
• Linguagem rica de consulta.
um exemplo de Banco de Dados NoSQL 19/48
20. 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.
um exemplo de Banco de Dados NoSQL 20/48
21. Modelo de Dados do mongoDB
um exemplo de Banco de Dados NoSQL 21/48
22. Coleções
• Agrupamento lógico de documentos;
• Schema-free;
• Número ilimitado de documentos.
um exemplo de Banco de Dados NoSQL 22/48
23. Documentos
• Unidade de armazenamento;
• Todos devem ter um _id único;
• Tamanho máximo de 4MB.
– para objetos maiores, usa-se GridFS
um exemplo de Banco de Dados NoSQL 23/48
24. BSON
• Objetos no MongoDB;
• "Binary JSON“;
• Permite representação de tipos ricos.
um exemplo de Banco de Dados NoSQL 24/48
25. Como começar?
• Baixar os Binários disponíveis para 32 e 64
bits no link: Baixar mongoDB
um exemplo de Banco de Dados NoSQL 25/48
26. 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;
um exemplo de Banco de Dados NoSQL 26/48
31. 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.
um exemplo de Banco de Dados NoSQL 31/48
32. 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)
um exemplo de Banco de Dados NoSQL 32/48
34. Listando os dados de uma Coleção
um exemplo de Banco de Dados NoSQL 34/48
35. Remover dados de uma Coleção
um exemplo de Banco de Dados NoSQL 35/48
36. 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
um exemplo de Banco de Dados NoSQL 36/48
37. Utilitários de administração
• http://localhost:28017;
• db.serverStatus();
• db.stats();
• mongod --repair
um exemplo de Banco de Dados NoSQL 37/48
40. 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});
um exemplo de Banco de Dados NoSQL 40/48
41. Resultados de paginação usando
• db.alfabeto.find().limit(5);
• db.alfabeto.find().skip(5).limit(5);
um exemplo de Banco de Dados NoSQL 41/48
42. Funções de Grupo e Agregação
• db.alfabeto.find().count();
• db.allfabeto.find({code: {$gte: 105}}).count();
• db.contato.distinct("name");
um exemplo de Banco de Dados NoSQL 42/48
43. Função Group
• SQL:
SELECT name, COUNT(*) FROM colors GROUP BY
name;
um exemplo de Banco de Dados NoSQL 43/48
44. Função Group
• mongoDB
db.colors.group( {key: {name: true},
cond: {}, initial: {count: 0},
reduce: function(doc, out) { out.count++; }
});
um exemplo de Banco de Dados NoSQL 44/48