Database django AuditTrail vs Reversion

Database django AuditTrail vs Reversion,database,django,audit,audit-trail,reversion,Database,Django,Audit,Audit Trail,Reversion,我正在开发一个新的web应用程序,我需要将数据库中的任何更改存储到审计表中。此类审计表的目的是,在以后的实际审计中,我们可以确定在某种情况下发生了什么,谁编辑了什么以及在进行复杂计算时db的状态是什么。 所以大部分审计表都是写的,而不是读的。有时也会生成报告 我一直在寻找可行的解决办法 -简单,这就是为什么我倾向于它,我可以理解它的单文件代码 -看起来使用起来很简单,但不确定在需要时修改它有多容易 看起来很复杂,对我来说太多了 我没有试过这些,所以我想知道一些真实的经验,我应该使用哪一种。e、

我正在开发一个新的web应用程序,我需要将数据库中的任何更改存储到审计表中。此类审计表的目的是,在以后的实际审计中,我们可以确定在某种情况下发生了什么,谁编辑了什么以及在进行复杂计算时db的状态是什么。 所以大部分审计表都是写的,而不是读的。有时也会生成报告

我一直在寻找可行的解决办法

  • -简单,这就是为什么我倾向于它,我可以理解它的单文件代码
  • -看起来使用起来很简单,但不确定在需要时修改它有多容易
  • 看起来很复杂,对我来说太多了

  • 我没有试过这些,所以我想知道一些真实的经验,我应该使用哪一种。e、 g.哪一个更快,占用空间少,易于扩展和维护?

    我不能给你任何一个的实际经验,但我想做一个观察

    我想你的意思是。如果是这样的话,我想你应该看看由同一位作者(Marty Alchin aka@gulopine)在他的书中开发的
    历史记录。它在Django 1.x上应该工作得更好


    这是我将在即将到来的项目中使用的方法,不是因为从技术角度来看它必然优于其他方法,而是因为它符合“真实世界”对该应用程序的审计跟踪的期望。

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

    在评估可能的解决方案时,请确保您考虑恢复数据以撤销特定更改将是多么困难。一旦你有了审计表,你会发现这是你需要从中做的最重要的事情之一。还考虑在数据库模式改变时维护信息的难度。


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

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

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

  • 将在单个表中生成过多数据
  • 要读取这些数据,我可能无法使用现有的数据库工具
  • AuditTrail在这方面取得了成功,因为它为每个表生成了相应的审核表,因此可以轻松跟踪更改,每个表的数据更少,并且可以轻松地操纵和使用户生成报告


    所以我选择AuditTrail。

    是的,我说的AuditTrail是指Django wiki上的AuditTrail,所以对于历史记录,我必须买书吗?或者代码是可用的?他的一些其他项目是在线的,但我甚至在网站上也找不到特定的代码。如果其他人像我一样发现这个问题,需要注意的是,HistoricalRecords已经在Marty Alchin的许可下进行了扩展,现在作为django simple history提供:我选择了软解决方案vs DB one(因此现在我正在寻找可维护的解决方案)B解决方案无法满足应用程序状态(很容易),关于安全性,我认为如果一个人有权访问数据库,并且一心想进行欺诈,那么你认为他不会删除此类数据库审计触发器,或者不会更改审计表本身,除非这些表以高安全性存储在第三个物理位置。你是否看到此类完整历史记录:?我开始观察你们的问题,并没有找到最好的解决办法。您对AuditTrail有什么问题吗?我还没有研究完整的历史记录,但如果它有效,它将是一个非常简单的解决方案,因为现在我还没有在生产中使用AuditTrail,但初步测试似乎表明它会行得通。
    AuditTrail
    HistoricalRecords
    方法的最新和受支持的实现是。