Article image
Roberto Filho
Roberto Filho15/10/2024 11:45
Compartilhe

Bancos de Dados de Grafos: Uma Visão Geral sobre Estrutura e Uso

    Tipos de Bancos de Dados NoSQL e o Neo4j

    Tipos de Bancos de Dados NoSQL

    Os bancos de dados NoSQL são uma alternativa flexível aos bancos relacionais, e existem diferentes tipos, cada um adequado para tipos específicos de dados e usos. Aqui estão os principais:

    • Document Store: Nesse tipo, os dados são armazenados em formato de documentos (como JSON, por exemplo). Cada documento pode conter diferentes dados, mas ainda é facilmente pesquisável.
    • Key-Value Store: É o tipo mais simples de banco NoSQL. Funciona como um grande dicionário, onde cada valor é associado a uma chave única.
    • Wide-Column Store: Esse tipo armazena os dados em colunas, mas com uma estrutura muito flexível. Cada linha pode ter um conjunto diferente de colunas.
    • Graph Store: Esse tipo de banco de dados armazena dados em forma de grafos, onde nós representam os dados e as arestas (ou vértices) representam os relacionamentos entre esses dados. É ideal para situações em que os relacionamentos são tão importantes quanto os dados em si, como redes sociais, sistemas de recomendação e detecção de fraudes. Um exemplo popular é o Neo4j.

    Bancos de Dados do Tipo Grafos

    Um grafo é composto por nós (ou vértices), que guardam os dados, e arestas (ou relacionamentos), que conectam os nós e mostram as interações entre eles.

    • Nós: São os objetos que armazenam as informações. Por exemplo, em uma rede social, cada pessoa pode ser representada como um nó.
    • Arestas: Representam as conexões entre os nós. Por exemplo, se uma pessoa é amiga de outra em uma rede social, isso seria uma aresta conectando esses dois nós.

    Os bancos de dados orientados a grafos são amplamente utilizados em detecção de fraudes, redes sociais, sistemas de recomendação, games, entre outros. Um dos bancos mais populares desse tipo é o Neo4j.

    Introdução ao Neo4j e Criando Sua Primeira Estrutura

    Agora, vamos explorar o Neo4j, um banco de dados orientado a grafos. Para começar a usar o Neo4j, você pode acessar a plataforma em sandbox.neo4j.com, criar uma conta e selecionar o Blank Sandbox. Quando ele estiver pronto, clique em Open para começar a trabalhar.

    Criando Nós no Neo4j

    Um nó pode representar uma pessoa, um objeto, ou qualquer entidade com propriedades. No Neo4j, usamos o comando CREATE para criar nós. Vamos criar um exemplo simples de um nó que representa um personagem:

    CREATE (:Client {name: "Bob Esponja", age: 28, hobbies: ["Caçar água-viva", "Comer Hambúrguer"]});
    

    image

    Aqui, estamos criando um nó chamado Client (uma label, ou etiqueta, que descreve o tipo de entidade) com as propriedades name, age, e hobbies.

    • Client é uma label.
    • name, age e hobbies são as propriedades do nó.

    Após criar o nó, podemos consultar os dados com o comando MATCH:

    MATCH (bob_esponja) RETURN bob_esponja;
    

    Esse comando retorna o nó bob_esponja que acabamos de criar.

    Criando Relacionamentos Entre Nós

    Vamos criar mais dois nós e um relacionamento entre eles. Aqui, o Lula Molusco vai bloquear o Patrick em nossa rede social:

    image

    Esse comando retorna o nó bob_esponja que acabamos de criar.

    Criando Relacionamentos Entre Nós

    Vamos criar mais dois nós e um relacionamento entre eles. Aqui, o Lula Molusco vai bloquear o Patrick em nossa rede social:

    CREATE (:Client {name: "Lula Molusco", age: 30, hobbies: ["Tocar Clarinete"]}) -[:Bloqueado]-> (:Client {name: "Patrick", hobbies: ["Caçar Água-Viva"]});
    

    image

    Nesse exemplo:

    • Criamos dois nós: Lula Molusco e Patrick.
    • Adicionamos um relacionamento [ ] entre eles, que indica que Lula Molusco bloqueou Patrick.

    Para verificar todos os nós e relacionamentos criados, usamos o seguinte comando:

    MATCH (todos) RETURN todos;
    

    image

    Agora podemos ver os nós e as conexões na interface visual do Neo4j.

    Criando Relacionamentos Entre Nós Já Existentes

    Se os nós já existem no banco de dados, podemos conectá-los criando relacionamentos entre eles. Vamos conectar o Lula Molusco e o Patrick que já foram criados:

    MATCH (lula:Client {name: "Lula Molusco"}), (patrick:Client {name: "Patrick"}) CREATE (lula)-[:Bloqueado]->(patrick);
    

    Agora, ao executar o comando de consulta novamente, podemos ver que o relacionamento foi estabelecido.

    image

    Excluindo Relacionamentos e Nós

    Podemos também remover um relacionamento ou até mesmo excluir um nó. Vamos excluir o relacionamento entre Lula Molusco e Patrick:

    MATCH (lula:Client {name: "Lula Molusco"})-[relaciona:Bloqueado]->() DELETE relaciona;
    

    image

    Isso remove o relacionamento Bloqueado. Se quisermos deletar o próprio Lula Molusco, usamos:

    MATCH (lula:Client {name: "Lula Molusco"}) DELETE lula;
    

    Agora, ao consultar novamente, veremos que o nó Lula Molusco foi excluído.

    MATCH (todos) RETURN todos;
    

    image

    Atualizando Dados e Labels

    Podemos atualizar as propriedades de um nó ou modificar suas labels. Por exemplo, se quisermos adicionar o hobby ao Patrick, fazemos o seguinte:

    MATCH (patrick:Client {name: "Patrick"}) SET patrick.hobbies = ["Comer hamburguer"];
    

    image

    Também podemos modificar a label de Client para Client_Premium:

    MATCH (patrick:Client {name: "Patrick"}) SET patrick:Client_Premium;
    

    Agora, Patrick faz parte de uma nova categoria chamada Client_Premium.

    image

    Compartilhe
    Comentários (0)