是否可以在服务器 1 上的顶点 A 与服务器 2 上的顶点 B 边连接的多个服务器上分发 Neo4j 图?
到目前为止,我能找到的只是关于 Neo4j 分片的讨论,但我找不到任何地方明确指出边缘可以跨越服务器。
是否可以在服务器 1 上的顶点 A 与服务器 2 上的顶点 B 边连接的多个服务器上分发 Neo4j 图?
到目前为止,我能找到的只是关于 Neo4j 分片的讨论,但我找不到任何地方明确指出边缘可以跨越服务器。
FWIW,资源描述框架 (RDF) 图模型 [1] 原生支持这种类型的功能。您可以使用 SPARQL 1.1 查询语言的联合查询功能跨多个 RDF 存储查询数据集。
使用包含英超足球(足球)俱乐部信息的本地数据集并将此数据与可公开访问的 RDF 商店(DBpedia)相结合的示例:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX soccer: <http://www.example.com/soccer#>
SELECT distinct ?nickName ?airportName ?cityName ?airportID {
?soccerTeam dbo:city ?city .
?soccerTeam soccer:nickname ?nickName .
SERVICE <http://dbpedia.org/sparql> {
BIND ("LHR" as ?airportID)
?airport dbo:iataLocationIdentifier ?airportID ;
dbo:city ?city ;
rdfs:label ?airportName .
?city rdfs:label ?cityName .
SPARQL 中的SERVICE
子句可用于提供这种联合方式。
RDF 是否适合您取决于您需要询问图形的查询类型。属性图数据库和查询语言通常更擅长检索遍历的路径(开始和结束之间的所有对象)。SPARQL 可以迭代地遍历 [2],但是表达一个检索遍历的所有中间组件的查询可能并非易事。
[1] https://www.w3.org/RDF/ [2] https://www.w3.org/TR/sparql11-property-paths/
不,关系无法连接不同服务器上的节点。
如果存在这样的能力,它将比将所有数据放在一起要慢得多,并且还会遭受更高的查询失败率(由于超时和连接断开等原因)。