如何同步具有数百万行和不同列结构的两个不同数据库

时间:2019-04-11 10:50:17

标签: database oracle postgresql

我在两个不同的数据库(一个是Oracle,另一个是Postgresql)之间的数据库同步上遇到了问题,这两个数据库位于两个(即两个不同的物理位置或地理位置),并且平均互联网速度约为 1Mb / s

这是问题所在,假设我有以下表格:

    Oracle DB中的
  1. tableORC(此表实际上包含数百万行),以及

  2. Postgresql DB中的
  3. tablePG(此表实际上包含十万行)

这两个表(在不同数据库中)将具有不同的列结构,这是这些表的结构:

tableORC

+-----------------+-------------+--+--+--+
| serial_26_chars | description |  |  |  |
+-----------------+-------------+--+--+--+
|                 |             |  |  |  |
+-----------------+-------------+--+--+--+

tablePG

+----+------+--+--+--+
| id | desc |  |  |  |
+----+------+--+--+--+
|    |      |  |  |  |
+----+------+--+--+--+

tableORC总是会从许多应用程序/ API中获得time-series的更改,即几乎每秒钟tableORC上都会有CRUD操作,我的目标是保持tablePG始终与tableORC同步,即:

  1. 如果最初存在一个serial_26_chars行,但随后被删除,则与id值相同的serial_26_chars将从{{1 }}。

  2. 如果连续tablePG已更新,则相应description的{​​{1}}也将从desc得到更新。< / p>

  3. 如果最初{strong}创建了一个id行,那么与tablePG具有相同值的serial_26_chars将在{{1}上重新创建}。

,请考虑在一秒钟之内id上实际上有数千个CRUD操作,我希望与serial_26_chars的同步在互联网上花费的时间大约是一秒钟(不同服务器位置)。

供您参考,tablePG托管在企业级服务器上,而tableORC托管在消费级标准台式机上。

>

那么如何解决这个问题呢?您能建议我一些解决此类问题的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您必须在postgres服务器中实现Web服务以进行更新更改。

第一个选项:对于oracle服务器上的每个操作 第二种选择:每天一次,请查阅oracle服务器中的重做日志更改。

您可以在oracle服务器中使用Pentaho Data Integration之类的东西来查询数据。