Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC - apoc.periodic.iterate()过程在4.0版本中的重大变化

作者:维韦克 萨兰(Vivek Saran)

适用版本:Neo4j 4.0 / 4.1

标签:APOC

 

在Neo4j 3.5中,可以在一个事务中获取实体(节点、关系、路径)并安全地在另一个事务中重用。

然而在4.0中,这些实体将拥有返回它们的事务的引用。

对于任何创建新事务的APOC调用中,这会带来问题,例如 apoc.periodic.iterate(以及另外2个)。 从驱动查询(driving)声明中提出的任何实体都必须在任务查询(action)声明中重新绑定

这意味着我们基本上需要重新绑定源自不同事务的实体。

Rebinding意味着,做一个这样的查询:MATCH (n) WHERE id(n) = id(myknownnode)

 

例如,以下语句在3.5.x中完全没有问题:

CALL apoc.periodic.iterate('MATCH (:Account)-[r:ASSOCIATED_WITH]->() RETURN r',
    'CALL apoc.do.case(.....) YIELD value RETURN value',
     {batchSize: 10000, parallel: false, iterateList: true});

但是,在4.0.x中,上述声明需要修改为:

CALL apoc.periodic.iterate('MATCH (:Account)-[r:ASSOCIATED_WITH]->() RETURN id(r) as id',
    'MATCH ()-[r]->() WHERE id(r)=id CALL apoc.do.case(.....) YIELD value RETURN value',
    {batchSize: 10000, parallel: false, iterateList: true});

请注意,在第一个(外部驱动陈述)中,我们将RETURN r 更改为RETURN id(r) AS id

在第二个(内部陈述)中,我们在CALL apoc.do.case()之前插入了MATCH ()-[r]->() WHERE id(r)=id

 

对于来自APOC库中其他有用的过程,请参阅APOC用户指南4.0

### Neo4j APOC 插件功能与用法 APOC 是 Advanced Procedures on Cypher 的缩写,它是一个用于增强 Neo4j 功能的强大插件集合。以下是关于其主要特性和用途的具体说明: #### 数据处理和转换 APOC 提供了一系列过程来帮助用户更高效地操作数据。例如,可以利用 `apoc.periodic.iterate` 来批量导入大量节点或关系[^1]。此方法允许通过分批提交事务的方式减少内存占用并提高性能。 对于复杂的数据结构变换需求,APOC 还支持多种实用函数如 `apoc.map.mergeList` 和其他映射工具以便于灵活调整属性值[^2]。 #### 图形算法扩展 除了基本查询外,APOC 增加了许多内置图形分析能力,比如社区检测、最短路径计算等功能可以直接调用来解决实际业务场景中的难题[^3]。这些高级图运算能够极大地简化开发人员的工作流程而无需自行实现相应逻辑代码. #### 导入导出支持 该库也包含了丰富的文件读取/写出选项,涵盖了CSV JSON XML等多种常见格式之间的相互转化服务[^4]. 开发者可以通过简单的Cypher命令完成外部资源加载或者内部数据库状态保存动作. ```cypher CALL apoc.export.csv.query("MATCH (n) RETURN n", "/path/to/output.csv", {}) ``` 上述示例展示了如何将当前所有节点导出到指定位置的一个 CSV 文件当中去[^5]. #### 安全管理特性 另外值得一提的是,在企业环境中经常涉及到权限控制方面的要求;因此ApoC还特别设计了一些针对角色定义以及访问限制方面的解决方案[^6],从而保障敏感信息不会被未授权方获取到的同时又能满足日常运维需求. 综上所述,Neo4j APOC 不仅提供了强大的辅助手段让开发者更加便捷地构建基于图模型的应用程序架构;同时也考虑到了生产级别部署过程中可能遇到的各种挑战因素,是一款不可或缺的好帮手!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值