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 Usar blocos de anotações de grafos. Ou se quiser criar um banco de dados do Neptune imediatamente, consulte Usando uma AWS CloudFormation pilha para criar um cluster de banco de dados Neptune.

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

Do que exatamente se trata um banco de dados de grafos?

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 uma aplicação equivalente usando um banco de dados relacional exige que você crie várias tabelas com várias chaves externas e, depois, redija consultas SQL 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: é possível armazenar requisitos regulatórios complexos na forma de grafos e consultá-los para detectar situações em que eles possam se aplicar às suas operações empresariais diárias.

  • 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:

  • O Gremlin é uma linguagem de percurso de grafos de propriedades. Uma consulta no Gremlin é um percurso composto por etapas distintas, cada uma das quais segue uma borda até um nó. Consulte a documentação do Gremlin em Apache TinkerPop3 para obter mais informações.

    A implementação do Gremlin no Neptune tem algumas diferenças em relação a outras implementações, principalmente ao usar o Gremlin-Groovy (as consultas do Gremlin enviadas como texto serializado). Para obter mais informações, consulte Conformidade com os padrões do Gremlin no Amazon Neptune.

  • openCypher: openCypher é uma linguagem de consulta declarativa para grafos de propriedades originalmente desenvolvida pela Neo4j, que se tornou de código aberto em 2015, e contribuiu para o projeto openCypher sob uma licença de código aberto Apache 2. Consulte o documento Cypher Query Language Reference (Version 9) para saber a especificação da linguagem, bem como o Guia de Estilo da Cypher para obter informações adicionais.

  • O SPARQL é uma linguagem de consulta declarativa para dados do RDF baseada na correspondência do padrão de grafo padronizado pelo World Wide Web Consortium (W3C) e descrito em SPARQL 1.1 Overview e na especificação SPARQL 1.1 Query Language. Consulte Conformidade com os padrões SPARQL no Amazon Neptune para obter detalhes específicos sobre a implementação do SPARQL no Neptune.

Exemplos de consultas correspondentes do Gremlin e do 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')

Veja uma consulta do SPARQL que exibe 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 triplo de Resource Description Framework (RDF) tem uma URI associada. No exemplo acima, o prefixo do URI é intencionalmente curto.

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

Se você gosta de aprender com vídeos, a AWS oferece cursos on-line no AWS Online Tech Talks para ajudar você 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 de grafos pode resolver e como abordá-los, um dos melhores lugares para começar é o projeto do GitHub sobre arquiteturas de referência de grafos do Neptune.

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:

  • Data Models and Query Languages: essa seção mostra as diferenças entre o Gremlin e o SPARQL e como escolher entre eles.

  • Graph Data Modeling: trata-se de uma discussão completa sobre como tomar decisões de modelagem de dados de grafos, incluindo orientações detalhadas sobre modelagem de grafos de propriedades usando Gremlin e modelagem do RDF usando SPARQL.

  • Converting Other Data Models to a Graph Model: aqui você pode descobrir como converter um modelo de dados relacional em um modelo de grafos.

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