我正在开发一个新的web应用程序,我需要将数据库中的任何更改存储到审核表中。这类审计表的目的是,在以后的实际审计中,我们可以了解在某一情况下发生了什么,谁编辑了数据库在进行复杂计算时的状态和状态。因此,大部分审计表将编写,而不是阅读。虽然有时可能会生成报告。
我一直在寻找可用的解决方案
我没有试过其中的任何一个,所以我想知道一些真正的经验,我应该使用哪一个。哪一个更快,占用的空间更少,易于扩展和维护?
发布于 2009-05-17 06:35:11
正如我在问题中所指出的,rcField似乎满足了我的需求,这很简单,我希望存储对我的表的任何更改,并可能稍后再回到这些更改以生成一些报告。
因此,我测试了AuditTrail和Reversion似乎是一个更完善的应用程序,它有许多特性(我不需要这些特性),而且据我所知,它以XML或YAML格式将数据保存在一个表中,我认为这是一个更好的应用程序。
AuditTrail在这方面获胜,因为它为每个表生成一个相应的审计表,因此可以很容易地跟踪更改,每个表数据更少,并且可以很容易地操作和用户进行报表生成。
所以我要和AuditTrail一起去。
发布于 2009-05-04 15:10:02
就我个人而言,我更喜欢在数据库中创建审计表并通过触发器填充,这样就可以存储来自查询窗口的任何更改,甚至是临时查询。我绝不会考虑不基于数据库本身的审计解决方案。这一点很重要,因为对数据库进行恶意更改或实施欺诈的人不太可能通过web界面而直接通过后端进行更改。比起外部黑客,更多的事情发生在心怀不满或盗窃的员工身上。如果您已经在使用ORM,则您的数据将面临风险,因为权限位于表级别,而不是它们所属的sp级别。因此,更重要的是捕获对dat的任何可能的更改,而不仅仅是GUI中的更改。我们有一个动态proc来创建每当新表被添加到数据库时运行的审计表。由于我们的审计表只填充更改,而不填充整个记录,因此我们不需要每次添加字段时都更改它们。
此外,在评估可能的解决方案时,请确保考虑到还原数据以撤消特定更改的难度。一旦您有了审计表,您就会发现这是您需要做的最重要的事情之一。还请考虑,随着数据库模式的更改,维护这些信息将是多么困难。
选择一个解决方案,因为它似乎是最容易理解的,一般不是一个好主意。这应该是您在满足要求、安全性等之后的最低选择标准。
发布于 2009-05-04 07:28:12
我不能给你任何一个真正的经验,但我想做一个观察。
我想AuditTrail你是指Django wiki上的AuditTrail吧。如果是这样的话,我想您应该看一下由同一作者(Marty @gulopine)在他的书“HistoricalRecords”中开发的亲Django。它应该在Django 1.x中运行得更好。
这是我将在即将到来的项目中使用的方法,并不是因为从技术角度来看,它一定会击败其他项目,而是因为它符合该应用程序审计跟踪的“真实世界”期望。
https://stackoverflow.com/questions/818823
复制相似问题