有没有可能将Neo4j图分布在多个服务器上,其中服务器1上的顶点A与服务器2上的顶点B边连接?到目前为止,我所能找到的都是关于Neo4j分片的讨论,但我找不到任何地方特别指出边缘可以跨越服务器。
ozxc1zmp1#
不,关系无法连接不同服务器上的节点。如果存在这样的功能,它将比所有数据都位于同一位置要慢得多,而且查询失败率也会更高(由于超时和连接丢失等原因)。
i2loujxw2#
资源描述框架(RDF)图模型[1]本身就支持这种类型的功能。您可以使用SPARQL 1.1查询语言的Federated Query功能跨多个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/](https://www.w3.org/RDF/) [2] https://www.w3.org/TR/sparql11-property-paths/
SERVICE
i7uaboj43#
Neo4j社区版仅支持单节点图查询,不支持分布式场景。如果您需要分布式场景,我可能会推荐您使用GraphScope。GraphScope是一个快速,高效,高度可扩展的图形查询系统,支持跨多个服务器分发图形。借助GraphScope中的交互式图形查询引擎GAIA-IR,您可以轻松地整合各种图形查询语言,如Cypher,Gremlin,这要归功于其统一的中间表示层。以下是GraphScope中的图查询示例:
import graphscope sess = graphscope.session(num_workers=4) graph = sess.g() graph = graph.add_edges('/path/to/dataset') interactive = sess.interactive(graph) print(interactive.cypher('...')) sess.close()
字符串您可以参考此article来了解GAIA-IR的设计以及如何部署和使用它。免责声明:我是GraphScope的作者。
3条答案
按热度按时间ozxc1zmp1#
不,关系无法连接不同服务器上的节点。
如果存在这样的功能,它将比所有数据都位于同一位置要慢得多,而且查询失败率也会更高(由于超时和连接丢失等原因)。
i2loujxw2#
资源描述框架(RDF)图模型[1]本身就支持这种类型的功能。您可以使用SPARQL 1.1查询语言的Federated Query功能跨多个RDF存储查询数据集。
例如,使用包含英超足球俱乐部信息的本地数据集,并将此数据与可公开访问的RDF存储(DBpedia)相结合:
字符串
SPARQL中的
SERVICE
子句可用于提供这种联合方法。RDF是否适合您取决于您需要向图询问的查询类型。属性图数据库和查询语言通常更擅长检索遍历路径(开始和结束之间的所有对象)。SPARQL可以迭代地遍历[2],但是表达一个检索遍历的所有中间组件的查询可能是不平凡的。
[1][https://www.w3.org/RDF/](https://www.w3.org/RDF/) [2] https://www.w3.org/TR/sparql11-property-paths/
i7uaboj43#
Neo4j社区版仅支持单节点图查询,不支持分布式场景。
如果您需要分布式场景,我可能会推荐您使用GraphScope。GraphScope是一个快速,高效,高度可扩展的图形查询系统,支持跨多个服务器分发图形。借助GraphScope中的交互式图形查询引擎GAIA-IR,您可以轻松地整合各种图形查询语言,如Cypher,Gremlin,这要归功于其统一的中间表示层。
以下是GraphScope中的图查询示例:
字符串
您可以参考此article来了解GAIA-IR的设计以及如何部署和使用它。免责声明:我是GraphScope的作者。