Introdução ao no sql e mongodb

88
Introdução ao NoSQL e MongoDB Julio Cartier M. Gomes Sistemas de Informação - UFERSA (Angicos) 1

Transcript of Introdução ao no sql e mongodb

Page 1: Introdução ao no sql e mongodb

Introdução ao NoSQL e MongoDB

Julio Cartier M. GomesSistemas de Informação - UFERSA (Angicos)

1

Page 2: Introdução ao no sql e mongodb

2

Page 4: Introdução ao no sql e mongodb

Quem utiliza Big Data ?

4

Page 6: Introdução ao no sql e mongodb

6

Page 7: Introdução ao no sql e mongodb

O que é NoSQL?

NoSQL é um movimento que promove soluções de armazenamento de dados não relacionais. Ele é composto por diversas ferramentas que, de forma particular e específica, resolvem problemas como tratamento de grandes volumes de dados, execução de consultas com baixa latência e modelos flexíveis de armazenamento de dados, como documentos XML ou JSON.

7

Page 8: Introdução ao no sql e mongodb

Quando surgiu?

● O termo foi usado pela primeira vez em 1998 para um banco de dados relacional que omitiu o uso de SQL.

● O termo foi usado novamente em 2009 e usado para conferências de defensores de bancos de dados não-relacionais.

8

Page 9: Introdução ao no sql e mongodb

SGBD x NoSQL

A - Atomicity (Atomicidade)

C - Consistency (Consistência)

I - Isolation (Isolamento)

D - Durability (Durabilidade)

9

X

B - Basically

A - Available

S - Soft-state (Estado Leve)

E - Eventually Consistency

(Eventualmente

Consistente)

Basicamente Disponível

Page 10: Introdução ao no sql e mongodb

Objetivo

Atender as necessidades das aplicações, que necessitam de alta disponibilidade dos seus dados e rápido desempenho do processamento dos mesmos.

Exemplo: A google consegue processar até 20 petabytes de dados por dia armazenadas em BigTable.

10

Page 11: Introdução ao no sql e mongodb

Caractéristicas

● Escalabilidade Horizontal● Ausência de Esquema● Suporte a Replicação● API Simples

11

Page 12: Introdução ao no sql e mongodb

Escalabilidade Horizontal

A escalabilidade Horizontal consiste em aumentar o número de máquinas disponíveis.

A escalabilidade Horizontal em modelos relacionais seria inviável devido a concorrência.

Como nos modelos NoSQL não existe bloqueios, esse tipo de escalabilidade é a mais viável.

12

Page 13: Introdução ao no sql e mongodb

Ausência de Esquema

Apresentam ausência de Esquema ou esquema flexível, isso permite uma fácil aplicação da escalabilidade e também um aumento na disponibilidade dos dados.

Mas também devido a essa ausência, não há garantia da integridade dos dados.

13

Page 14: Introdução ao no sql e mongodb

Suporte a Replicação

Permitem a replicação de uma forma nativa o que provém uma escalabilidade maior e também uma diminuição do tempo gasto para a recuperação de informações.

14

Page 15: Introdução ao no sql e mongodb

API Simples

Para que o acesso ás informações seja feito da forma mais rápida possível, APIs são desenvolvidos para que qualquer aplicação possa ter acesso aos dados do banco de dados.

15

Page 16: Introdução ao no sql e mongodb

Modelos NoSQL

➔ Banco de dados chave-valor (key-value).➔ Banco de dados Orientado a Colunas.➔ Banco de dados Orientado a Documentos.➔ Banco de dados Orientado a Grafos.

16

Page 17: Introdução ao no sql e mongodb

17

Page 18: Introdução ao no sql e mongodb

Banco de dados chave-valor (key-value)

Modelo mais simples.

Permite a visualização do banco como uma grande tabela.

Todo o banco é composto por um conjunto de chaves que estão associadas a um único valor.

18

Page 19: Introdução ao no sql e mongodb

Orientado a Coluna

Um pouco mais complexos.

Os dados são indexados por uma tripla (linha, coluna e timestramp).

As linhas e as colunas são identificadas por chaves e o timestramp é o que permite identificar as diferentes versões de um mesmo dado.

19

Page 20: Introdução ao no sql e mongodb

20

Page 21: Introdução ao no sql e mongodb

Orientado a Documento

Armazena uma coleção de documentos.

Um documento no geral, é um objeto com um código único e um conjunto de campos, que podem ser strings, listas ou documentos aninhados.

