null

Миграция данных, CDC, Debezium

Зачем это нужно?

Практически в каждую компанию, в каждый проект когда-нибудь постучится в дверь необходимость мигрировать данные из одного хранилища в другое, либо же поддерживать актуальность данных в двух различных хранилищах. Причем самое неприятное, когда одно из хранилищ является СУБД другого типа, либо вовсе не является СУБД, а каким-нибудь объектным хранилищем. Однако, эта проблема решаема и помогут нам в этом Debezium, Kafka, а также механизм CDC.

Обзор

CDC - это подход к интеграции данных, основанный на идентификации, регистрации и доставке изменений, внесенных в корпоративные источники данных, во внешние системы. Если проще, то это механизм, который позволяет нам отслеживать изменения в СУБД и на основе этого предпринимать действия с этими изменениями.

Debezium - это набор коннекторов для различных СУБД, совместимых с Apache Kafka Connect.

Общая архитектура использования Debezium с официального сайта:

Также есть Debezium Server, который является конфигурируемым, готовым к использованию приложением, которое передает события изменений из исходной базы данных в различные Data Lake.

В реальности данная общая архитектура немного не подходит, ведь помимо наполнения нашего Data Lake - конечного звена на схемах с различными хранилищами данных, события, отправленные в Apache Kafka, могут быть использоваться вашими приложениями для решения различных ситуаций:

  • потоковое шифрование данных
  • проверка консистентности во время передачи
  • удаление неактуальных данных из кэша
  • отправка уведомлений
  • обновления поисковых индексов
  • некое подобие логов аудита

Отслеживание изменений в СУБД обеспечивается через чтение WAL-файлов. Поэтому база данных должна быть сконфигурирована должным образом, заданы REPLICA IDENTITY у необходимых таблиц и т д. 

Заключение

На этом у меня все, надеюсь данная статья была вам полезна и вы о ней вспомните при необходимости мигрировать данные. Более подробно про Debezium можно прочитать тут: https://debezium.io/