0

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

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

4

1 回答 1

2

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

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

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

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

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

希望这可以帮助。

于 2013-07-17T17:16:44.003 回答