Buscar

Trabalho NOSQL N4J

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Linguagem de Programação de Banco de Dados
Maike Mansano
Marcos Libanori 
Marco A. Batista 
Vanderlei Bianchi Jr
Neo4J
O Neo4j é um banco de dados NoSQL, que armazena as informações representadas em grafos. Um grafo consiste em nós, interligados por relacionamentos. Ambos os nós e relacionamentos (conhecidos também por arestas, na teoria dos grafos) podem possuir atributos, armazenados no formato de chave/valor. Possui sua própria linguagem para realizar consultas e percorrer o grafo, chamada Cypher Query Language (CQL).
O que são Grafos?!?
Leonhard Euler - Matemático Suíço Inventor da teoria dos grafos (1736)
“Existe a possibilidade de se atravessar todas as pontes da cidade sem repetir nenhuma?”
A teoria dos grafos é um ramo da matemática que estuda as relações entre os objetos de um determinado conjunto. Para tal são empregadas estruturas chamadas de grafos, G(V,E), onde V é um conjunto não vazio de objetos denominados vértices e E é um subconjunto de pares não ordenados de V, chamados arestas.
Por que usar grafos?
Exemplo prático: Modelagem de Usinas Hidroelétricas 
Utilizando modelo relacional:
USINAS
Localização
Float
Capacidade
Float
Nome
Varchar
Cidades
Nome
Varchar
Populacao
INT
consumo
float
Atende
N
N
Vizinha
N
N
Pergunta:
De acordo com a população, qual a vizinhança de usinas devo formar?
Se uma usina cair, qual a melhor para assumir sem comprometer o sistema?
Como evitar subutilização?
Como monitorar?
Simples....
Isto não se parece
Com isto
Simples....
Mas se parece bem mais com isso
Utilizando modelo de grafos:
Itaipu
Itá
Latitude: 43.43
Longitude:56.33
Capacidade: 700
Latitude: 33.43
Longitude:32.33
Capacidade: 1400
Tenão_linha:230v
e_vizinha
Foz do Iguaçu
População:265000
consumo: 1200
Alimenta
Alimenta
Estrutura das Informações
Nos bancos de dados relacionais a linguagem que utilizamos para executar as queries (Consultas) se chama SQL, no neo4j, a linguagem que utilizamos se chama Cypher Query Language (CQL).
No SQL usamos tabelas e registros, no  N4J tabela se chama label e registro se chama node.
As relações entre as labels se chama relationship que pode ou não ter propriedades. 
No SQL se numa tabela temos os campos que representam valores dos registros, ex: nome, idade, sexo, no Cypher temos um node no formato key-value ou seja, object, ex: {nome: ”, idade: ”, sexo: ”}.
No N4J não precisamos definir campos para começar a cadastrar os nodes
 
Grafo no Neo4j
Um grafo é uma representação pictórica de um conjunto de objetos onde alguns pares de objetos estão conectados por links. É composto por dois elementos - nós (vértices) e relacionamentos (arestas).
Vértice – também chamado de node(nó em português), é um conjunto de propriedades do tipo chave e valor que representam uma entidade 
 Ex:
Representa um node da categoria Pessoa que possui o nome José
Aresta – São os relacionamentos, ela liga os vértices por meio de uma rede semântica. Uma aresta pode possuir um sentido, uma orientação e, se necessário, dados sobre esse relacionamento.
 Ex: 
Representa uma aresta onde relaciona José como marido de Maria
Requisitos de Sistemas
Processaodor
	Mínimo .................... Intel Core i3
	Recomendado .......... Intel Core i7 / IBM Power8
Memoria
	Mínimo .................... 2GB
	Recomendado .......... 16GB ou mais 
Disco HDD/SSD
	Mínimo 10GB 
Software Necessario
	OpenJDK 8 ou Oracle Java 8 / IBM Java 8
 
SO Suportado
	Ubuntu 14.04, 16.04
	Debian 8, 9
	 CentOS 6, 7
	 Fedora
	 Red Hat
	 Amazon Linux
	Windows Server 2012
Instalação
O NEO4J possui instalação muito simples e rápida, basta acessar o site e escolher entre as versões Business ou Communitye.
Business :  oferece alta capacidades e flexibilidade, com recursos de disponibilidade, gerenciamento, dimensionamento e escalabilidade de qualidade empresarial.
Community : Versão gratuita para testes e para aprender. Exclui serviços profissionais e suporte.
	 Após baixar o instalador no site e executa-lo, será necessário clicar em avançar algumas vezes até que comesse a extrair os arquivos.
	Após a instalação basta executar. Será aberta uma pequena janela onde terá um campo para configurar o local a ser salvo o banco e o botão “Start” que quando acionado inicializa o banco e gera uma URL padrão com a interface de programação pelo navegador.
	No primeiro acesso deverá ser configurado o usuário e senha de acesso.
	Usuário padrão é neo4j e a senha neo4j em seguida você será redirecionado para pagina onde possa alterar usuário e senha. 
	Feito isso esta pronto para ser utilizado.
Operações Básicas
Match – Função para selecionar nós
Localizando 2 nós específicos
Match(u1:USINA) (u2:USINA) Where u1.nome=“Itaipu” and u2.nome=“Itá”
Localizando todos os nós e os retornando
Match(n)
Return n
Operações Básicas
CREATE – Função para criar nós e relacionamentos
Criando um nó 
Create(:labelName {atributos utilizando chave valor})
EX: CREATE(:USINA {Latitude: “33.43”, Longitude: “32.33”, Capacidade: “1400”, Nome: “Itaipu”})
Criando um Relacionamento
Match(u1:USINA) Where u1.nome=“Itaipu” 
Match(u2:USINA) Where u2.nome=“Itá”
Create(u1)-[:e_vizinha {tensao_linha:230}]->(u2)
Operações Básicas
DELETE – Função para Excluir um nó ou um relacionamento
Excluindo um nó 
Match(u1:USINA) Where u1.nome=“Itaipu”
DELETE u1
Excluindo um nó com todos os relacionamentos
Match(u1:USINA) Where u1.nome=“Itaipu”
DETACH DELETE u1
Excluindo apenas os relacionamentos
Match(u1:USINA {nome: “Itaipu”}) –[r: e_vizinha]->()
DELETE r
19
Operações Básicas
SET – Função para atualizar ou remover propriedades de um nó
Atualizando
Match(u1:USINA) Where u1.nome=“Itaipu”
SET u1.nome= “Usina Itaipu”
Removendo
Match(u1:USINA) Where u1.nome=“Itaipu”
SET u1.nome= NULL RETURN u1
20
Vantagens x Desvantagens
Vantagens:
 - Rapido
 - Versão enterprise tem H.A extremamente robusta
 - Interface REST
Desvantagens:
 - Alto uso de memoria ram
- H.A e Backups só na versão Enterprise
Conclusão
O N4J é uma excelente ferramenta de armazenamento de dados, mas para obtermos o potencial máximo da ferramenta, não podemos modelar os dados conforme um banco de dados relacional, nem mesmo pensar que ela pode substituir qualquer outro modelo de banco de dados. Deve-se primeiro analisar qual o modelo de banco de dados melhor se modela na aplicação, pois assim como um banco relacional pode se tornar inviável em certos tipos de dados, os modelos de grafos também pode causar um grande problema para a aplicação final.
Obrigado!

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes