Как синхронизировать две разные базы данных с миллионами строк и разной структурой столбцов - PullRequest
0 голосов
/ 11 апреля 2019

У меня проблемы с базой данных синхронизация между двумя разными базами данных (одна - Oracle, другая - Postgresql), эти две базы данных расположены в в двух разных местах (то есть два разных физических местоположения или географических местоположения), а средняя скорость интернета будет около 1 Мбит / с .

Вот проблема, скажем, у меня есть следующие таблицы:

  1. tableORC внутри БД Oracle (эта таблица содержит буквально миллионы строк) и

  2. tablePG внутри БД Postgresql (эта таблица содержит буквально сотни тысяч строк)

Эти две таблицы (внутри другой базы данных) будут иметь различную структуру столбцов , вотструктуры этих таблиц:

tableORC :

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

tablePG :

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

tableORC будетвсегда получают time-series изменения от многих приложений / API, т.е. почти каждую секундуЭто будет операция CRUD для tableORC, моя цель состоит в том, чтобы tablePG всегда синхронизироваться с tableORC, то есть:

  1. Если одна строка serial_26_chars изначально присутствует, но затемполучил удален , затем id с тем же значением с serial_26_chars будет удален также из tablePG.

  2. Если description в строке получил обновляется , затем desc соответствующего id будет обновляться с tablePG тоже.

  3. Если одна строка serial_26_chars изначально была создана заново создана, затем id с тем же значением, что и serial_26_chars, будет вновь создан на tablePG.

и учтите, что за одну секунду буквально тысячи операции CRUD на tableORC, и я хочу, чтобы синхронизация с tablePG происходила в считанные секунды через Интернет (другое расположение сервера).

Для вашей информации, tableORC были размещены на сервер корпоративного уровня , в то время как tablePG были размещены на обычном настольном ПК .

Так какрешить эту проблему?Можете ли вы предложить мне какой-нибудь метод решения этой проблемы?

Спасибо.

1 Ответ

0 голосов
/ 11 апреля 2019

Вы должны внедрить веб-сервисы на сервере postgres для изменений обновления.

Первый вариант: для каждой операции с сервера Oracle Второй вариант: один раз в день проверяйте изменения в журнале повторов на сервере oracle.

Вы можете использовать что-то вроде интеграции данных Pentaho на сервере Oracle для просмотра данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...