我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

经过这么多篇文章的叙述,苏南大叔来描述一下一个历史坑的解决方案。就是说对于neo4j清库之后,browser左侧还是有残余数据的问题,例如:Node LabelsRelationship TypesProperty Keys。本文目前可以清除Node LabelsRelationship Types,暂时无法清除Property Keys

苏南大叔:neo4j图数据库,清库之后如何清理browser左侧残留数据 - 清理残留数据
neo4j图数据库,清库之后如何清理browser左侧残留数据(图5-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述neo4j利用apoc提供的功能,清除部分残余数据的问题。本文测试环境:win10neo4j社区版@4.4.3apoc@4.4.0。被清空的龙套数据,是官方的movie数据,可以通过:play movies获得更多信息。

前置阅读

本文中描述的信息,需要先理解一下清库的可能操作:

neo4j中安装使用apoc插件的基本方式:

然后,假设使用官方推荐的方式,清空了图中的数据。

match (n) detach delete n

再次打开browser,会看到左侧的数据中,Relationship Types数据没有,残留Node LabelsProperty Keys

苏南大叔:neo4j图数据库,清库之后如何清理browser左侧残留数据 - 残余数据展示
neo4j图数据库,清库之后如何清理browser左侧残留数据(图5-2)

清除Node Labels残余

对于Node Labels来说,原因是在相关数据上建立了索引或者约束。可以通过下面的语句清空残存的索引或约束信息:

call apoc.schema.assert({},{})

苏南大叔:neo4j图数据库,清库之后如何清理browser左侧残留数据 - 空的索引信息
neo4j图数据库,清库之后如何清理browser左侧残留数据(图5-3)

这里使用了apoc插件,安装方法如下:

如果没有安装apoc插件,会得到下面的类似错误信息:

Neo.ClientError.Procedure.ProcedureNotFound
There is no procedure with the name `apoc.schema.assert` registered for this database instance. Please ensure you've spelled the procedure name correctly and that the procedure is properly deployed.

苏南大叔:neo4j图数据库,清库之后如何清理browser左侧残留数据 - apoc-not-found
neo4j图数据库,清库之后如何清理browser左侧残留数据(图5-4)

剩余Property Keys残余

苏南大叔:neo4j图数据库,清库之后如何清理browser左侧残留数据 - 剩余残余属性信息
neo4j图数据库,清库之后如何清理browser左侧残留数据(图5-5)

解决剩余残余Property Keys,目前最可行的方式,就是物理删库。

然而都物理删库了,那么还执行楼上那么多清库语句干啥?对吧?所以,对于本文来说,这里待议。

官方讨论帖子:

帖子末尾的给出的store-utils是个非官方的copy方案,并且不支持最新的neo4j@4社区版,其推荐使用企业版内置的copy功能解决这个问题。详情参见:

参考文献

综述

本篇文章的存在价值,在于apoc插件的第一个实用案例。而对于解决清库带来的数据残留问题,本文也只是解决了一部分,彻底解决要看neo4j官方的态度了。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   neo4j    apoc