Синхронизация данных между разными базами данных

Ищу возможное решение следующей проблемы.

Сначала ситуация, в которой я нахожусь:
У меня 2 базы данных, 1 база данных Oracle и 1 база данных MySQL. Хотя у них много общего, они не идентичны. Множество таблиц доступно как в БД Oracle, так и в БД MySQL, но таблицы Oracle часто более обширны и содержат больше столбцов. Ситуацию с базами изменить нельзя, так что с этим надо разбираться.

Теперь я ищу следующее:
Я хочу синхронизировать данные из Oracle в MySQL и наоборот. Это нужно делать в реальном времени или как можно ближе к реальному времени. Поэтому, когда изменения вносятся в одну БД, они должны быть синхронизированы с другой БД как можно быстрее.

Также не каждая таблица должна быть синхронизирована, поэтому решение должно предлагать способ выбора, какие таблицы должны быть синхронизированы, а какие нет.

Поскольку базы данных не идентичны, я думаю, что репликация - это не вариант. Но что есть? Я надеюсь, что вы, ребята, поможете мне найти способ сделать это или инструмент, который сделает именно то, что мне нужно. Может быть, вы знаете какие-нибудь хорошие статьи / статьи, которые я могу использовать?

Спасибо!


person Wouter Lemcke    schedule 19.02.2013    source источник
comment
Используйте инструмент ETL, например Pentaho   -  person Johan    schedule 19.02.2013
comment
Использовать JDBC? Вы должны уметь идти обоими путями ...   -  person Ben    schedule 19.02.2013
comment
То, о чем вы говорите, очень похоже на EAI. Это может быть довольно сложно! Прочитав EAI, вы получите хорошее представление о подводных камнях и рисках. В Википедии есть хороший 101 (учебник) по EAI и перечислены несколько популярных поставщиков и ресурсов: en.wikipedia.org/ wiki / Enterprise_application_integration   -  person tgolisch    schedule 19.02.2013


Ответы (2)


Я прочитал твой вопрос и твой ответ. Я работал как над Oracle, SQL, ETL, так и над хранилищами данных, и вот мои предложения:

  1. Хорошо иметь готовый инструмент ETL. Но если ваше приложение достаточно велико, чтобы вам понадобился специализированный инструмент ETL, я предлагаю вам самодельный процесс ETL.

    • If your transactional database is on Oracle, you can have triggers set up on the key tables that would further trigger an external procedure written in C, C++ or Java.
    • Причина использования внешней процедуры заключается в том, чтобы иметь возможность общаться с обеими базами данных одновременно - Oracle и MySQL.
    • Подробнее о внешних процедурах Oracle можно узнать здесь.
  2. Если не через ExtProc, вы можете разработать отдельное приложение на Java или .Net, которое будет извлекать данные из первой базы данных, преобразовывать их в соответствии с вашими бизнес-правилами и загружать в ваше хранилище.

В любом из подходов, которые вы выберете, у вас будет больший контроль над процессом ETL, если вы реализуете свой собственный инструмент, вместо того, чтобы использовать готовый инструмент.

person Rachcha    schedule 13.03.2013

Спасибо за комментарии.

Я провел дополнительное исследование ETL и EAI. Я обнаружил, что ищу инструмент ETL.

person Wouter Lemcke    schedule 13.03.2013