Introdução ao NoSQL e MongoDB Julio Cartier M. Gomes Sistemas de Informação - UFERSA (Angicos) 1
2
História 3
Quem utiliza Big Data ? 4
Big Data 5
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 Vantagens Nã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

Introdução ao no sql e mongodb