【问题标题】:Design suggestions required on LOG or Transaction HistoryLOG 或 Transaction History 所需的设计建议
【发布时间】:2016-10-05 15:00:22
【问题描述】:

我正在开发一个 Web 应用程序,属于不同组的用户将填写表单并提交相同的表单。场景是,用户 A、B 和 C 属于 G 组。用户 A 登录应用程序,填写表格(比如年龄 = 30),提交相同内容并注销。现在,用户 B 登录到应用程序,打开相同的表单(比如 age=35),编辑表单并保存它。现在,用户 C 做同样的事情(比如年龄 = 40)。当另一个用户打开表单时,它会显示年龄为 40(因为它是最新记录)。

问题是,如果管理员登录应用程序,他/她应该能够看到所有交易或日志的历史记录。请建议我一些设计方法,将所有更改都记录到数据库中。有没有像spring或hibernate这样的框架或任何帮助来实现这一点?任何关于数据库设计的意见也会对我有所帮助。

我在 SQL Server 中使用 Struts 和普通 JDBC。

【问题讨论】:

    标签: database-design application-design


    【解决方案1】:

    这可以通过多种方式解决。

    1. Lo​​g4j 日志记录。同意一个模式并将更新记录在日志文件中。您可以使用 sumologic、splunk 或 Kibana 等工具来索引日志文件。然而,这些解决方案不能永远保持日志记录。通常,您可以将它们设计为保存 3 个月的数据。您可以查询关键字,您将在毫秒内获得结果!
      1. 如果您使用的是hibernate,那么您有一个叫做envers 的东西。在修改它之前将最新的数据库行记录到审计表中。但限制是您需要处于休眠状态
      2. 使用数据库触发器。在更新触发器(至少 mysql)上为您提供更改的列,您可以记录它们。唯一的问题是捕获完成操作的用户——可以将其作为“临时变量”发送到 mysql 连接。但是,当您讲述触发器时,DBA 会哭(为什么?我不知道!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2020-03-24
      • 2011-11-13
      • 2013-11-26
      相关资源
      最近更新 更多