我目前正在从事一个项目,在该项目中我必须跟踪关系数据库中修改的元组。这应该包括更新的元组,但也包括插入和删除的元组。我的问题是实现这一目标的最佳方法是什么?我有几个自己的想法,但也许有一些我没有想到的更简单/更好的方法,或者已经存在一个可以做到这一点的项目。
该项目的最终目标是适用于不同供应商的关系数据库,但第一个实现将使用 MySQL 数据库。以后可以支持其他数据库系统。但是,如果适用于 MySQL 的解决方案可以轻松地适应另一个数据库,那就太好了。
我的第一个想法是解析日志文件。但是,我不确定这些日志文件是否包含实际修改的元组,而且我可以想象这些日志文件并不总是可用(例如在共享主机上)。
我的第二个想法是在应用程序级别拦截查询。当执行 INSERT、DELETE 或 UPDATE 查询时,可以解析这些查询,并且可以预先确定它们将影响的元组。对于 INSERT 操作,这只是插入的元组,对于 DELETE 或 UPDATE 操作,可以通过在新的 SELECT 语句中应用 WHERE 子句来识别元组。
最后,我想补充一点,在这个开发阶段,性能并不是一个重要因素。
如果需要更多详细信息,我很乐意提供。