所有实体的通用审计表

时间:2011-07-01 06:01:02

标签: .net

需要意见

您认为将所有实体的基本审核信息存储在公共数据库表中是一个好主意吗?我的意思是创建者,创建者,修改者,修改者。实体表将具有审计ID&时间戳

通常在更新期间查询审核信息以检查冲突,有时从与创建者相关联的业务逻辑查询,例如CRM New Lead行中记录的所有者。

可能我们绝不应该将审计字段用作业务字段。

我认为它会使插入变慢,因为每个实体有两个表但总体上会使实体类紧凑并且会使审计成为ON / OFF开关

2 个答案:

答案 0 :(得分:1)

我基本上有三种选择:

  1. 您建议的所有实体的通用审核表。
  2. 每个实体一个审计表,包含该实体字段的全部(或子集),以及与该时间点保存的实体相关的用户和时间戳等附加信息。
  3. 每个实体表可以具有同一实体的多个版本。然后,您将拥有每个实体表的视图,以选择最新版本的实体。
  4. 这实际上取决于您感兴趣的审计数据类型。在许多情况下,了解谁做出更改以及何时无法看到实际发生的变化是没有用的,因为其他人已经改变了从那时起实体。

答案 1 :(得分:1)

出于安全原因,审计数据应与实体数据分开。 这样,如果黑客获得对您的应用程序的访问权限,他可能能够更改数据,但他将无法更改有关他所执行操作的审计信息。

将审计数据分成自己的架构是一种方法。 您还可以使用完全独立的数据库。 在任何一种情况下,您都希望确保拥有2个用户帐户:一个只能访问您的实体数据,另一个只能访问审计数据。

我经常看到某种类型的发布/订阅模型用于发布审计数据,然后将审计数据异步写入审计存储。