Um banco de dados de grafos é uma coleção sistemática de dados que enfatiza as relações entre as diferentes entidades de dados. O banco de dados NoSQL usa a teoria matemática dos grafos para mostrar conexões de dados. Ao contrário dos bancos de dados relacionais, que armazenam dados em estruturas de tabela rígidas, os bancos de dados de grafos armazenam dados como uma rede de entidades e relacionamentos. Como resultado, esses bancos de dados geralmente oferecem melhor desempenho e flexibilidade, pois são mais adequados para modelar cenários do mundo real.

O que é um grafo

O termo “grafo” vem do campo da matemática. Um grafo contém uma coleção de nós e bordas.

Nós

Os nós são vértices que armazenam os objetos de dados. Cada nó pode ter um número e tipos de relacionamentos ilimitados.

Bordas

As bordas representam relacionamentos entre os nós. Por exemplo, bordas podem descrever relacionamentos, ações ou propriedade entre pais e filhos. Elas podem representar relações de um para muitos e de muitos para muitos. Uma borda sempre tem um nó inicial, um nó final, um tipo e uma direção.

Propriedades

Cada nó tem propriedades ou atributos que o descrevem. Em alguns casos, as bordas também têm propriedades. Grafos com propriedades também são chamados de grafos de propriedade.

Exemplo de gráfico

O grafo de propriedade a seguir mostra um exemplo de grafo de rede social. Considerando as pessoas (nós) e seus relacionamentos (bordas), é possível descobrir quem são os "amigos dos amigos" de uma pessoa específica, por exemplo, os amigos dos amigos de Howard.

Exemplo de grafo de rede social

Quais são os casos de uso de bancos de dados de grafos

Os bancos de dados de grafos são vantajosos em casos de uso como redes sociais, mecanismos de recomendação e detecção de fraudes quando usados para criar relacionamentos entre os dados e consultar rapidamente esses relacionamentos.

Detecção de fraudes

Os bancos de dados de grafos podem fazer uma prevenção sofisticada contra fraudes. Por exemplo, você pode usar relacionamentos em bancos de dados de grafos para processar transações financeiras quase em tempo real. Com consultas de grafos rápidas, você pode detectar se um comprador em potencial está usando o mesmo endereço de e-mail e cartão de crédito usado em um caso de fraude conhecido. Os bancos de dados de grafos também podem ajudá-lo a detectar fraudes através de padrões de relacionamento, como várias pessoas associadas a um endereço de e-mail pessoal ou várias pessoas compartilhando o mesmo endereço IP, mas residentes em localizações físicas diferentes.

Mecanismos de recomendação

O modelo de grafo é uma boa opção para aplicativos que fornecem recomendações. Você pode armazenar relacionamentos de grafo entre as categorias de informação, como os interesses, os amigos e o histórico de compras dos clientes. Você pode usar um banco de dados de grafos altamente disponível para fazer recomendações de produtos a um usuário com base em quais produtos foram comprados por outras pessoas que tem interesses e histórico de compras similares. Você também pode identificar pessoas que têm um amigo mútuo, mas que ainda não se conhecem, para fazer uma recomendação de amizade.

Otimização de rotas

Os problemas de otimização de rotas envolvem analisar um conjunto de dados e encontrar os valores que melhor se adequam a um cenário específico. Por exemplo, você pode usar um banco de dados de grafos para encontrar o seguinte:

  • A rota mais curta do ponto A ao B em um mapa, considerando vários caminhos.
  • O funcionário certo para um turno específico, analisando disponibilidades, localizações e habilidades variadas.
  • O maquinário ideal para operações considerando parâmetros como custo e vida útil do equipamento.

As consultas de grafos podem analisar essas situações com muito mais rapidez porque podem contar e comparar o número de ligações entre dois nós.

Descoberta de padrões

Os bancos de dados de grafos são adequados para descobrir relacionamentos complexos e padrões ocultos nos dados. Por exemplo, uma empresa de mídia social usa um banco de dados de grafos para distinguir entre contas de robôs e contas reais. Ele analisa a atividade da conta para descobrir conexões entre as interações da conta e a atividade do robô.

Gerenciamento de conhecimento

Os bancos de dados de grafos oferecem técnicas para integração de dados, dados vinculados e compartilhamento de informações. Eles representam metadados complexos ou conceitos de domínio em um formato padronizado e fornecem uma semântica rica para processamento de linguagem natural. Você também pode usar esses bancos de dados para grafos de conhecimento e gerenciamento de dados mestres. Por exemplo, algoritmos de machine learning distinguem entre a floresta amazônica e a marca Amazon usando modelos de grafos.

Quais são as vantagens dos bancos de dados de grafos

Um banco de dados de grafos é personalizado para gerenciar dados altamente conectados. À medida que a conexão e o volume dos dados modernos aumentam, os bancos de dados de grafos apresentam uma oportunidade de utilizar e analisar os dados de forma econômica. Aqui estão as três principais vantagens da análise de grafos.

Flexibilidade

O esquema e a estrutura dos modelos de grafos podem mudar com seus aplicativos. Os analistas de dados podem adicionar ou modificar estruturas de grafos existentes sem afetar as funções existentes. Não há necessidade de modelar domínios com antecedência.

Performance

Os modelos de banco de dados relacional se tornam menos ideais à medida que o volume e a profundidade dos relacionamentos aumentam. Isso resulta em duplicação e redundância de dados — várias tabelas precisam ser processadas para descobrir os resultados da consulta. Por outro lado, o desempenho do banco de dados de grafos melhora em várias ordens de magnitude a consulta a relacionamentos. O desempenho permanece constante mesmo quando o volume de dados de grafos aumenta.

