Набор утилит для репликации данных между гетерогенными базами данных используя JDBC
-
Репликатор выполняет репликацию модифицированных записей, а не операций.
-
Репликация записей осуществляется независимым потоком, который ограничен набором обслуживаемых таблиц и целевой базы данных.
-
В случае возникновения ошибки во время выполнения потока, поток приостанавливает свою работу на определенное время, после которого пытается повторно выполнить операцию. Ошибка в одном потоке, не отражается на работоспособность других потоков.
-
Поток должен иметь настраиваемую стратегию переноса записей (последовательность переноса по таблицам, необходимость остановки в случае возникновения ошибки), а также возможность применения последовательно разных стратегий в случае ошибки переноса по одной из существующих.
-
Факт того, что была изменена запись реплицируемой таблицы отражается в супер лог таблице.
-
На основании данных из супер лог таблицы менеджер записей генерирует операции в таблице записей очереди репликации для целевых очередей репликации и помечает их как ожидающих обработки. Исходные записи из супер лог таблицы удаляются.
-
Обработчик очереди репликации начинает транзакцию, извлекает записи помеченные как ожидающие обработки, помечает их как данные в обработке и строит список измененных записей.
-
Производится вставка/изменение/удаление измененных записей в целевой БД.
-
Если данные перенесены корректно, то удаляются исходные данные из очереди репликации, иначе исходные записи помечаются как ожидающие обработки. Транзакция закрывается.
-
Старт приложения, чтение настроек о зарегистрированных пулах соединений.
-
Инициализация именованных пулов соединений.
-
Определение рабочих потоков, подготовка пула потоков
-
Определение ведущих БД и запуск процессов диспетчеров для каждой ведущей БД.
-
По мере заполнения суперлога, процесс диспетчер выполняет копирование данных по пулам рабочих потоков, после копирования данных диспетчер запускает рабочий поток для каждого пула в который были скопированы данные.
-
Рабочий поток лочит данные доступные для репликации и выполняет репликацию данных. TODO: На данном этапе данные находятся еще в режиме операций - нужно определить как выполнять трансформацию операций, в модифицированные данные.