Introdução ao NoSQL e MongoDB
Julio Cartier M. GomesSistemas de Informação - UFERSA (Angicos)
1
2
Quem utiliza Big Data ?
4
6
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
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
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
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
Caractéristicas
● Escalabilidade Horizontal● Ausência de Esquema● Suporte a Replicação● API Simples
11
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
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
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
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
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
17
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
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
20
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
22
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
24
25
Fundada em 2007
Dwight Merriman, Eliot Horowitz and Kevin Ryan – equipe por trás da DoubleClick.
26
MongoDB, um pouco da História!
MongoDB, um pouco da História!
Estava Frustrada na Empresa DoubleClick
Não tinha escalabilidade.
Inspiração em criar um novo modelo
27
E ai? Porque devo usar?
28
29
VantagensNão precisa ter a mesma estrutura em cada registro.
Boa quebra de paradigma.
Flexibilidade.
Termos
30
Instalação
Windows 64 bits
Linux 64 bits - Ubuntu 14.04 lts e 16.04 lts
31
Windows 64 Bits - Passo 1
32
Windows 64 Bits - Passo 2
33
Windows 64 Bits - Passo 3
34
Windows 64 Bits - Passo 4
35
Windows 64 Bits - Passo 5
36
Windows 64 Bits - Passo 6
37
Windows 64 Bits - Passo 7
38
Windows 64 Bits - Passo 8
39
Windows 64 Bits - Passo 9
40
Windows 64 Bits - Passo 10
41
Windows 64 Bits - Passo 11
42
Windows 64 Bits - Passo 12
43
Windows 64 Bits - Passo 12
44
Windows 64 Bits - Passo 13
45
Windows 64 Bits - Passo 14
46
Windows 64 Bits - Passo 15
47
Windows 64 Bits - Passo 16
48
Windows 64 Bits - Obs: Passo 17
49
Windows 64 Bits - Passo 18
Repita o Passo 1 até o 14.
50
Se errou, faz igual ao homer, haha. Calma, ainda podemos solucionar!
51
Windows 64 Bits - Passo 19
52
Windows 64 Bits - Passo 20
53
Deu certo? Woo-Hoo!
54
Ubuntu 64 bits
Importar a Chave Pública.
55
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80
--recv EA312927
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
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
Ubuntu 64 bits
Update
58
sudo apt-get update
59
60
61
62
Vamos começar jovens Padawans!
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
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
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.
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.
67
Criar Coleção e Listar Coleção
db.createCollection(‘contato’)
show collections
Inserir Dados
68
db.contato.insert({nome: ‘Digite o seu nome’,email: ‘Digite o seu email’,mensagem: ‘Insira uma mensagem’})
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'}])
Listar Dados
70
db.contato.find()
"_id" : ObjectId("58028cd0d8f70d30b66db5af"), "nome" : "Julio Cartier", "email" : "[email protected]", "mensagem" : "Mensagem de Teste" }
db.contato.find().pretty()
Atualizar Dados
71
db.contato.update({nome: ‘Julio Cartier’’}, {$set: {email: ‘[email protected]’}})
Deletar Dado
72
db.contato.remove({nome: ‘Julio Cartier’})
db.contato.remove()
Deletar Coleção
73
db.contato.drop()
Deletar Base de Dados
74
db.dropDatabase()
Atividade 1
75
Vamos inserir mais 6 funcionários!
76
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
Consultas
78
db.contato.find(‘nome’:’Nome do funcionário’)
db.contato.find(‘email’:’Email do funcionário’’)
Consultas
79
db.empresa.find(‘endereco’:’Endereco do Empregado’)
db.empresa.find({'salario':{$gt:1500}}).pretty()
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()
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()
Consultas
82
db.empresa.find({'salario':{$lte:2000}}, {nome:1,endereco:1,salario:1,_id:0}).count()
db.empresa.find().count()
Consultas
83
db.empresa.find().limit(2)
Operadores
84
db.empresa.find( { $or: [ {key1: value1}, {key2:value2} ] }).pretty()
Atividade 2
85
Atividade 3
86
Código Java
87
Conexão do MongoDB com o Java
88
Top Related