本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SPARQL Neptune 中的聯合查詢使用 SERVICE
延伸模組
Amazon Neptune SPARQL 完全支援使用 SERVICE
關鍵字的聯合查詢延伸。(如需詳細資訊,請參閱 SPARQL 1.1 聯合查詢
注意
從 版本 1.0.1.0.200463.0 (2019 年 10 月 15 日) 開始就可以使用這項功能。
SERVICE
關鍵字會指示SPARQL查詢引擎針對遠端SPARQL端點執行一部分查詢,並撰寫最終查詢結果。只有 READ
操作是可行的。不支援 WRITE
和 DELETE
操作。Neptune 只能針對其虛擬私有雲端 () 內可存取的SPARQL端點執行聯合查詢VPC。不過,您也可以在 中使用反向代理VPC,讓外部資料來源在 中存取VPC。
注意
當 SPARQL SERVICE
用於將查詢聯合到相同 中的兩個或多個 Neptune 叢集時VPC,必須設定安全群組,以允許所有這些 Neptune 叢集彼此通訊。
重要
SPARQL 1.1 聯合在將查詢和參數傳遞至外部SPARQL端點時,代表您提出服務請求。您有責任驗證外部SPARQL端點是否符合應用程式的資料處理和安全性要求。
Neptune 聯合查詢的範例
下列簡單範例顯示SPARQL聯合查詢的運作方式。
假設客戶將以下查詢傳送至 Neptune-1,網址為 http://neptune-1:8182/sparql
。
SELECT * WHERE { ?person rdf:type foaf:Person . SERVICE <http://neptune-2:8182/sparql> { ?person foaf:knows ?friend . } }
Neptune-1 評估第一個查詢模式 (Q-1),即
?person rdf:type foaf:Person
,會使用結果來解析 Q-2 (?person foaf:knows ?friend
) 中的?person
,並將產生的模式轉送至 Neptune-2,網址為http://neptune-2:8182/sparql
。Neptune-2 評估 Q-2,並將結果傳回至 Neptune-1。
Neptune-1 聯結這兩種模式的解決方案,並將結果傳回給客戶。
下圖顯示此流程。
注意
根據預設,最佳化工具會確定 SERVICE
指令在查詢執行中的哪個點執行。您可以使用 joinOrder 查詢提示覆寫此置放。
Neptune 中聯合查詢的存取控制
Neptune 使用 AWS Identity and Access Management (IAM) 進行身分驗證和授權。聯合查詢的存取控制可涉及多個 Neptune 資料庫執行個體。這些執行個體可能會有不同的存取控制需求。在某些情況下,這會限制您進行聯合查詢的能力。
考慮上一節中展示的簡單範例。Neptune-1 會透過呼叫其所用的同一憑證呼叫 Neptune-2。
如果 Neptune-1 需要IAM身分驗證和授權,但 Neptune-2 不需要,則您只需要 Neptune-1 的適當IAM許可,即可進行聯合查詢。
如果 Neptune-1 和 Neptune-2 都需要IAM身分驗證和授權,您需要連接兩個資料庫的IAM許可,才能進行聯合查詢。兩個叢集也必須位於相同的 AWS 帳戶和相同的 區域。目前不支援跨區域和/或跨帳戶聯合查詢架構。
不過,如果 Neptune-1 未IAM啟用 ,但 Neptune-2 已啟用,則無法進行聯合查詢。原因是 Neptune-1 無法擷取您的IAM憑證,並將其傳遞給 Neptune-2,以授權查詢的第二部分。