[Перевод] Как настроить и запустить систему отслеживания измененных данных PostgreSQL
PostgreSQL предлагает метод логического декодирования и делает возможным сбор данных об изменениях на основе логирования. Вы сможете настроить и запустить CDC в несколько шагов.
Архитектура современных веб-приложений состоит из нескольких программных компонентов, таких как информационные панели (дашборды), аналитические системы, базы данных, озёра данных (Data Lakes), кэшевые хранилища, функции поиска и т.д.
База данных обычно является основной частью любого приложения. Обновление данных в режиме реального времени позволяет поддерживать разрозненные системы данных в непрерывной синхронизации и быстро реагировать на появление новой информации. Как же поддерживать экосистему приложений в синхронном состоянии? Как эти компоненты получают информацию об изменениях в базе данных? Термин отслеживание изменённых данных, или сокращённо CDC, — относится к любому решению, которое идентифицирует новые или изменённые данные.
Статья посвящена отслеживанию изменённых данных (CDC) в PostgreSQL и способам достижения этой цели.
Отслеживание изменённых данных (CDC) — это метод интеграции данных для обнаружения, захвата и передачи изменений, внесённых в источники данных базы данных.
Как правило, интеграция данных на основе CDC состоит из следующих шагов:
- Захват изменённых данных в исходной базе данных.
- Преобразование изменённых данных в формат, который могут принять ваши потребители (консьюмеры).
- Публикация данных для консьюмеров или целевой базы данных.
PostgreSQL предлагает два встроенных способа сделать CDC возможным:
- Из журналов транзакций, PostgreSQL WALs (они же Write Ahead Logs).
- С помощью триггеров базы данных.
Давайте кратко обсудим плюсы и минусы использования журналов транзакций (WALs) и триггеров для отслеживания изменения данных.
Триггеры
Методы на основе триггеров предполагают создание триггеров аудита в базе данных для регистрации всех событий, связанных с методами INSERT, UPDATE и DELETE.
Триггеры могут быть привязаны к таблицам (разделённым и нет) или представлениям (views).
Они также могут срабатывать для операторов TRUNCATE. При возникновении события триггера — функция вызывается в соответствующее время для обработки события.