我目前正在研究一个项目,在项目中我必须跟踪在关系数据库中修改过的元组。这应该包括更新的元组,但也插入和删除元组。我的问题是完成这个的最好方法是什么?我有我自己的一些想法,但也许有更容易/更好的方法,我没有想到,或者已经存在一个完全这样的项目。跟踪数据库中修改过的元组的最佳方式是什么?
该项目的最终目标是,将不同厂家的关系数据库工作,但第一个实现将使用MySQL数据库。其他数据库系统可以稍后支持。但如果适用于MySQL的解决方案可以很容易地适用于其他数据库,那将会很不错。
我的第一个想法是解析日志文件。但是,我不确定这些日志文件是否包含实际的修改过的元组,并且我可以想象这些日志文件并不总是可用的(例如在共享主机上)。
我的第二个想法是在应用层面拦截查询。当执行INSERT,DELETE或UPDATE查询时,可以解析这些查询,并且可以事先确定它们会影响的元组。对于INSERT操作,这只是插入的元组,对于DELETE或UPDATE操作,元组可以通过在新的SELECT语句中应用WHERE子句来标识。
作为最后一句话我想补充一点,表现并不在这个阶段发展的重要因素。
如果需要更多的细节,我很高兴向他们提供。
您是否在寻求关于如何记录关系数据更改的建议?如果是这样,这是重复多次 - 尝试搜索“审计记录”。例如,请参阅http://stackoverflow.com/questions/2015232/database-design-for-audit-logging和http://stackoverflow.com/questions/1439173/enterprise-data-auditing。 – 2010-01-13 15:54:22