Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.3) - 搜索子图

本文介绍了Neo4j中利用APOC库的subgraphNodes()和subgraphAll()进行搜索子图操作,这两种方法从指定节点出发,沿着特定关系遍历。与路径扩展不同,它们不返回所有路径,适用于寻找节点邻居、判断连通性和子图划分等场景,具有较高的执行效率。

​​​​​1. 定义

        搜素子图的过程使用与路径扩展类似的方法从指定节点出发、沿着特定关系类型遍历,并返回能够到达的所有节点和关系。

        APOC提供两种搜素子图的过程:

        - subgraphNodes():仅返回可以到达的节点;

        - subgraphAll():返回节点和关系。

        与路径扩展过程expand和expandConfig不同的是,上述两个过程不返回所有的路径。

2. 应用

搜索子图的过程不会遍历所有可能的路径(即节点和边的所有可能序列),因此在执行效率和成本方面都优于路径扩展过程。适用的场景包括:

- 寻找节点的k-度邻居(k-nearest neighbours);

- 判断节点之间是否连通;

- 对图进行划分子图的操作。

 

3. 过程调用接口

        subgraphNodes()和subgraphAll()的调用接口完全一样,唯一的区别是返回结果不一样:subgraphNodes()返回节点列表,而subgraphAll()返回节点和关系列表。

 

 

 

 

过程接口

 

 

CALL apoc.path.subgraphNodes(
   startNode <id>Node/list,
   { maxLevel,
     relationshipFilter,
     labelFilter,
     bfs:true,
     filterStartNode:true,
     limit:-1,
     optional:false,
     endNodes,
     terminatorNodes,
     sequence,
     beginSequenceAtStart:true
   }
) YIELD node
 

 

 

 

 

过程接口

 

 

CALL apoc.path.subgraphAll(
&nbs

Neo4j 社区版支持使用 `neo4j-admin` 工具进行数据库的备份和恢复操作。通过 `neo4j-admin backup` 命令,用户可以创建数据库的完整备份,确保在发生数据损坏或系统故障时能够恢复数据[^3]。该命令的基本使用方式如下: ```bash neo4j-admin backup --backup-dir=/path/to/backup --name=latest-backup --from=neo4j://localhost:7687 ``` 上述命令将数据库备份至指定目录,并标记为 `latest-backup`。备份过程中,工具会复制数据库的存储文件,包括节点、关系、属性和索引等信息,确保备份的完整性。 在需要恢复数据时,可以使用 `neo4j-admin restore` 命令将数据库恢复至备份状态。恢复操作会覆盖当前数据库的内容,因此在执行前应确保已有数据已做好备份。其基本用法如下: ```bash neo4j-admin restore --backup-dir=/path/to/backup --name=latest-backup --database=neo4j --from=/path/to/backup/latest-backup ``` 执行恢复后,Neo4j 会将备份中的数据重新加载至指定数据库中。需要注意的是,恢复操作应在数据库停止状态下进行,以确保数据一致性[^3]。 此外,在执行备份和恢复操作前,建议使用 `neo4j-admin check-consistency` 验证数据库的完整性,以确保备份数据的可靠性。该命令能够检测存储文件的结构是否完整,包括节点、关系、属性和索引的一致性,并输出检查结果[^3]。 --- ### 数据备份与恢复的注意事项 - **备份路径权限**:执行备份和恢复操作的用户需要具备对目标目录的读写权限,否则可能导致操作失败。 - **数据库状态**:为了确保数据一致性,建议在执行备份和恢复操作时关闭 Neo4j 数据库服务。 - **版本兼容性**:备份和恢复操作需确保 Neo4j 版本兼容性,不同版本之间可能存在存储格式差异,导致恢复失败。 --- ### 示例:完整备份与恢复流程 ```bash # 停止 Neo4j 服务 neo4j stop # 执行数据库备份 neo4j-admin backup --backup-dir=/var/backups/neo4j --name=neo4j_backup_20231001 --from=neo4j://localhost:7687 # 恢复数据库 neo4j-admin restore --backup-dir=/var/backups/neo4j --name=neo4j_backup_20231001 --database=neo4j --from=/var/backups/neo4j/neo4j_backup_20231001 # 启动 Neo4j 服务 neo4j start ``` --- ###
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值