LOG或交易历史记录所需的设计建议

时间:2016-06-06 05:23:17

标签: database-design application-design

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. Log4j记录。同意模式并在日志文件中记录更新。你有sumologic或splunk或Kibana之类的工具可以索引日志文件。但是,这些解决方案无法永久保存日志。通常,您可以设计它们以保存3个月的数据。你可以查询关键词,你会得到毫秒的结果!
    1. 如果你正在使用hibernate,那么你会有一些叫做envers的东西。在修改之前,会将最新的db行记录到审计表中。但是限制是你需要处于休眠状态
    2. 使用db触发器。在更新触发器(至少mysql)给你更改的列,你可以记录它们。唯一的问题是捕获已完成操作的用户 - 可以将其作为'temp variable'发送到mysql连接。然而,当你告诉触发器时,DBA会哭泣(为什么?我不知道!)