![SQL Server 的最佳实践 - 设置对繁忙网站上的操作进行审核](https://linux22.com/image/500458/SQL%20Server%20%E7%9A%84%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%20-%20%E8%AE%BE%E7%BD%AE%E5%AF%B9%E7%B9%81%E5%BF%99%E7%BD%91%E7%AB%99%E4%B8%8A%E7%9A%84%E6%93%8D%E4%BD%9C%E8%BF%9B%E8%A1%8C%E5%AE%A1%E6%A0%B8.png)
我有一个非常繁忙的网站。用户可以创建多种类型的内容,然后可以对这些内容进行投票、举报、管理员启用/禁用等。我想启用对网站上执行的所有操作的审核。
我使用的数据库是 SQL Server 2005。我有两个选择。第一个是单个大表,其中包含审计屏幕所需的大部分详细信息,即内容片段在此表中重复,以消除与其他表的连接。第二个解决方案是为每种类型的内容设置单独的审计表。例如,这使得检索用户的审计日志变得更加复杂,因为他们可能涉及许多不同类型的内容,因此我需要从许多不同的表中检索数据。
因此,这似乎是表大小和查询简单性之间的权衡。这里有任何经验法则吗 - 或者也许哪种方法更好是显而易见的?
答案1
这并不能完全回答您的问题,但该文档非常有用,阅读后您将受益匪浅。Microsoft 为 SQL Server 2008(我知道,不是 2005)编写了一份审计和合规性指南,其中包含大量有关该主题的有用信息:
您所描述的情况非常适合使用 SQL Server 2008 的变更数据捕获功能,它可以自动捕获您想要管理的数据。但不幸的是,它只适用于企业版,这意味着它并不便宜。如果您想避免重新发明轮子,这是最佳选择。
但当你说“网站非常繁忙”时,这会引起警觉。这些技术中的任何一种,即使是你自己开发的技术,都不会是低开销的。