我们正在 try catch 核心数据库(通过 VPN 连接的另一个远程数据库)上[近]实时发生的一些事务。 这些交易很容易识别,但我们在决定工作流程和确定使用哪种技术时面临挑战。
例如。 1.) 每 x 秒转储 CSV 文件。 从核心系统中,我们每 x 秒创建一个包含所需信息的 CSV 文件。然后我们会将此文件推送/拉取到远程系统并对其进行处理。
2.) 网络服务 我们将有 2 个 Web 服务,一个位于发送方,另一个位于接收方。 每隔 x 秒,发送方 Web 服务将执行一次查询并从源数据库获取记录,并将数据以“y”条记录的批处理推送到接收方 Web 服务。 然后接收方将处理记录并发送“y”记录的确认。
注意。
1.) 理想情况下,我们希望使该过程实时化。上述两种想法都是[接近]实时的,而不是实时的。
2.) 源数据库系统不具体。可以是oracle、ms-sql、mysql、sybase、informix等
3.) 远程目标数据库为oracle。
欢迎任何想法,并且使用的技术也可以灵活。 主要重点是减少由于此过程对核心数据库造成的负载。
编辑: 我越来越清楚,使用异构数据库系统获得实际的实时性几乎是不可能的,因为插入记录的触发器/通知是 RDBMS 特定的。
除了上面分享的两个示例之外,我想转移问题的焦点,以便更好地接近实时想法。
另请注意,我们对源数据库以及最初将记录插入数据库的流程/服务几乎没有控制。我们只能控制记录。
最佳答案
参见this article有关如何在 PostgreSQL 中监听数据库更改(在本例中为数据库触发器)的示例。基本上,您设置一个函数来处理向所有感兴趣的客户端发送事件的触发器。然后,您的应用程序将监听此事件,并可以在执行触发器时启动同步。该示例将触发器应用于特定表上的新插入。
关于java - 实时数据提取/交易捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494160/