这可能看起来是一个相当具体的问题,但我想知道是否有任何技术/模式可以帮助我在当前的项目中。我有一个非常复杂的数据库,可以由多个系统更新。我现在需要对分布在多个表中的各种数据位进行更改跟踪,以便可以将其发送到第三方系统。
我已经考虑了许多选择,但不幸的是,除了使用数据库触发器之外,我似乎无法得出任何其他结论。我正在考虑在一个表(或队列)中存储一个标志来标识已更改的行,然后构建一个xml diff,其中包含要发送到web服务的更改后的数据。这感觉有点脏,所以我想知道有没有人能想到更好的替代方案。
发布于 2014-05-08 22:25:02
根据您正在使用的数据库平台,您可以查看变更数据捕获。既然您提到了.NET,下面是关于它的一些信息:http://technet.microsoft.com/en-us/library/bb522489(v=sql.105).aspx
其他数据库系统可能会提供类似的功能。
另一种选择是在表上使用insert/update/delete触发器,但是应该小心处理触发器,因为如果处理不当,触发器可能会导致一些严重的性能问题。
而另一种选择仍然是您所描述的--某种用于监视更改的标志。一个简单的创建和修改的时间戳字段可以在这里发挥很大的作用,因为不仅仅是一个提示行可能需要注意的位指示符,您将知道更新发生的时间,并且可以相应地对导出过程进行编程(例如,select * from table where MODIFIED > getdate()-1)。
https://stackoverflow.com/questions/23544020
复制相似问题