【问题标题】:Real Time Data Extraction/ Transaction capturing实时数据提取/交易捕获
【发布时间】:2017-06-12 07:54:29
【问题描述】:

我们正在尝试在通过 VPN 连接的另一个远程数据库中捕获 [near] 实时发生在核心数据库上的一些事务。 这些交易可以轻松识别,但我们在决定工作流程和确定使用哪种技术时面临挑战。

例如。 1.) 每 x 秒转储 CSV 文件。 从核心系统中,我们每 x 秒创建一个包含所需信息的 CSV 文件。然后我们会将这个文件推/拉到远程系统并处理它。

2.) 网络服务 我们将有 2 个 Web 服务,一个在发送方,另一个在接收方。 每隔 x 秒,发送方 Web 服务将执行一次查询并从源数据库中获取记录,并将数据分批“y”条记录推送到接收方 Web 服务。 然后,接收方将处理记录并发送“y”个记录的确认。

注意。

1.) 理想情况下,我们希望使流程成为实时的。上述两个想法都是 [near] Real-Time 而不是 Real-Time。

2.) 源数据库系统不是特定的。可以是oracle、ms-sql、mysql、sybase、informix等。

3.) 远程目标数据库是 oracle。

欢迎提出任何想法,而且所使用的技术也可以是灵活的。 主要重点是减少由于此过程对核心数据库造成的负载。

编辑: 我越来越清楚的是,几乎不可能实现异构数据库系统的实时实时性,因为插入记录的触发器/通知是特定于 RDBMS 的。

除了上面分享的 2 个示例之外,我想将问题的焦点转移到更接近实时的想法。

另外请注意,我们几乎无法控制源数据库以及最初将记录插入数据库的进程/服务。我们只能控制记录。

【问题讨论】:

  • 源 DBMS 很重要,并非所有 DB 都提供通知外部应用程序更改的选项。
  • 感谢您的回复。我明白你所说的关于 DBMS 的内容。我已经相应地编辑了我的问题。

标签: java web-services real-time


【解决方案1】:

有关如何在 PostgreSQL 中侦听数据库更改(在本例中为数据库触发器)的示例,请参阅 this article。基本上,您设置了一个函数来处理向所有感兴趣的客户端发送事件的触发器。然后,您的应用程序将侦听此事件,并可以在执行触发器时开始同步。该示例将触发器应用于特定表上的新插入。

【讨论】:

  • 谢谢。我现在明白了。我已经相应地编辑了我的问题。
  • 这不是解决您问题的可行方案吗?您的服务必须连接到 PostgreSQL 数据库,并且可以将更改推送到您的 Oracle 数据库/Web 服务。
  • 我们无法控制源数据库和类型。由于我们计划从多个来源中提取数据,因此 db 也是可变的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 2022-07-22
  • 2021-12-05
  • 1970-01-01
  • 2016-10-07
  • 2018-12-13
  • 1970-01-01
相关资源
最近更新 更多