Conceitos básicos do Amazon Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conceitos básicos do Amazon Neptune

O Amazon Neptune é um serviço de banco de dados de grafos totalmente gerenciado que pode ser escalado para lidar com bilhões de relacionamentos e permite consultá-los com latência de milissegundos, por um custo baixo para esse tipo de capacidade.

Se você estiver procurando informações mais detalhadas sobre o Neptune, consulte Visão geral dos atributos do Amazon Neptune.

Se você já conhece grafos, acesse Usando Neptune com cadernos gráficos. Ou se quiser criar um banco de dados do Neptune imediatamente, consulte Criação de um cluster do Amazon Neptune usando AWS CloudFormation.

Caso contrário, é recomendável saber um pouco mais sobre bancos de dados de grafos antes de começar.

Conceitos-chave do banco de dados gráfico

Os bancos de dados de grafos são otimizados para armazenar e consultar os relacionamentos entre os itens de dados.

Eles armazenam itens de dados como vértices do grafo e os relacionamentos entre eles como bordas. Cada borda tem um tipo e é direcionada de um vértice (o início) para outro (o final). Os relacionamentos podem ser chamados de predicados e também de bordas, e os vértices às vezes também são chamados de nós. Nos chamados grafos de propriedades, tanto os vértices quanto as bordas também podem ter propriedades adicionais associadas a eles.

Veja um pequeno grafo representando amigos e hobbies em uma rede social:

Diagrama que mostra relacionamentos entre pessoas e hobbies em uma rede social.

As bordas são mostradas como setas nomeadas e os vértices representam pessoas e hobbies específicos com os quais elas se conectam.

Um simples percurso desse gráfico pode dizer o que os amigos de Justin curtem.

Por que usar um banco de dados de grafos?

Um banco de dados de grafos será uma escolha natural sempre que conexões ou relacionamentos entre entidades forem um elemento central dos dados que você está tentando modelar.

Por um lado, é fácil modelar as interconexões de dados como um grafo e, depois, redigir consultas complexas que extraiam informações reais do grafo.

A criação de um aplicativo equivalente usando um banco de dados relacional exige que você crie várias tabelas com várias chaves estrangeiras e, em seguida, escreva SQL consultas aninhadas e junções complexas. Essa abordagem não apenas se torna rapidamente complicada do ponto de vista da codificação, mas o desempenho se degrada rapidamente à medida que a quantidade de dados aumenta.

Por outro lado, um banco de dados de grafos como o Neptune pode consultar relacionamentos entre bilhões de vértices sem travar.

O que você pode fazer com um banco de dados de grafos?

Os grafos podem representar as inter-relações de entidades do mundo real de várias maneiras, em termos de ações, propriedade, parentesco, opções de compra, conexões pessoais, laços familiares, etc.

