【问题标题】:What will be the best way to keep track of modified tuples in a database?跟踪数据库中修改的元组的最佳方法是什么?
【发布时间】:2011-01-04 16:26:42
【问题描述】:

我目前正在从事一个项目,在该项目中我必须跟踪关系数据库中修改的元组。这应该包括更新的元组,但也包括插入和删除的元组。我的问题是实现这一目标的最佳方法是什么?我有几个自己的想法,但也许有一些我没有想到的更简单/更好的方法,或者已经有一个项目可以做到这一点。

该项目的最终目标是它适用于不同供应商的关系数据库,但第一个实现将使用 MySQL 数据库。以后可以支持其他数据库系统。但是,如果适用于 MySQL 的解决方案可以轻松地适应另一个数据库,那就太好了。

我的第一个想法是解析日志文件。但是,我不确定这些日志文件是否包含实际修改的元组,而且我可以想象这些日志文件并不总是可用(例如在共享主机上)。

我的第二个想法是在应用程序级别拦截查询。当执行 INSERT、DELETE 或 UPDATE 查询时,可以解析这些查询,并且可以预先确定它们将影响的元组。对于 INSERT 操作,这只是插入的元组,对于 DELETE 或 UPDATE 操作,可以通过在新的 SELECT 语句中应用 WHERE 子句来识别元组。

最后,我想补充一点,在这个开发阶段,性能并不是一个重要因素。

如果需要更多详细信息,我很乐意提供。

【问题讨论】:

标签: database relational


【解决方案1】:

使用触发器捕获 INSERT、UPDATE 和 DELETE,并将您的条目记录到新表中。您可以使用该表上的时间戳来记录事务发生的时间。将来您可以查询该表以获取您的修改信息。

【讨论】:

    【解决方案2】:

    这将需要一些依赖于数据库的功能,但您可以根据您的体系结构封装它们,但您可以使用数据库触发器,我通常建议不要这样做,除了审计这一点。在每种触发器中,您可以简单地将所需的任何信息写入日志表。只有一个建议。

    【讨论】:

      猜你喜欢
      • 2019-10-05
      • 1970-01-01
      • 2016-06-14
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 2010-09-16
      • 2021-03-27
      相关资源
      最近更新 更多