2010-01-13 93 views
2

我目前正在研究一个项目,在项目中我必须跟踪在关系数据库中修改过的元组。这应该包括更新的元组,但也插入和删除元组。我的问题是完成这个的最好方法是什么?我有我自己的一些想法,但也许有更容易/更好的方法,我没有想到,或者已经存在一个完全这样的项目。跟踪数据库中修改过的元组的最佳方式是什么?

该项目的最终目标是,将不同厂家的关系数据库工作,但第一个实现将使用MySQL数据库。其他数据库系统可以稍后支持。但如果适用于MySQL的解决方案可以很容易地适用于其他数据库,那将会很不错。

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

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

作为最后一句话我想补充一点,表现并不在这个阶段发展的重要因素。

如果需要更多的细节,我很高兴向他们提供。

+0

您是否在寻求关于如何记录关系数据更改的建议?如果是这样,这是重复多次 - 尝试搜索“审计记录”。例如,请参阅http://stackoverflow.com/questions/2015232/database-design-for-audit-logging和http://stackoverflow.com/questions/1439173/enterprise-data-auditing。 – 2010-01-13 15:54:22

回答

2

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

0

这将需要一些数据库相关的功能,但你可以封装它们取决于你的架构,但你可以使用数据库触发器,我通常建议不要除了这事,审计。在每种类型的触发器中,只需向任何需要的信息写入日志表即可。只是一个建议。

相关问题