Sua estrutura se assemelha com de chave-valor.

21

Page 22: Introdução ao no sql e mongodb

22

Page 23: Introdução ao no sql e mongodb

Orientado a Grafo

Neste modelo, o banco pode ser comparado com um multigrafo rotulado e direcionado, onde cada nó pode ser conectado por mais de uma aresta.

Possui três componentes básicos: os nós (são os vértices do grafo), os relacionamentos (são as arestas) e as propriedades (ou atributos) dos nós e relacionamentos.

23

Page 24: Introdução ao no sql e mongodb

24

Page 25: Introdução ao no sql e mongodb

25

Page 26: Introdução ao no sql e mongodb

Fundada em 2007

Dwight Merriman, Eliot Horowitz and Kevin Ryan – equipe por trás da DoubleClick.

26

MongoDB, um pouco da História!

Page 27: Introdução ao no sql e mongodb

MongoDB, um pouco da História!

Estava Frustrada na Empresa DoubleClick

Não tinha escalabilidade.

Inspiração em criar um novo modelo

27

Page 28: Introdução ao no sql e mongodb

E ai? Porque devo usar?

28

Page 29: Introdução ao no sql e mongodb

29

VantagensNão precisa ter a mesma estrutura em cada registro.

Boa quebra de paradigma.

Flexibilidade.

Page 30: Introdução ao no sql e mongodb

Termos

30

Page 31: Introdução ao no sql e mongodb

Instalação

Windows 64 bits

Linux 64 bits - Ubuntu 14.04 lts e 16.04 lts

31

Page 32: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 1

32

Page 33: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 2

33

Page 34: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 3

34

Page 35: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 4

35

Page 36: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 5

36

Page 37: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 6

37

Page 38: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 7

38

Page 39: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 8

39

Page 40: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 9

40

Page 41: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 10

41

Page 42: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 11

42

Page 43: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 12

43

Page 44: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 12

44

Page 45: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 13

45

Page 46: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 14

46

Page 47: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 15

47

Page 48: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 16

48

Page 49: Introdução ao no sql e mongodb

Windows 64 Bits - Obs: Passo 17

49

Page 50: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 18

Repita o Passo 1 até o 14.

50

Page 51: Introdução ao no sql e mongodb

Se errou, faz igual ao homer, haha. Calma, ainda podemos solucionar!

51

Page 52: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 19

52

Page 53: Introdução ao no sql e mongodb

Windows 64 Bits - Passo 20

53

Page 54: Introdução ao no sql e mongodb

Deu certo? Woo-Hoo!

54

Page 55: Introdução ao no sql e mongodb

Ubuntu 64 bits

Importar a Chave Pública.

55

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80

--recv EA312927

Page 56: Introdução ao no sql e mongodb

Ubuntu 64 bits

Criar um arquivo de lista.

56

echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2

multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Page 57: Introdução ao no sql e mongodb

Ubuntu 64 bits

Criar um arquivo de lista.

57

echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2

multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Page 58: Introdução ao no sql e mongodb

Ubuntu 64 bits

Update

58

sudo apt-get update

Page 59: Introdução ao no sql e mongodb

59

Page 60: Introdução ao no sql e mongodb

60

Page 61: Introdução ao no sql e mongodb

61

Page 62: Introdução ao no sql e mongodb

62

Vamos começar jovens Padawans!

Page 63: Introdução ao no sql e mongodb

Comandos Básicos MongoDB

63

Descrição Comandos

Listar todas as base de dados. show dbs

Criar uma nova base. use “Nome da Base”

Verificar em qual base de dados você está conectado.

db

Ajuda! help

Page 64: Introdução ao no sql e mongodb

O que são Coleções?

Uma coleção pode armazenar vários documentos. A coleção funciona como uma tabela de um SGBD.

64

Page 65: Introdução ao no sql e mongodb

Valores

65

Data Types Description

string Pode ser uma cadeia vazia ou uma combinação de caracteres.

integer Digitos.

boolean Os valores lógicos Verdadeiro ou Falso.

double Um tipo de número de ponto flutuante.

null Not zero, not empty.

Page 66: Introdução ao no sql e mongodb

Continuação

66

array Lista de valores.

object Uma entidade que pode ser utilizado na programação. Pode ser um valor, variável, função ou estrutura de dados.

