Database 通过Web服务,从位于不同位置的另一个相同表更新表

Database 通过Web服务,从位于不同位置的另一个相同表更新表,database,web-services,Database,Web Services,我有两个不同的数据库。 其中一个是原始数据库,另一个是缓存数据库 这些数据库位于不同的位置。 一天一个,我必须从原始数据库更新缓存数据库。 我必须使用一个在原始数据库机器上工作的Web服务来更新这个进程 我可以清除所有缓存数据库表,并在每次进程中插入原始数据。 但我认为这是一个糟糕的情况。 那么,我如何才能高效地更新进度呢。 你有什么建议吗。我很确定有数据库同步技术,但既然你已经有了要求,我建议使用更改日志 因此,您将拥有一个“CHANGE_LOG”表,每当您在表上执行“写入”(insert、U

我有两个不同的数据库。 其中一个是原始数据库,另一个是缓存数据库

这些数据库位于不同的位置。 一天一个,我必须从原始数据库更新缓存数据库。 我必须使用一个在原始数据库机器上工作的Web服务来更新这个进程

我可以清除所有缓存数据库表,并在每次进程中插入原始数据。 但我认为这是一个糟糕的情况。 那么,我如何才能高效地更新进度呢。
你有什么建议吗。

我很确定有数据库同步技术,但既然你已经有了要求,我建议使用更改日志

因此,您将拥有一个“CHANGE_LOG”表,每当您在表上执行“写入”(insert、UPDATE、DELETE)操作时,您都会向该表插入行。每天一次,您可以将这些更改逐个应用于缓存数据库

应用更改日志后删除它是可以的,但是您也可以将“版本”授予DBs。因此,对DB的每次更改都会增加版本号。可用于管理多个chache DBs

例如,为了提供额外的保证,您可以在缓存数据库中使用一个触发器来增加它们自己的版本号。这样,您的进程可以查询缓存数据库并知道必须应用哪些更改,而无需在主数据库中维护这些更改(这样,连接一个新的缓存数据库,使崩溃的缓存数据库更新也很容易)


请注意,您可能需要不时清除更改日志。

在我看来,您必须从源数据库中获取所有数据,因为您似乎没有任何方法查询它以查看哪些数据发生了更改。一种简单的方法是将源数据库中的所有数据复制到缓存数据库中的临时表或临时表中。然后,您可以在两组表之间进行差异,并更新已更改的记录。或者,一旦您拥有了暂存表中的所有数据,请删除/重命名现有表,并将暂存表重命名为现有表名。

谢谢Zwei,但原始(源)数据库不是我的。所以我不能对源数据库做任何思考。我必须在Web服务和目标计算机中执行所有链接。如果您无法控制源数据库,则必须执行差异,因为否则无法检测删除和更新(可以使用主键作为伪版本信息来检测插入)。而且差别很昂贵。如果我是你,我会和管理层谈谈。