我正在开发一个工具,将来自几个不同来源DB(同一公司使用,但不同供应商和版本)的数据复制到一个集中式分析平台上(为了这个问题:只是另一个数据库)。我们不需要历史记录,只需要在源数据库中选择表/模式的快照。这些都是生产数据库,在复制之间的每个窗口都有很多更新。
我们必须做出的选择是,是通过事务日志进行增量更新,还是只从实际表中读取数据。我们不能更改源数据库中的任何内容,因此添加last_replicated时间戳是不可能的。
在搜索最佳实践时,我发现了很多工具,但没有多少关于哪种方法在哪种情况下最有效的信息。我的直觉是,当更新完成时,仅仅拍摄快照并丢弃旧的复制是最简单的方法,而通过不同供应商的事务日志实现增量更新可能是一件痛苦的事情,而且每次运行的速度也不会那么快。当然,这将取决于源数据库上的更新数量。但我找不到信息来支持这件事。
(我不是在寻找工具,因为这个功能将是我们正在内部构建的套件的一部分。)
发布于 2021-10-11 11:44:23
不幸的是,你需要支持的只是过于宽泛的选择,无法在这里得到一个具体的答案。我从来没有听说过格林梅,我敢打赌这里99%的其他用户也没有听说过。
设置它需要做大量的工作,您可能会遇到挑战,因为它不可能从一些不太知名的系统中复制,或者至少不可能通过传统的数据库特性进行复制。在这种情况下,您可能会编写大量的应用程序代码。
无论如何,我的建议是将其集中到已经建立的企业数据库系统中。例如,Microsoft有多种方法从异构源中提取数据。即使简单地说,您也可以轻松地在Microsoft中将链接服务器设置到几乎任何其他数据源。或者,我确信Oracle在连接到异构数据源时也提供了类似的灵活性。建立得较少的系统,您可能会发现很难设置一个适当的方法来摄取来自所有需要支持的不同来源的数据。
为了回答您的问题,通常通过事务日志或类似的方法,增量更新数据的服务器负载几乎总是更快/更少,而不是调度数据的常规快照。但是,如果数据很小,并且/或不定期更改(因此日程安排可以减少),那么这也是一个潜在的选择。
https://dba.stackexchange.com/questions/300816
复制相似问题