【问题标题】:Single centralized or separated log table for modules?模块的单个集中式或分离式日志表?
【发布时间】:2009-04-26 09:51:47
【问题描述】:

我正在为中型企业设计一个 Intranet 系统。我应该为所有模块保留一个日志表还是分开?

审核日志保存所有管理员/员工活动(创建、更新、删除对象),并且日志结构对于任何类型的模块都是通用的。

如果我根据日志记录提取报告也是一个好主意吗?我的日志表保留了对象类型和对象 ID,因此我可以随时根据事件、对象名称和对象 ID 获取任何对象的数据。

在这种情况下报告的最佳方法是什么?

【问题讨论】:

    标签: php logging crm


    【解决方案1】:

    log4phplog4j 通过引入日志层次结构和级别解决了许多日志记录问题。不知道log4php有多好,不过应该是入门吧。

    【讨论】:

      【解决方案2】:

      我会说一张桌子。

      例如,您可能希望在所有模块中查找用户活动(如果我理解正确的话)。这适合一张桌子。

      报告您的日志表是可以的。您可以将负载卸载到单独的报告数据库中,以减少日志记录表上的争用和负载。

      最后,我将明确存储对象名称和类型(数据库对象)。 如果你 DROP 和 CREATE 那么 ID 将会改变。或者一个表可能会变成一个视图,例如,它的类型和 objectid 都会改变。

      【讨论】:

        【解决方案3】:

        好吧,当你去查看你的日志时,你更愿意在一个可以看到所有内容的地方查看,还是必须检查几个不同的地方,每个地方都只显示一个孤立的系统?

        请记住,对于单个表,过滤掉不相关的条目或用户无权查看的条目是微不足道的。将多个单独的日志组合到一个单一的综合视图中有点棘手,而且它还有一个额外的缺点,在大多数设计下,每次添加新的日志表时都需要重新访问执行组合的代码。

        我肯定说单个日志更可取。我能想到的唯一适合多个隔离日志的情况是,如果安全问题足够强大,以至于必须对具有不同可见性的日志条目进行物理隔离 - 在这种情况下,您可能会单独查看日志服务器,而不仅仅是单独的表。

        【讨论】:

          【解决方案4】:

          我们使用单表,它被证明是最好的解决方案,尤其是在性能方面。尤其是对于大型数据集。如果您对现成的解决方案感兴趣 - 请尝试this

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-05-16
            • 1970-01-01
            • 2015-04-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多