2016-08-18 44 views
0

我需要使用neo4j的應用程序的審計功能,類似於Hibernate Envers。我還沒有找到現有的解決方案,所以我很好奇如何實現我自己的解決方案。使用neo4j審覈:使用哪種方法?

我打算使用lifecycle event生成一箇舊版本的節點並將其存儲到數據庫中(關係計劃在此時保持不變,因此只需要跟蹤節點更改)。

我想知道哪種方法比較好:自定義類型的

  1. 生成節點和保存有關更改的信息(誰做出更改的用戶ID,日期&時間的變化,節點的ID改變的節點的舊狀態)到這些節點中。例如,對於用戶更改他的名字像這樣將生成:

(:Audit:{userID:"001", timeInMillis:"1471507577436", objectID:"4178a373-d6e0-434f-bc45-cf472c106f1a", oldState:"userID:001, firstName:John, secondName:Doe"})

  • 保留舊版本的節點同類型的節點本身的,鏈接到節點本身,在那裏以毫秒時間戳添加修訂屬性。
  • 對於大型數據集,第一種方法可能會很慢,但實施起來更容易。我想知道哪裏最好。

    回答

    1

    我的答案並不涉及手動方法,只是建議可滿足您需求的現有產品。

    如果您正在使用或計劃使用neo4j企業版,GraphAware Enterprise包含幾個用於增強neo4j的模塊,包括審計模塊(其他模塊包含額外的靈活安全和帳戶功能以及模式實施和監控)。

    從他們的網站:

    這個擴展可以讓你看到誰給你的圖形所做的更改,當 以及究竟發生了變化。您可以按照時間 範圍,按用戶或圖表的特定區域監視更改。這個功能很棒 用於在更大的 團隊中工作時跟蹤圖表的變化。它也可以定製,以滿足您的需求,並準確顯示 改變你感興趣的內容。

    我沒有用過這個我自己,所以我不能給它是如何在實踐中靈活或有用的說話,您可能想與GraphAware聯繫以獲取更多關於使用和功能的細節。