Connecteur Amazon Athena pour Neptune - Amazon Athena

Connecteur Amazon Athena pour Neptune

Amazon Neptune est un service de base de données orientée graphe entièrement géré et fiable, qui facilite la création et l'exécution d'applications fonctionnant avec des jeux de données hautement connectés. Neptune conçu spécialement, haute performance, le moteur de base de données graphique stocke des milliards de relations de manière optimale et des requêtes sur les graphiques avec une latence de seulement quelques millisecondes. Pour plus d'informations, consultez Neptune Guide de l'utilisateur.

Le connecteur Amazon Athena Neptune permet à Athena de communiquer avec votre instance de base de données orientée graphe Neptune, rendant vos données de graphe Neptune accessibles par des requêtes SQL.

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans le AWS Serverless Application Repository doit avoir un accès en lecture au AWS Glue Data Catalog dans Lake Formation.

Prérequis

L’utilisation du connecteur Neptune nécessite les trois étapes suivantes.

Limitations

Actuellement, le connecteur Neptune présente la limitation suivante.

  • La projection de colonnes, y compris la clé primaire (ID), n'est pas prise en charge.

Configuration d’un cluster Neptune

Si vous ne disposez pas d’un cluster Amazon Neptune et d’un jeu de données de graphes de propriétés que vous souhaitez utiliser, vous devez en configurer un.

Assurez-vous de disposer d’une passerelle Internet et d’une passerelle NAT dans le VPC qui héberge votre cluster Neptune. Les sous-réseaux privés utilisés par la fonction Lambda du connecteur Neptune doivent avoir une route vers Internet via cette passerelle NAT. La fonction Lambda du connecteur Neptune utilise la passerelle NAT pour communiquer avec AWS Glue.

Pour obtenir des instructions sur la configuration d’un nouveau cluster Neptune et son chargement avec un exemple de jeu de données, consultez la rubrique Sample Neptune Cluster Setup sur GitHub.com.

Configuration d’un AWS Glue Data Catalog

Contrairement aux magasins de données relatives traditionnels, les nœuds et les périphéries de base de données de graphe Neptune n’utilisent pas de schéma défini. Chaque entrée peut comporter des champs et des types de données différents. Toutefois, étant donné que le connecteur Neptune extrait les métadonnées du AWS Glue Data Catalog, vous devez créer une base de données AWS Glue contenant des tables avec le schéma requis. Après avoir créé la base de données et les tables AWS Glue, le connecteur peut fournir la liste des tables disponibles pour effectuer des requêtes auprès d’Athena.

Activation de la mise en correspondance non sensible à la casse des colonnes

Pour résoudre les noms de colonnes de votre table Neptune avec les casses correctes, même si les noms de colonnes sont tous en minuscules dans AWS Glue, vous pouvez configurer le connecteur Neptune pour une mise en correspondance non sensible à la casse.

Pour activer cette fonctionnalité, définissez la variable d'environnement de la fonction Lambda du connecteur Neptune de enable_caseinsensitivematch à true.

Spécification du paramètre de table glabel AWS Glue pour les noms de table relatifs à la casse

Étant donné que AWS Glue ne prend en charge que les noms de table en minuscules, il est important de spécifier le paramètre de table glabel AWS Glue lorsque vous créez une table AWS Glue pour Neptune et que votre nom de table Neptune inclut les casses.

Dans la définition de votre table AWS Glue, incluez le paramètre glabel et définissez sa valeur sur le nom de votre table avec sa casse d'origine. Cela veille à préserver la casse correcte lorsque AWS Glue interagit avec votre table Neptune. L'exemple suivant définit la valeur de glabel sur le nom de la table Airport.

glabel = Airport
Définition de la propriété de table glabel AWS Glue pour préserver la casse du nom de la table Neptune

Pour plus d'informations sur la configuration d'un AWS Glue Data Catalog à utiliser avec Neptune, consultez Configuration du catalogue AWS Glue sur GitHub.com.

Performances

Le connecteur Athena Neptune effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Cependant, les prédicats utilisant la clé primaire entraînent l’échec de la requête. Les clauses LIMIT réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes SELECT avec une clause LIMIT analysent au moins 16 Mo de données. Le connecteur Neptune résiste à la limitation due à la simultanéité.

Requêtes de transmission

Le connecteur Neptune prend en charge les requêtes de transmission. Vous pouvez utiliser cette fonctionnalité pour exécuter des requêtes Gremlin sur des graphes de propriétés et pour exécuter des requêtes SPARQL sur des données RDF.

Pour créer des requêtes de transmission avec Neptune, utilisez la syntaxe suivante :

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

L’exemple de requête de transmission Neptune ci-dessous filtre les aéroports utilisant le code ATL. Les guillemets simples doublés servent de guillemets d’échappement.

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

Ressources supplémentaires

Pour plus d'informations sur ce connecteur, consultez le site correspondant sur GitHub.com.