Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Requêtes fédérées SPARQL dans Neptune à l'aide de l'extension SERVICE
Amazon Neptune prend entièrement en charge l'extension de requête fédérée SPARQL qui utilise le mot-clé SERVICE. (Pour plus d'informations, consultez Requête fédérée SPARQL 1.1
Le mot-clé SERVICE indique au moteur de requête SPARQL qu'il doit exécuter une partie de la requête sur un point de terminaison SPARQL distant et composer le résultat de la requête finale. Seules les opérations READ sont possibles. Les opérations WRITE et DELETE ne sont pas prises en charge. Neptune ne peut exécuter des requêtes fédérées que sur des points de terminaison SPARQL accessibles au sein de son cloud privé virtuel (VPC). Toutefois, vous pouvez également utiliser un proxy inverse dans le VPC pour rendre une source de données externe accessible au sein du VPC.
Note
Lorsque SPARQL SERVICE est utilisé pour fédérer une requête à deux clusters Neptune ou plus dans le même VPC, les groupes de sécurité doivent être configurés pour autoriser tous ces clusters Neptune à communiquer entre eux.
Important
La fonction SPARQL 1.1 Federation effectue des demandes de service en votre nom lorsqu'elle transmet des requêtes et des paramètres à des points de terminaison SPARQL externes. Il vous incombe de vérifier que les points de terminaison SPARQL externes répondent aux exigences de sécurité et de gestion des données de votre application.
Exemple de requête fédérée Neptune
L'exemple simple suivant montre le fonctionnement des requêtes fédérées SPARQL.
Supposons qu'un client envoie la requête suivante à Neptune-1 athttp://neptune-1:8182/sparql.
SELECT * WHERE { ?person rdf:type foaf:Person . SERVICE <http://neptune-2:8182/sparql> { ?person foaf:knows ?friend . } }
Neptune-1évalue le premier modèle de requête (Q-1)
?person rdf:type foaf:Person, qui utilise les résultats à résoudre?persondans Q-2 (?person foaf:knows ?friend) et transmet le modèle résultant à Neptune-2 athttp://neptune-2:8182/sparql.Neptune-2évalue Q-2 et renvoie les résultats à. Neptune-1
Neptune-1associe les solutions pour les deux modèles et renvoie les résultats au client.
Ce flux est illustré dans le diagramme suivant.
Note
« Par défaut, l'optimiseur détermine à quel moment de l'exécution de la requête la déclaration SERVICE est exécutée. Vous pouvez annuler ce placement à l'aide de l'indicateur de requête joinOrder.
Contrôle d'accès pour les requêtes fédérées dans Neptune
Neptune utilise Gestion des identités et des accès AWS (IAM) pour l'authentification et l'autorisation. Le contrôle d'accès d'une requête fédérée peut impliquer plusieurs instances de base de données Neptune. Ces instances peuvent avoir des exigences différentes pour le contrôle d'accès. Dans certaines circonstances, cela peut limiter votre capacité à effectuer une requête fédérée.
Prenons l'exemple simple présenté dans la section précédente. Neptune-1appels Neptune-2 avec les mêmes informations d'identification que lors de l'appel.
Si l'authentification et l'autorisation IAM sont Neptune-1 requises, mais ce Neptune-2 n'est pas le cas, il vous suffit d'obtenir les autorisations IAM appropriées pour Neptune-1 effectuer la requête fédérée.
Si Neptune-2 les deux nécessitent une authentification Neptune-1 et une autorisation IAM, vous devez associer des autorisations IAM pour les deux bases de données afin d'effectuer la requête fédérée. Les deux clusters doivent également se trouver sur le même AWS compte et dans la même région. Cross-region and/or les architectures de requêtes fédérées entre comptes ne sont actuellement pas prises en charge.
Cependant, dans le cas où ce IAM-enabled n'Neptune-1Neptune-2est pas le cas, vous ne pouvez pas effectuer de requête fédérée. La raison en est que Neptune-1 vous ne pouvez pas récupérer vos informations d'identification IAM et les transmettre Neptune-2 pour autoriser la deuxième partie de la requête.