2013-07-17 27 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