Introdução ao no sql e mongodb

Preview:

Citation preview

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" : "juliocartier@gmail.com", "mensagem" : "Mensagem de Teste" }

db.contato.find().pretty()

Atualizar Dados

71

db.contato.update({nome: ‘Julio Cartier’’}, {$set: {email: ‘julio.cart@gmail.com’}})

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