Database 在Neo4J中逆转数据库更改

Database 在Neo4J中逆转数据库更改,database,neo4j,Database,Neo4j,我正在使用Neo4J作为数据库开发一个Wiki应用程序。我想知道什么是正确的程序来跟踪用户对主题的编辑,以便mods可以在需要时反转它们 我曾考虑在每次更改之前保存每个修改的节点,并将旧版本保留几周左右,但这似乎不是一个非常快速/高效的过程。这似乎不是一个有效的方法,但实际上是唯一的方法。您可以对其进行一些改进,但必须将旧数据存储在某个位置。我要做的是将事务处理程序附加到数据库。然后,每当提交事务时,收集已更改/删除的属性并将其存储在某个位置。通过只存储修改后的属性,可以节省一些空间。我可能会将

我正在使用Neo4J作为数据库开发一个Wiki应用程序。我想知道什么是正确的程序来跟踪用户对主题的编辑,以便mods可以在需要时反转它们


我曾考虑在每次更改之前保存每个修改的节点,并将旧版本保留几周左右,但这似乎不是一个非常快速/高效的过程。

这似乎不是一个有效的方法,但实际上是唯一的方法。您可以对其进行一些改进,但必须将旧数据存储在某个位置。我要做的是将事务处理程序附加到数据库。然后,每当提交事务时,收集已更改/删除的属性并将其存储在某个位置。通过只存储修改后的属性,可以节省一些空间。我可能会将它们存储在另一个数据库中,但这完全取决于您

您也可以使用增量备份功能,但这需要企业版的Neo4j。(如果可能的话,这可能是您更好的选择。)

编辑:可以找到事务处理程序。实现该接口,然后使用GraphDatabaseService中的方法将其注册到数据库中。每次提交事务时都会调用您的代码(因为Neo4j要求所有更改都在事务中,所以每次进行更改时都会调用它)

TransactionEventHandler接口有点难以使用。他们传递给你的数据是你所需要的一切,但它的格式非常奇怪。如果你在这方面需要帮助,请随时在此询问。有很多人(包括我)可以帮你

不幸的是,我认为这必须在Java(或任何JVM语言,我使用Scala)中完成。但是由于Neo4j已经在运行一个JVM,所以您不必启动另一个JVM来执行此操作。另外,如果您正在寻找从TransactionEventHandler到Node.js的数据获取方法,我使用的就是这个目的


希望这有帮助。

谢谢你的回答!只是一个问题:“将事务处理程序附加到数据库”是什么意思?这是通过服务器端代码实现的还是在服务器端代码中实现的(我使用的是node.js)?此外,该程序是否有名称(用于进一步研究该主题)?谢谢