我们正试图在另一个通过VPN连接的远程数据库中捕获核心数据库上[实时]发生的一些事务。 这些交易可以轻松识别,但我们在决定工作流程和确定使用哪种技术时面临挑战。
例如。 1.)每x秒转储CSV文件。 在核心系统中,我们每x秒创建一个包含所需信息的CSV文件。然后,我们将此文件推送/拉到远程系统并进行处理。
2.)Web服务 我们将有2个网络服务,一个在发送方和接收方另一方面。 发送方Web服务每隔x秒执行一次查询并从源数据库中获取记录,并将数据按批次推送到接收Web服务中。记录。 然后,接收方将处理记录并发送确认消息。记录。
注意:
1。)理想情况下,我们希望将该过程实时化。上述两种观点都是[接近]实时而非实时。
2.。)源数据库系统不是特定的。它可以是oracle,ms-sql,mysql,sybase,informix等。
3.。)远程目标数据库是oracle。
任何想法都是受欢迎的,所使用的技术也可以灵活。 主要重点是减少因核心数据库上的此过程而导致的负载。
编辑: 对我来说越来越清楚的是,在异构数据库系统中获取实际实时几乎是不可能的,因为插入记录时的触发/通知是特定于RDBMS的。
除了上面分享的两个例子之外,我想把问题的重点转移到实时想法附近。
另请注意,我们几乎无法控制源数据库和数据库。最初在数据库中插入记录的进程/服务。我们只控制记录。
答案 0 :(得分:0)
有关如何在PostgreSQL中监听数据库更改(在本例中为数据库触发器)的示例,请参阅this article。基本上,您设置了一个函数来处理将事件发送给所有感兴趣的客户端的触发器。然后,您的应用程序将侦听此事件,并可在执行触发器时启动同步。该示例将触发器应用于特定表上的新插入。