Eficiência

As consultas de grafos são mais curtas e mais eficientes na geração dos mesmos relatórios em comparação com bancos de dados relacionais. As tecnologias de grafos aproveitam os nós vinculados. O cruzamento das associações ou dos relacionamentos é um processo muito rápido, visto que os relacionamentos entre os nós não são calculados no momento das consultas, mas persistem no banco de dados.

Como funciona a análise de grafos e os bancos de dados de grafos

Os bancos de dados de grafos funcionam usando uma linguagem de consulta padronizada e algoritmos de grafos.

Linguagens de consulta de grafos

As linguagens de consulta de grafos são usadas para interagir com um banco de dados de grafos. Similarmente ao SQL, a linguagem tem recursos para adicionar, editar e consultar dados. No entanto, essas linguagens aproveitam as estruturas de grafos subjacentes para processar consultas complexas com eficiência. Eles fornecem uma interface para que você possa fazer perguntas como:

  • Número de saltos entre os nós
  • Caminho mais longo/caminho mais curto/caminhos ideais
  • Valor dos nós

Apache TinkerPop Gremlin, SPARQL e openCypher são linguagens populares de consulta de grafos.

Algoritmos de grafos

Algoritmos de grafos são operações que analisam relacionamentos e comportamentos em dados interconectados. Por exemplo, eles exploram a distância e os caminhos entre os nós ou analisam as bordas de entrada e os nós vizinhos para gerar relatórios. Os algoritmos podem identificar padrões, anomalias, comunidades e caminhos comuns que conectam os elementos de dados. Alguns exemplos de algoritmos de grafos incluem:

Agrupamento em clusters

Aplicativos como processamento de imagens, estatísticas e mineração de dados usam o agrupamento em clusters para agrupar nós com base em características comuns. O agrupamento pode ser feito tanto em diferenças entre clusters quanto em semelhanças entre clusters.

Particionamento

Você pode particionar ou cortar grafos no nó com o menor número de bordas. Aplicativos como testes de rede usam particionamento para encontrar pontos fracos na rede.

As pesquisas ou cruzamentos de grafos podem ser de dois tipos — amplitude ou profundidade em primeiro lugar. A pesquisa primariamente de amplitude se move de um nó para o outro no grafo. É útil na descoberta ideal de caminhos. A pesquisa primariamente de profundidade se move ao longo de uma única ramificação para encontrar todas as relações de um determinado nó.

Quando os bancos de dados de grafos não são adequados

Um banco de dados de grafos dedicado fornece o maior valor para conjuntos de dados altamente conectados e qualquer análise que exija a busca de relacionamentos ocultos e aparentes. Se isso não se adequar ao seu caso de uso, outros tipos de banco de dados podem ser mais adequados.

Por exemplo, imagine um cenário em que você precise registrar o estoque de produtos por item. Você só precisa armazenar detalhes como nome do item e unidades disponíveis. Como você não precisa reter informações adicionais, as colunas na tabela não serão alteradas. Devido à natureza tabular, um banco de dados relacional é mais adequado para esses dados não relacionados.

Também é importante não usar bancos de dados de grafos simplesmente como estoques de chave-valor. Um resultado de pesquisa de uma chave conhecida não maximiza a função do que os bancos de dados de grafos foram criados para fazer.

Como a AWS pode oferecer suporte aos seus requisitos de banco de dados de grafos

O Amazon Neptune é um mecanismo de banco de dados de grafos com projeto específico e alta performance, otimizado para armazenar bilhões de relacionamentos e consultar grafos com latência de milissegundos. O Neptune oferece suporte a modelos de grafos populares: grafo de propriedades e o Resource Description Framework (RDF) do W3C. Ele também suporta as respectivas linguagens de consulta — Apache TinkerPop Gremlin e SPARQL — para permitir que você crie consultas que naveguem com eficiência por conjuntos de dados altamente conectados. Os principais atributos do Neptune incluem:

  • Tecnologia sem servidor — permitindo que você escale instantaneamente os workloads de grafos em incrementos refinados e economize até 90% nos custos do banco de dados em comparação com o provisionamento para capacidade máxima.
  • Altamente disponível, incluindo o Banco de Dados Global do Amazon Neptune para aplicativos distribuídos globalmente que oferecem suporte ao rápido desempenho de leitura local.
  • Armazenamento e computação desacoplados para que você possa aumentar o desempenho de leitura com até 15 réplicas de leitura que compartilham o mesmo armazenamento subjacente, sem precisar realizar gravações nos nós da réplica.
  • Altamente confiável e durável, com armazenamento tolerante a falhas e com recuperação automática, recuperação pontual, backups contínuos e muito mais. O Amazon Neptune torna seus dados duráveis em três AZs em uma região, replicando novas gravações de seis maneiras, enquanto você paga apenas por uma cópia.
  • Altamente seguro com criptografia padrão em repouso, isolamento de rede e auditoria avançada, ao mesmo tempo em que oferece a capacidade de controlar as permissões em nível de recursos com acesso refinado.
  • Ampla cobertura de conformidade, incluindo FedRAMP (moderado e alto) até SOC (1, 2 e 3), e é elegível para HIPAA.
  • Ele é totalmente gerenciado, portanto você não precisa mais se preocupar com tarefas de gerenciamento de banco de dados, como provisionamento de hardware, aplicações de patches de software, instalação, configuração ou backups.

Comece a usar os bancos de dados de grafos na AWS criando uma conta gratuita hoje mesmo.

Introdução ao Amazon Neptune
Comece a usar o Amazon Neptune sem servidor