在Neo4J中反转数据库更改

时间:2013-07-17 16:57:33

标签: database neo4j

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

希望这有帮助。