Захват изменений данных (Change Data Capture) Скачать в PDF

Синонимы: Отслеживание изменений в данных, CDC

Разделы: Бизнес-задачи

Захват изменений данных (CDC) — это процесс обнаружения и регистрации изменений информации в источниках данных и их репликация в целевые системы хранения в реальном времени. Он широко применяется в средах хранилищ данных (ХД) корпоративных информационных систем.

Захват изменений данных

Данные в ХД загружаются из множества источников. Наиболее распространенный вид — OLTP-системы, где фиксируются транзакции, отражающие события в бизнесе. Поток транзакций в OLTP-систему имеет различную интенсивность в зависимости от особенностей бизнеса: где-то они идут непрерывным потоком, а где-то — раз в день или реже. Все изменения в источнике должны передаваться в ХД через ETL или ELT, но возможны и другие варианты. Для организации этого процесса можно использовать два режима:

  • оффлайн (пакетная) — загрузка изменений в соответствии с регламентом. Например, перенос в ХД производится один раз в сутки, причем загружаются все транзакции, дата и время создания которых позже, чем у предыдущей загрузки.
  • онлайн (потоковая) — изменения в источниках отражаются в ХД сразу после их появления в режиме реального времени.

Можно выделить два варианта организации процесса CDC:

  • «толкать» (push) — захват и отправка изменений в ХД производится средствами источников данных.
  • «тянуть» (pull) — ETL-процесс хранилища сам отслеживает изменения, выгружает их из источника и переносит в ХД. Он должен непрерывно опрашивать источники для получения изменений и принятия соответствующих действий.

Для реализации CDC используются следующие методы.

На основе временных меток. В таблицу вводится столбец, отражающий время последнего изменения (LAST_MODIFIED, LAST_UPDATED и т.д.). Целевая система будет запрашивать только записи, которые были обновлены с момента предыдущей загрузки.

Отслеживание изменений

На рисунке видно, что изменение поля электронной почты Email сопровождается изменением поля временной метки обновления Last Modified.

На основе триггеров. Большинство баз данных поддерживают триггеры — хранимые процедуры, которые автоматически выполняются при возникновении в таблице определенного события (например, действий INSERT, UPDATE или DELETE). Для регистрации любых изменений данных необходим один триггер для каждой операции в таблице.

Триггер на изменение данных

Изменения сохраняются в той же базе данных, но в отдельной таблице, которая обычно называется теневой или таблицей событий. Кроме того, могут быть использованы системы обмена сообщениями, которые позволят публиковать изменения данных в очередях, где на них «подписываются» соответствующие целевые системы.

На основе журналов. СУБД регистрируют все изменения — INSERT, UPDATE и DELETE — произошедшие в базе данных, и соответствующие им временные метки в файлах, называемых журналами транзакций.

Журнал транзакций

Эти журналы используются для резервного копирования, но их также можно применять для распространения изменений в целевые системы. Изменения данных фиксируются в режиме реального времени.

Первоначально CDC получил распространение как альтернативное решение пакетной репликации для заполнения хранилищ данных. Однако в последние годы он стал популярным и для миграции в облако.