2016-08-18 75 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联系以获取更多关于使用和功能的细节。