2013-07-17 44 views
0

我正在开发一个使用Neo4J作为数据库的Wiki应用程序。我想知道什么是正确的程序来跟踪用户对主题的编辑,以便mods可以在需要时对其进行修改。逆向Neo4J中的数据库更改

我想每一个变化之前节省每修改后的节点,保持旧版本的几个星期左右,但是这似乎并不像一个非常快的/高效的程序。

回答

2

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

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

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

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

不幸的是,我觉得这在Java中做(或任何JVM的语言,我用斯卡拉)。但是由于Neo4j已经运行了一个JVM,所以你不必另外启动一个JVM。另外,如果你正在寻找一种从TransactionEventHandler获取数据到Node.js的方法,我使用Apache Thrift来达到这个目的。

希望这会有所帮助。

+0

感谢您的回答!只是一个问题:“将交易处理程序附加到数据库”是什么意思?这是通过[cypher](http://api.neo4j.org/1.2/org/neo4j/graphdb/event/TransactionEventHandler.html)还是在服务器端代码(我使用node.js)完成的?此外,这个程序的名称(进一步研究该主题)?谢谢 – Sovos

+0

我继续前进,更新了我的帖子,提供了更多信息。 – GJK