minicurso epoca mongodb

48
um exemplo de Banco de Dados NoSQL um exemplo de Banco de Dados NoSQL

Upload: lelybarros

Post on 25-May-2015

2.660 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

um exemplo de Banco de Dados NoSQL

Page 2: Minicurso Epoca mongoDB

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

Page 3: Minicurso Epoca mongoDB

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

Page 4: Minicurso Epoca mongoDB

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

Page 5: Minicurso Epoca mongoDB

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

Page 6: Minicurso Epoca mongoDB

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

Page 7: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Modelo ACID do SQL

Atomicidade

Consistência

Isolamento

Durabilidade

07/48

Page 8: Minicurso Epoca mongoDB

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

Page 9: Minicurso Epoca mongoDB

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

Page 10: Minicurso Epoca mongoDB

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

Page 11: Minicurso Epoca mongoDB

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

Page 12: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Modelo BASE do NoSQL

Basicamente disponível

Estado leve

Consistente em momento indeterminado

12/48

Page 13: Minicurso Epoca mongoDB

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

Page 14: Minicurso Epoca mongoDB

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

Page 15: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Exemplos de Banco NoSQL

15/48

Page 16: Minicurso Epoca mongoDB

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

Page 17: Minicurso Epoca mongoDB

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

Page 18: Minicurso Epoca mongoDB

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

Page 19: Minicurso Epoca mongoDB

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

Page 20: Minicurso Epoca mongoDB

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

Page 21: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Modelo de Dados do mongoDB

21/48

Page 22: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Coleções

• Agrupamento lógico de documentos;

• Schema-free;

• Número ilimitado de documentos.

22/48

Page 23: Minicurso Epoca mongoDB

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

Page 24: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

BSON

• Objetos no MongoDB;

• "Binary JSON“;

• Permite representação de tipos ricos.

24/48

Page 25: Minicurso Epoca mongoDB

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

Page 26: Minicurso Epoca mongoDB

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

Page 27: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Instalação Windows

Recomendado instalar como serviço, digita -se no Prompt:

27/48

Page 28: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Instalação Windows

Depois é só iniciar o serviço digitando no Prompt:

28/48

Page 29: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Instalação Ubuntu

• Abre o terminal e digita:

> sudo apt-get install mongodb

29/48

Page 30: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Shell do mongoDB

30/48

Page 31: Minicurso Epoca mongoDB

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

Page 32: Minicurso Epoca mongoDB

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

Page 33: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Criando banco, coleções e documentos

33/48

Page 34: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Listando os dados de uma Coleção

34/48

Page 35: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Remover dados de uma Coleção

35/48

Page 36: Minicurso Epoca mongoDB

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

Page 37: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Utilitários de administração

• http://localhost:28017;

• db.serverStatus();

• db.stats();

• mongod --repair

37/48

Page 38: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Banco de Exemplo

38/48

Page 39: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Comandos

• db.alfabeto.find();

• it;

• db.alfabeto.find().forEach(printjson);

39/48

Page 40: Minicurso Epoca mongoDB

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

Page 41: Minicurso Epoca mongoDB

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

Page 42: Minicurso Epoca mongoDB

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

Page 43: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Função Group

• SQL:

SELECT name, COUNT(*) FROM colors GROUP BY name;

43/48

Page 44: Minicurso Epoca mongoDB

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

Page 45: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Mais comandos

• db.cor.drop();

• show collections;

• show dbs.

45/48

Page 46: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Ferramentas e outros recursos

• Importando e exportando dados;

• Fazer backup e restaurar bancos de dados

46/48

Page 47: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Dúvidas?

47/48

Page 48: Minicurso Epoca mongoDB

um exemplo de Banco de Dados NoSQL

Obrigada!