【Neo4j查询优化系列】如何快速统计节点的关系数

摘要:
在图形数据库中,我们经常需要计算节点上的关系数。如果使用PROFILE查看查询的执行步骤和成本,结果如下:当我们计算节点拥有的关系数时,我们看到生成了8个dbhits,并执行了count()生成的EagleAggregation操作。查询结果告诉我们,该节点有7个关系。事实上,当Neo4j数据库保存关系时,它会同时更新相关节点的关系计数器。计数器保存在数据库中并与节点关联。

在图数据库中我们经常需要统计节点上的关系数目。一种常见的查询写法是这样的:

MATCH (n:Person {name:‘Keanu Reeves’})-[]-() RETURN count(*);

上面的查询会返回代表基诺-李维斯的节点(节点标签为Person)上所有关系的总数,包括进入的和流出的关系。如果用PROFILE来看一下查询的执行步骤和成本,结果如下:

relcount1.jpg

我们看到在统计节点拥有的关系数目时,产生8次dbhits,以及执行count()产生的EagerAggregation操作。查询结果告诉我们该节点有7个关系。

事实上,Neo4j数据库在保存关系时会同时更新相关节点的关系计数器,该计数器保存在数据库中并和节点相关联。我们其实不需要真正读出节点上的关系来统计它们的数量,而只要从关系计数器中读取当前的数值即可。参见下面的查询:

PROFILE MATCH (n:Person {name:‘Keanu Reeves’}) RETURN size((n)-[]-())

relcount2.jpg

从查询计划中可以看出,读取关系计数器的操作是通过调用GetDegree(node, relationshiptype, direction)完成的,而且只有1次dbhit,无论实际关系的数量有多少。这里,因为我们没有指定关系类型和方向,第二个参数是None,第三个参数是BOTH。可以试试下面的查询来帮助理解GetDegree的用法:

PROFILE MATCH (n:Person {name:‘Keanu Reeves’}) RETURN size((n)-[:ACTED_IN]->())

本文链接:https://blog.csdn.net/GraphWay/article/details/88100842

免责声明:文章转载自《【Neo4j查询优化系列】如何快速统计节点的关系数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇fwrite文件写入数据基于JVisualVM的可视化监控下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【neo4j】简易使用说明

一、数据库简介 Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。 二、NEO4j的基本要素 1、实体节点 实体节...

Neo4j 爬坑笔记for3.2.6

官网语法,非常详尽:http://neo4j.com/docs/developer-manual/current/cypher/clauses/match/ A:请对应版本号,不同大版本可能会有很大区别 B:我会对我学习过程中遇到的难点详细说明,有些基本的东西会带过 C:  初学,有错误我以后会修改 ============================...

Neo4j社区版配置文件

#*****************************************************************# Neo4j configuration## For more details and a complete list of settings, please see# https://neo4j.com/docs/oper...

图形数据库 Neo4j 开发实战

本人用途:知识图谱 neo4j:图状数据库 官网地址:http://neo4j.com/docs/java-reference/current/ 中文API:https://www.w3cschool.cn/neo4j/neo4j_building_blocks.html Neo4j 简介 数据存储一般是应用开发中不可或缺的组成部分。应用运行中产生的...

Neo4j集群容器化部署

集群基本配置(示例) core servers: 10.110.10.11, 10.110.10.12, 10.110.10.13read replicas: 10.110.10.14, 10.110.10.15, 10.110.10.16 Neo4j图数据库分布式架构图:(详细可参考官方文档: https://neo4j.com/docs/operati...

踩一踩win7安装neo4j的坑

本文使用zip解压方式安装,下载社区版zip 解压到喜欢的文件夹,然后配置环境变量NEO4J_HOME=D: eo4j-community-3.5.5(自己的解压目录) 配置Path=%NEO4J_HOME%in 然后打开命令行,使用neo4j console 提示 “powershell”不是内部或外部命令,也不是可运行的程序或批处理文件问题 在环境...