Veja algumas das áreas mais comuns em que bancos de dados de grafos são usados:

  • Grafos de conhecimento: os grafos de conhecimento permitem organizar e consultar todos os tipos de informações conectadas para responder a perguntas gerais. Usando um grafo de conhecimento, é possível adicionar informações tópicas aos catálogos de produtos e modelar diversas informações, como as contidas no Wikidata.

    Para saber mais sobre como os grafos de conhecimento funcionam e onde estão sendo usados, consulte Knowledge Graphs on AWS.

  • Grafos de identidade: em um banco de dados de grafos, é possível armazenar relacionamentos entre categorias de informações, como interesses de clientes, amigos e histórico de compras, e depois consultar esses dados para fazer recomendações personalizadas e relevantes.

    Por exemplo, é possível usar um banco de dados de grafos para fazer recomendações de produtos a um usuário com base em produtos que são comprados por outros que são adeptos do mesmo esporte e têm histórico de compras semelhante. Ou você pode identificar pessoas que têm um amigo em comum, mas que ainda não se conhecem e fazer uma recomendação de amizade.

    Grafos desse tipo são conhecidos como grafos de identidade e são amplamente usados para personalizar as interações com os usuários. Para saber mais, consulte Identity Graphs on AWS. Para começar a criar o próprio grafo de identidade, é possível começar com o exemplo Identity Graph Using Amazon Neptune.

  • Grafos de fraude: é um uso comum de bancos de dados de grafos. Eles podem ajudar você a monitorar compras com cartão de crédito e locais de compra para detectar um uso não característico ou detectar que um comprador está tentando usar o mesmo endereço de e-mail e cartão de crédito usados em um caso de fraude conhecido. Eles podem permitir que você confira se há várias pessoas associadas a um endereço de e-mail pessoal ou várias pessoas em locais físicos diferentes que compartilham o mesmo endereço IP.

    Examine o grafo a seguir. O grafo a seguir mostra o relacionamento de três pessoas e respectivas informações de identidade. Cada pessoa tem um endereço, uma conta bancária e um número de identidade. No entanto, é possível ver que Matt e Justin compartilham o mesmo número de previdência social, o que é irregular e indica uma possível fraude realizada por um dos dois. Uma consulta a um grafo de fraude pode revelar conexões desse tipo para que possam ser avaliadas.

    Diagrama que mostra as relações entre pessoas e suas informações pessoais.

    Para saber mais sobre grafos de fraude e onde estão sendo usados, consulte Fraud Graphs on AWS.

  • Redes sociais: uma das primeiras áreas e mais comuns em que bancos de dados de grafos são usados é em aplicações de redes sociais.

    Por exemplo, suponha que você queira criar um feed social em um site. É possível usar com facilidade um banco de dados de grafos no back-end para fornecer resultados aos usuários que reflitam as atualizações mais recentes das respectivas famílias, amigos, pessoas cujas atualizações eles “curtem” e pessoas que moram perto deles.

  • Instruções de direção: um grafo pode ajudar a encontrar a melhor rota de um ponto de partida até um destino, considerando-se o tráfego atual e os padrões de tráfego típicos.

  • Logística: os grafos podem ajudar a identificar a maneira mais eficiente de usar os recursos de remessa e distribuição disponíveis para atender às necessidades do cliente.

  • Diagnóstico: os grafos podem representar árvores de diagnóstico complexas que podem ser consultadas para identificar a origem das falhas e dos problemas observados.

  • Pesquisa científica: com um banco de dados de grafos, é possível criar aplicações que armazenam e percorrem dados científicos e até mesmo informações médicas confidenciais usando criptografia em repouso. Por exemplo, é possível armazenar modelos de doença e interações genéticas. Você pode pesquisar padrões de gráficos em percursos proteicos para encontrar outros genes que podem ser associados a uma doença. É possível modelar compostos químicos como um grafo e consultar padrões em estruturas moleculares. Você pode correlacionar dados de pacientes de registros médicos em diferentes sistemas. Você pode organizar publicações de pesquisa por tópicos para encontrar informações relevantes rapidamente.

  • Regras regulatórias — Você pode armazenar requisitos regulatórios complexos na forma de gráficos e consultá-los para detectar situações em que possam se aplicar às suas operações day-to-day comerciais.

  • Topologia e eventos de rede: um banco de dados de grafos pode ajudar a gerenciar e proteger uma rede de TI. Ao armazenar a topologia da rede como um grafo, você também pode armazenar e processar vários tipos diferentes de eventos na rede. É possível responder a perguntas como quantos hosts estão executando uma aplicação específica. Você pode consultar padrões que possam mostrar que um host específico foi comprometido por um programa mal-intencionado e consultar dados de conexão que possam ajudar a rastrear o programa até o host original que o baixou.

Como consultar um grafo?

O Neptune é compatível com três linguagens de consulta para fins especiais projetadas para consultar dados de grafos de diferentes tipos. É possível usar essas linguagens para adicionar, modificar, excluir e consultar dados em um banco de dados de grafos do Neptune:

Exemplos de correspondência entre Gremlin e consultas SPARQL

Considerando-se o seguinte grafo de pessoas (nós) e os respectivos 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.

Diagrama que mostra os relacionamentos entre pessoas incluindo suas amizades.

Analisando o gráfico, você pode ver que Howard tem um amigo, Jack, e que Jack tem quatro amigos: Annie, Harry, Doug e Mac. Esse é um exemplo simples com um gráfico simples, mas esses tipos de consultas podem escalar em complexidade, tamanho do conjunto de dados e tamanho do resultado.

Veja uma consulta de percurso do Gremlin que exibe os nomes dos amigos dos amigos de Howard:

g.V().has('name', 'Howard').out('friend').out('friend').values('name')

Aqui está uma SPARQL consulta que retorna os nomes dos amigos dos amigos de Howard:

prefix : <#> select ?names where { ?howard :name "Howard" . ?howard :friend/:friend/:name ?names . }
nota

Cada parte de qualquer tripla do Resource Description Framework (RDF) tem um URI associado a ela. No exemplo acima, o URI prefixo é intencionalmente curto.

Realizar um curso on-line sobre o uso do Amazon Neptune

Se você gosta de aprender com vídeos, AWS oferece cursos on-line no AWS Online Tech Talks para ajudá-lo a começar. Um vídeo que apresenta bancos de dados de grafos é o seguinte:

    Graph Database introduction, deep-dive and demo with Amazon Neptune.

Aprofundar-se na arquitetura de referência

Ao pensar nos problemas que um banco de dados gráfico poderia resolver para você e como abordá-los, um dos melhores lugares para começar é o projeto de arquiteturas de referência gráfica Neptune. GitHub

Lá você pode encontrar descrições detalhadas dos tipos de workload de grafos e três seções que ajudam a criar um banco de dados de grafos eficaz:

Há também três seções que orientam você nas etapas específicas para usar o Neptune: