Baixe o app para aproveitar ainda mais
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!
Compartilhar