我正在为中型企业设计内部网系统。我应该为所有模块保留一个日志表还是将其分开?
审核日志保留所有管理员/员工活动(创建,更新,删除对象),并且日志结构对于任何类型的模块都是通用的。
如果我根据日志记录提取报告,这也是一个好主意吗?我的日志表保留了对象类型和对象ID,因此我可以根据事件,对象名称和对象ID随时获取任何对象的数据。
在这种情况下报告的最佳方法是什么?
答案 0 :(得分:3)
答案 1 :(得分:3)
我会说一张桌子。
您可能希望在所有模块中查找用户活动,例如(如果我理解正确的话)。这适合一张桌子。
报告您的日志表就可以了。您可以卸载到单独的报告数据库中,以减少日志记录表上的争用和负载。
最后,我将显式存储对象名称和类型(数据库对象)。 如果你DROP和CREATE那么ID将会改变。或者一个表可能会成为一个视图,所以它的类型和objectid都会改变。
答案 2 :(得分:2)
那么,当你去查看日志时,你宁愿做什么,看一下你可以看到一切的地方,或者必须检查几个不同的地方,每个地方只是单独显示一个系统?< / p>
请记住,使用单个表,过滤掉不相关的条目或用户无权查看的条目是微不足道的。将几个单独的日志组合成一个单一的综合视图有点棘手,而且它还有一个额外的缺点,在大多数设计中,要求你重新访问每次添加新日志表时进行组合的代码。
我绝对会说单个日志更可取。我可以想到的唯一情况是多个隔离日志是合适的,如果安全问题足够强大,要求必须在物理上隔离具有不同可见性的日志条目 - 在这种情况下,您可能会分开查看日志服务器,而不仅仅是单独的表。
答案 3 :(得分:1)
我们使用单表,它被证明是最好的解决方案,特别是在性能方面。特别是对于大型数据集。如果您对现成的解决方案感兴趣,请尝试this。