💦Что такое CDC-системы и зачем они нужны
Чтобы сократить объем данных, считываемых из корпоративного хранилища или озера, но всегда быть в курсе последних изменений, используется CDC-подход: захват измененных данных или Change Data Capture. Есть готовые инструменты CDC: Oracle Golden Gate, Qlik Replicate и HVR, лучше всего подходят для приема данных из часто обновляемых реляционных СУБД. Также инженеры данных создают собственные решения:
• вычисления CDC с использованием меток времени, маркирующих моменты создания, обновления и истечения срока действия в исходных таблицах. Любой процесс, который вставляет, обновляет или удаляет строку, должен также обновить соответствующий столбец отметки времени. Жесткое удаление не допускается. Недостаток этого способа в том, что необходимо переделать структуру базы данных, чтобы добавить столбец timestamp, а также необходимость тесной связи между исходной таблицей и кодом ETL-процесса.
• вычисления CDC с использованием отрицательного запроса, когда между источником и целевым приемником создается связь, и выполняется минус-запрос SQL для расчета журнала изменений. Этот способ скорее антипаттерн, т.к. работает только, если исходная и целевая базы данных относятся к одному типу, а еще он приводит к тому к увеличению перемещаемого объема данных.
Оба метода CDC, написанного вручную, вызывают значительную нагрузку на исходную базу данных. А специальные инструменты CDC сокращают нагрузку на сеть и источник, анализируя логи для расчета изменений. Однако, основным недостатком готовых CDC-решения является их высокая стоимость. Кроме того, администратор исходной СУБД должен предоставлять CDC-средству привилегированный доступ к журналу базы данных, что воспринимается не очень лояльно по соображениям безопасности.
https://towardsdatascience.com/change-data-capture-cdc-for-data-ingestion-ca81ff5934d2
Post #167
449