Mirth подключить базу данных к базе данных дубликатов
В настоящее время я разрабатываю канал от читателя базы данных до автора базы данных. Оба соединителя источника и назначения работают на сервере SQL.
Проблема заключается в том, что, установив интервал в источнике на 5 миллисекунд, канал опрашивает и записывает данные каждые 5 миллисекунд, даже если данные были опрошены или записаны ранее.
Например, если в исходной базе данных есть только одна строка, канал будет бесконечно вставлять одну строку в целевую базу данных каждые 5 миллисекунд. Это приводит к бесконечным повторным строкам в целевой базе данных.
Есть ли способ избежать такой ситуации и только вставить в место назначения, только если опрошенные данные являются новыми?
2 ответа
Два способа я могу думать о:
Обычный способ - установить флаг в таблице БД, которую вы читаете. Как только данные будут считаны из этой таблицы веселья, вы обновите таблицу с помощью
"Read"
или же"Processed"
, Затем вы будете писать запрос на выборку на основе этого флага, поэтому он будет вставлять данные, только если флаг не равен"Read"/"Processed"
В случае, если изменение БД не в ваших руках, вы можете написать запрос в для получения данных, как это
"SELECT * FROM Table ORDER BY ID DESC LIMIT 1"
, Идентификационный номер является вашим основным.
Вы не публиковали свои каналы, поэтому я не знаю, как выглядят ваши запросы. Также вы не опубликовали схему БД. В общем, вам нужно реализовать способ отслеживать, какие записи были обработаны. Один из способов сделать это - добавить столбец в соответствующие таблицы со значением по умолчанию "NEW" при добавлении новых записей. Когда вы обработали их (например, скопировали из одной базы данных в другую), вы устанавливаете статус "COPIED" с помощью оператора обновления. При желании вы также можете иметь столбец с отметкой времени, которая указывает, когда была скопирована запись. Другой (возможно, лучший) способ - сделать это в отдельной таблице, которая отслеживает все мутации в базе данных. Это дает вам больше гибкости в том, какие события вы записываете.