Conector do Amazon Athena para o Neptune - Amazon Athena

Conector do Amazon Athena para o Neptune

O Amazon Neptune é um serviço de banco de dados de grafos rápido, confiável e totalmente gerenciado que facilita a criação e a execução de aplicações que trabalham com conjuntos de dados altamente conectados. O mecanismo de banco de dados de grafos especificamente projetado e de alta performance armazena bilhões de relacionamentos de maneira ideal e consulta gráficos com latência de poucos milissegundos. Para obter mais informações, consulte o Manual do usuário do Neptune.

O conector do Neptune no Amazon Athena permite que o Athena se comunique com a instância de banco de dados de grafos do Neptune, tornando seus dados de grafos do Neptune acessíveis para consultas SQL.

Se você tiver o Lake Formation habilitado em sua conta, o perfil do IAM para seu conector Lambda federado para Athena que você implantou no AWS Serverless Application Repository deve ter acesso de leitura ao AWS Glue Data Catalog no Lake Formation.

Pré-requisitos

O uso do conector Neptune requer as três etapas a seguir.

Limitações

No momento, o conector Neptune tem a seguinte limitação.

  • A projeção de colunas, incluindo a chave primária (ID), não é compatível.

Configuração de um cluster do Neptune

Se você não tiver um cluster do Amazon Neptune e um conjunto de dados de gráfico de propriedades existentes que gostaria de usar, você deverá configurar um.

Verifique se você tem um gateway da Internet e um gateway NAT na VPC que hospeda seu cluster Neptune. As sub-redes privadas que a função do Lambda do conector Neptune usa devem ter uma rota para a Internet por meio desse gateway NAT. A função do Lambda do conector Neptune usa o gateway NAT para se comunicar com o AWS Glue.

Para obter instruções sobre como configurar um novo cluster do Neptune e carregá-lo com um conjunto de dados de amostra, consulte Exemplo de configuração do cluster Neptune em GitHub.com.

Configuração de um AWS Glue Data Catalog

Diferentemente dos armazenamentos de dados relacionais tradicionais, os nós e bordas do banco de dados gráfico do Neptune não usam um esquema definido. Cada entrada pode ter diferentes campos e tipos de dados. No entanto, como o conector Neptune recupera metadados do AWS Glue Data Catalog, você deve criar um banco de dados do AWS Glue que tenha tabelas com o esquema necessário. Depois de criar o banco de dados e as tabelas do AWS Glue, o conector poderá preencher a lista de tabelas disponíveis para consulta no Athena.

Habilitar a correspondência de colunas sem distinção entre maiúsculas e minúsculas

Para resolver os nomes das colunas da tabela do Neptune com a capitalização correta, mesmo quando os nomes das colunas estão em minúsculas no AWS Glue, é possível configurar o conector do Neptune para correspondência sem distinção entre maiúsculas e minúsculas.

Para habilitar esse atributo, defina a variável de ambiente da função do Lambda do conector Neptune enable_caseinsensitivematch como true.

Especificar o parâmetro de tabela glabel do AWS Glue para nomes de tabelas com distinção entre maiúsculas e minúsculas

Como o AWS Glue é compatível apenas com nomes de tabelas em letras minúsculas, é importante especificar o parâmetro glabel da tabela do AWS Glue ao criar uma tabela do AWS Glue para o Neptune e que a tabela do Neptune inclua distinção entre maiúsculas e minúsculas.

Na definição da tabela do AWS Glue, inclua o parâmetro glabel e defina seu valor para o nome da tabela com a capitalização original. Isso garante que a capitalização correta seja preservada quando o AWS Glue interagir com a tabela do Neptune. O exemplo a seguir define o valor de glabel para o nome de tabela Airport.

glabel = Airport
Definir a propriedade de tabela glabel do AWS Glue para preservar a capitalização do nome da tabela em uma tabela do Neptune

Para obter mais informações sobre como configurar um AWS Glue Data Catalog para trabalhar com o Neptune, consulte Set up AWS Glue Catalog em GitHub.com.

Performance

O conector do Athena para o Neptune realiza a passagem direta de predicados para diminuir os dados examinados pela consulta. No entanto, os predicados que usam a chave primária conduzem a falhas na consulta. As cláusulas LIMIT reduzem a quantidade de dados verificados, mas se você não fornecer um predicado, deverá aguardar que as consultas SELECT com uma cláusula LIMIT verifiquem, no mínimo, 16 MB de dados. O conector Neptune é resiliente ao controle de utilização devido à simultaneidade.

Consultas de passagem

O conector Neptune é compatível com consultas de passagem. Você pode usar esse atributo para executar consultas Gremlin em gráficos de propriedades e executar consultas SPARQL em dados RDF.

Para usar consultas de passagem com o Neptune, use a seguinte sintaxe:

SELECT * FROM TABLE( system.query( DATABASE => 'database_name', COLLECTION => 'collection_name', QUERY => 'query_string' ))

O exemplo a seguir filtra a consulta de passagem do Neptune para aeroportos com o código ATL. As aspas simples duplas são para escapar.

SELECT * FROM TABLE( system.query( DATABASE => 'graph-database', COLLECTION => 'airport', QUERY => 'g.V().has(''airport'', ''code'', ''ATL'').valueMap()' ))

Recursos adicionais

Para obter mais informações sobre esse conector, visite o site correspondente em GitHub.com.