image

Bootcamps ilimitados + curso de inglês para sempre

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

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

  • #NoSQL
  • #Banco de Dados

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
Recomendados para você
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comentários (0)