View a markdown version of this page

Query federate SPARQL in Neptune utilizzando l'estensione SERVICE - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Query federate SPARQL in Neptune utilizzando l'estensione SERVICE

Amazon Neptune supporta completamente l'estensione delle query federate SPARQL che utilizza la parola chiave SERVICE. Per ulteriori informazioni, consulta Query federate SPARQL 1.1.

La parola chiave SERVICE indica al motore di query SPARQL di eseguire una parte della query rispetto a un endpoint SPARQL remoto e di comporre il risultato della query finale. Sono possibili solo le operazioni READ. Le operazioni WRITE e DELETE non sono supportate. Neptune può eseguire solo query federate su endpoint SPARQL accessibili all'interno del proprio cloud privato virtuale (VPC). Tuttavia, è anche possibile utilizzare un proxy inverso nel VPC per rendere accessibile un'origine dati esterna all'interno del VPC.

Nota

Quando SPARQL SERVICE viene utilizzato per federare una query a due o più cluster Neptune nello stesso VPC, i gruppi di sicurezza devono essere configurati per consentire a tutti i cluster Neptune di parlare tra loro.

Importante

La federazione SPARQL 1.1 effettua richieste di servizio per tuo conto quando trasferisci query e parametri a endpoint SPARQL esterni. È tua responsabilità verificare che gli endpoint SPARQL esterni soddisfino i requisiti di sicurezza e gestione dei dati dell'applicazione.

Esempio di una query federata Neptune

Il seguente esempio semplice mostra il funzionamento di query federate SPARQL.

Supponiamo che un cliente invii la seguente richiesta a at. Neptune-1http://neptune-1:8182/sparql

SELECT * WHERE { ?person rdf:type foaf:Person . SERVICE <http://neptune-2:8182/sparql> { ?person foaf:knows ?friend . } }
  1. Neptune-1valuta il primo pattern di query (Q-1)?person rdf:type foaf:Person, ovvero utilizza i risultati per risolvere ?person in Q-2(?person foaf:knows ?friend) e inoltra il pattern risultante a at. Neptune-2http://neptune-2:8182/sparql

  2. Neptune-2valuta Q-2e invia i risultati a. Neptune-1

  3. Neptune-1unisce le soluzioni per entrambi i modelli e invia i risultati al cliente.

Questo flusso è mostrato nel seguente diagramma.

Diagramma di flusso che mostra i modelli di query federate SPARQL in fase di valutazione e le risposte inviate al client.
Nota

Per impostazione predefinita, il sistema di ottimizzazione determina a che punto dell'esecuzione della query viene eseguita l'istruzione SERVICE. È possibile sostituire questo posizionamento utilizzando l'hint di query joinOrder.

Controllo degli accessi per query federate in Neptune

Neptune AWS Identity and Access Management utilizza (IAM) per l'autenticazione e l'autorizzazione. Il controllo degli accessi per una query federata può riguardare più istanze database Neptune. Queste istanze potrebbero avere requisiti diversi per il controllo degli accessi. In alcune circostanze, questo può limitare la possibilità di effettuare una query federata.

Considerate il semplice esempio presentato nella sezione precedente. Neptune-1chiamate Neptune-2con le stesse credenziali con cui è stata chiamata.

  • Se Neptune-1richiede l'autenticazione e l'autorizzazione IAM, ma Neptune-2non lo fa, tutto ciò che serve sono le autorizzazioni IAM appropriate per Neptune-1effettuare la query federata.

  • Se Neptune-2entrambi richiedono l'autenticazione Neptune-1e l'autorizzazione IAM, è necessario allegare le autorizzazioni IAM per entrambi i database per effettuare la query federata. Entrambi i cluster devono inoltre trovarsi nello stesso AWS account e nella stessa regione. Cross-region and/or Le architetture di query federate tra account non sono attualmente supportate.

  • Tuttavia, nel caso in cui non è IAM-enabled ma Neptune-1è, non Neptune-2è possibile effettuare una query federata. Il motivo è che non è Neptune-1possibile recuperare le credenziali IAM e passarle per Neptune-2autorizzare la seconda parte della query.