本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用服务扩展在 Neptune 中使用 SPARQL 联合查询
Amazon Neptune 完全支持使用 SERVICE 关键字的 SPARQL 联合查询扩展。(有关更多信息,请参阅 SPARQL 1.1 联合查询
SERVICE 关键字指示 SPARQL 查询引擎针对远程 SPARQL 终端节点执行查询的一部分,并组成最终查询结果。只能执行 READ 操作。不支持 WRITE 和 DELETE 操作。Neptune 只能对在其虚拟私有云 (VPC) 中可访问的 SPARQL 端点运行联合查询。但是,您也可以在 VPC 中使用反向代理使外部数据源在 VPC 内可供访问。
注意
当使用 SPARQL SERVICE 将查询联合到同一 VPC 中的两个或更多 Neptune 集群时,必须将安全组配置为允许所有这些 Neptune 集群相互通信。
重要
将查询和参数传递到外部 SPARQL 终端节点时,SPARQL 1.1 Federation 代表您发出服务请求。您负责验证外部 SPARQL 终端节点是否满足应用程序的数据处理和安全要求。
Neptune 联合查询的示例
以下简单示例显示了如何使用 SPARQL 联合查询。
假设客户向 at 发送了以下查询http://neptune-1:8182/sparql。Neptune-1
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-2at。http://neptune-2:8182/sparqlNeptune-2评估结果Q-2并将结果发送回给。Neptune-1
Neptune-1加入两种模式的解决方案,并将结果发送回给客户。
下图显示了该流程。
注意
默认情况下,优化器决定在查询执行的哪个时刻执行 SERVICE 指令。您可以使用 joinOrder 查询提示覆盖此位置。
Neptune 中联合查询的访问控制
Neptune 使用 AWS Identity and Access Management (IAM) 进行身份验证和授权。联合查询的访问控制可以涉及多个 Neptune 数据库实例。这些实例可能对访问控制有不同的要求。在某些情况下,这可能会限制您进行联合查询的能力。
考虑上一节中介绍的简单示例。 Neptune-1Neptune-2使用与调用时相同的凭据进行呼叫。
如果Neptune-1需要 IAM 身份验证和授权,但Neptune-2不需要,则您只需要相应的 IAM 权限Neptune-1即可进行联合查询。
如果Neptune-1Neptune-2两者都需要 IAM 身份验证和授权,则需要为两个数据库附加 IAM 权限才能进行联合查询。两个集群还必须位于同一个 AWS 账户和同一区域。 Cross-region and/or 目前不支持跨账户联合查询架构。
但是,如果Neptune-1不是 IAM-enabled 而是Neptune-2是,则无法进行联合查询。原因是Neptune-1无法检索您的 IAM 凭证并将其传递Neptune-2给以授权查询的第二部分。