timestamp Um valor de 64 bits referindo-se a um momento único e em uma única instância “mongod”. O primeiro de 32 bits deste valor refere-se ao segundo desde o UTC 1 de janeiro de 1970. E últimos 32 bits referem-se ao incremento ordinal para operações dentro de um determinado momento.

Internationalized Strings

UTF-8 para strings.

Object IDs Cada objeto ou documento MongoDB deve ter um ID do objeto que é único. Este é uma BSON (Binary JavaScript Object Notation, que é a interpretação binária de JSON) objeto id, um valor binário de 12 bytes que tem uma oportunidade muito rara de ser duplicado. Este ID consiste em uma timestamp de 4 bytes (segundos depois), 3 bytes para o ID de máquina, um ID de processo de 2 bytes e um contador de 3 bytes.

Page 67: Introdução ao no sql e mongodb

67

Criar Coleção e Listar Coleção

db.createCollection(‘contato’)

show collections

Page 68: Introdução ao no sql e mongodb

Inserir Dados

68

db.contato.insert({nome: ‘Digite o seu nome’,email: ‘Digite o seu email’,mensagem: ‘Insira uma mensagem’})

Page 69: Introdução ao no sql e mongodb

Inserir Dados

69

db.contato.insert ([{nome: ‘Digite o seu nome’,email: ‘Digite o seu email’,mensagem: ‘Insira uma mensagem},{Destinatário: 'Insira o Destinatário'}])

Page 70: Introdução ao no sql e mongodb

Listar Dados

70

db.contato.find()

"_id" : ObjectId("58028cd0d8f70d30b66db5af"), "nome" : "Julio Cartier", "email" : "[email protected]", "mensagem" : "Mensagem de Teste" }

db.contato.find().pretty()

Page 71: Introdução ao no sql e mongodb

Atualizar Dados

71

db.contato.update({nome: ‘Julio Cartier’’}, {$set: {email: ‘[email protected]’}})

Page 72: Introdução ao no sql e mongodb

Deletar Dado

72

db.contato.remove({nome: ‘Julio Cartier’})

db.contato.remove()

Page 73: Introdução ao no sql e mongodb

Deletar Coleção

73

db.contato.drop()

Page 74: Introdução ao no sql e mongodb

Deletar Base de Dados

74

db.dropDatabase()

Page 75: Introdução ao no sql e mongodb

Atividade 1

75

Page 76: Introdução ao no sql e mongodb

Vamos inserir mais 6 funcionários!

76

Page 77: Introdução ao no sql e mongodb

Operadores

77

Descrição Operadores

menor que $lt

menor ou igual a $lte

maior que $gt

maior ou igual a $gte

(verificar se um campo existe ou

não)

$exists

não igual $ne

Page 78: Introdução ao no sql e mongodb

Consultas

78

db.contato.find(‘nome’:’Nome do funcionário’)

db.contato.find(‘email’:’Email do funcionário’’)

Page 79: Introdução ao no sql e mongodb

Consultas

79

db.empresa.find(‘endereco’:’Endereco do Empregado’)

db.empresa.find({'salario':{$gt:1500}}).pretty()

Page 80: Introdução ao no sql e mongodb

Consultas

80

db.empresa.find({'salario':{$gt:1500}}, {nome:1,_id:0}).pretty()

db.empresa.find({'salario':{$gt:2000}}, {nome:1,endereco:1,_id:0}).pretty()

Page 81: Introdução ao no sql e mongodb

Consultas

81

db.empresa.find({'salario':{$lte:2000}}, {nome:1,endereco:1,salario:1,_id:0}).pretty()

db.empresa.find({'salario':{$ne:1800}}, {nome:1,endereco:1,salario:1,_id:0}).pretty()

Page 82: Introdução ao no sql e mongodb

Consultas

82

db.empresa.find({'salario':{$lte:2000}}, {nome:1,endereco:1,salario:1,_id:0}).count()

db.empresa.find().count()

Page 83: Introdução ao no sql e mongodb

Consultas

83

db.empresa.find().limit(2)

Page 84: Introdução ao no sql e mongodb

Operadores

84

db.empresa.find( { $or: [ {key1: value1}, {key2:value2} ] }).pretty()

Page 85: Introdução ao no sql e mongodb

Atividade 2

85

Page 86: Introdução ao no sql e mongodb

Atividade 3

86

Page 87: Introdução ao no sql e mongodb

Código Java

87

Page 88: Introdução ao no sql e mongodb

Conexão do MongoDB com o Java

88