django AuditTrail vs Reversion

时间:2009-05-04 05:02:35

标签: database django audit audit-trail reversion

我正在开发一个新的Web应用程序,我需要将数据库中的任何更改存储到审计表中。这种审计表的目的是,在稍后的实际物理审计中,我们可以确定在某种情况下发生了什么,谁编辑了例如在什么时候数据库的状态。复杂的计算。 因此,大多数审计表都将被编写而不会被读取。有时可能会生成报告。

我找了可用的解决方案

  1. AuditTrail - 简单,这就是为什么我倾向于它,我可以理解它的单个文件代码。
  2. Reversion - 看起来很简单,但不确定在需要时修改它会有多容易。
  3. rcsField似乎非常复杂,对我的需求来说太多了
  4. 我没有尝试过这些中的任何一个,所以我想知道一些真实的经历以及我应该使用的经验。例如哪一个更快,占用空间更小,易于扩展和维护?

3 个答案:

答案 0 :(得分:5)

我个人更喜欢在数据库中创建审计表并填充触发器,以便存储来自查询窗口的即时查询的任何更改。我永远不会考虑不基于数据库本身的审计解决方案。这很重要,因为对数据库进行恶意更改或提交欺诈行为的人不太可能通过Web界面直接进行,而是直接在后端进行。更多的这种事情发生在心怀不满或者是愚蠢的员工身上,而不是外面的黑客。如果您已经使用ORM,则您的数据存在风险,因为权限位于表级别而不是它们所属的sp级别。因此,更重要的是捕获对dat的任何可能的更改,而不仅仅是来自GUI的更改。我们有一个动态proc来创建审计表,只要将新表添加到数据库就会运行。由于我们的审计表仅填充更改而不是整个记录,因此我们无需在每次添加字段时更改它们。

此外,在评估可能的解决方案时,请务必考虑恢复数据以撤消特定更改的难度。拥有审计表后,您会发现这是您需要做的最重要的事情之一。还要考虑在数据库架构发生变化时维护信息的难度。

选择一个解决方案,因为它似乎最容易理解,通常不是一个好主意。在满足要求,安全性等之后,这应该是您选择标准中最低的。

答案 1 :(得分:3)

我无法向你提供任何实际经验,但想进行观察。

我认为AuditTrail是指AuditTrail on the Django wiki。如果是这样,我想你会想要在他的书Pro Django中看看同一作者(Marty Alchin又名@gulopine)开发的HistoricalRecords。它应该可以更好地使用Django 1.x。

这是我将在即将开展的项目中使用的方法,不是因为它必然从技术角度击败其他项目,而是因为它符合该应用程序审计跟踪的“现实世界”期望。

答案 2 :(得分:2)

正如我在我的问题中所述,rcField似乎对我的需求非常重要,这很简单,我希望存储对我的表的任何更改,并且可能会在稍后返回这些更改以生成一些报告。

所以我测试了AuditTrail和Reversion Reversion似乎是一个更好的全面应用程序,具有许多功能(我不需要),而且据我所知它将数据保存在XML或YAML格式的单个表中,我认为

  1. 将在单个表中生成过多数据
  2. 读取该数据我可能无法使用已经存在的数据库工具。
  3. AuditTrail在这方面获胜,它为每个表生成一个相应的审计表,因此可以轻松跟踪更改,每个表数据更少,可以轻松操作和用户生成报告。

    所以我要使用AuditTrail。