neo4j图数据库,清库之后如何清理browser左侧残留数据
发布于 作者:苏南大叔 来源:程序如此灵动~经过这么多篇文章的叙述,苏南大叔来描述一下一个历史坑的解决方案。就是说对于neo4j
清库之后,browser
左侧还是有残余数据的问题,例如:Node Labels
、Relationship Types
、Property Keys
。本文目前可以清除Node Labels
和Relationship Types
,暂时无法清除Property Keys
。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述neo4j
利用apoc
提供的功能,清除部分残余数据的问题。本文测试环境:win10
,neo4j社区版@4.4.3
,apoc@4.4.0
。被清空的龙套数据,是官方的movie
数据,可以通过:play movies
获得更多信息。
前置阅读
本文中描述的信息,需要先理解一下清库的可能操作:
neo4j
中安装使用apoc
插件的基本方式:
然后,假设使用官方推荐的方式,清空了图中的数据。
match (n) detach delete n
再次打开browser
,会看到左侧的数据中,Relationship Types
数据没有,残留Node Labels
和Property Keys
。
清除Node Labels
残余
对于Node Labels
来说,原因是在相关数据上建立了索引或者约束。可以通过下面的语句清空残存的索引或约束信息:
call apoc.schema.assert({},{})
这里使用了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.
剩余Property Keys
残余
解决剩余残余Property Keys
,目前最可行的方式,就是物理删库。
然而都物理删库了,那么还执行楼上那么多清库语句干啥?对吧?所以,对于本文来说,这里待议。
官方讨论帖子:
- https://github.com/neo4j/neo4j/issues/11994
- https://neo4j.com/developer/kb/why-do-my-deleted-property-keys-appear/
帖子末尾的给出的store-utils
是个非官方的copy
方案,并且不支持最新的neo4j@4
社区版,其推荐使用企业版内置的copy
功能解决这个问题。详情参见:
参考文献
- https://newsn.net/say/neo4j-apoc.html
- https://newsn.net/say/neo4j-rm-database.html
- https://neo4j.com/labs/apoc/4.4/overview/apoc.schema/apoc.schema.assert/
综述
本篇文章的存在价值,在于apoc
插件的第一个实用案例。而对于解决清库带来的数据残留问题,本文也只是解决了一部分,彻底解决要看neo4j
官方的态度了。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。