Вставка данных в другую систему через API - PullRequest
0 голосов
/ 04 августа 2020

У меня одно требование. Любая транзакция происходит в основной таблице, будь то удаление, обновление или вставка, мне нужно опубликовать ту же запись в другой системе через API. потому что у меня есть только POST API для ввода данных в целевую систему.

Мой подход:

Я создал trigger в основных таблицах. Какая бы операция DML ни выполнялась с таблицей, она будет реплицирована в другую таблицу исходной системы. Раз в день через java jdbc я буду читать данные этих trigger tables и записывать данные в файл в формате json. Затем я вызову API для ввода данных в целевую систему. Как только данные будут введены, я обрежу таблицу триггеров, чтобы в ней можно было хранить fre sh данные, и не могло быть дублирования данных.

После того, как я запишу данные в файл и введу их в целевую систему, я немедленно обрежу таблицы исходных триггеров. Здесь проблема в том, что если какая-либо запись будет вставлена ​​в систему, когда я записывал данные в целевую систему, эти данные будут потеряны. Потому что сразу после введения я обрежу таблицу. Как я могу справиться с этим сценарием без data loss. Любой другой способ справиться с этим.

1 Ответ

1 голос
/ 05 августа 2020

Добро пожаловать в мир синхронизации, это сложно сделать правильно.

Я синхронизирую 1,35 млн записей каждые два часа между Oracle и SQL Сервером. К счастью, приходится иметь дело только со вставками. Я использую дату в одном из столбцов, чтобы отслеживать, какие записи были скопированы. Когда копирование завершено, я удаляю записи <= дата последнего копирования. <strong>Truncate вызовет потерю данных, как вы описали.

Если у вас есть разделы, вы можете создать ежедневные разделы. Новые данные будут go в новый раздел, вы скопируете данные предыдущего дня на удаленный компьютер, а затем обрежете раздел. К сожалению, у нас нет Oracle Enterprise Edition (необходимого для разбиения на разделы), не говоря уже о разбиении на разделы, поэтому я не могу дать вам подробностей о том, как это сделать.

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