0Pricing
Advanced PostgreSQL: Indexing, Partitioning, Replication · Урок

Логическое декодирование и захват изменений данных

Используйте логическое декодирование, чтобы передавать изменения строк из PostgreSQL в потоки CDC для конвейеров и систем, управляемых событиями.

«Логическое декодирование и захват изменений данных» — бесплатный урок Advanced PostgreSQL: Indexing, Partitioning, Replication на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Advanced PostgreSQL: Indexing, Partitioning, Replication, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Advanced PostgreSQL: Indexing, Partitioning, Replication содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

What Is Logical Decoding

Logical decoding turns the write-ahead log into a readable stream of logical row changes. It is the foundation of both logical replication and external Change Data Capture (CDC).

Output Plugins

A plugin decides the format of the change stream. Built-in pgoutput powers logical replication; test_decoding emits human-readable text; tools like Debezium use their own.

Prerequisite: wal_level

Logical decoding needs wal_level = logical. Changing it requires a restart.

-- postgresql.conf
wal_level = logical

Creating a Logical Slot

A logical replication slot tracks how far a consumer has read and prevents WAL needed by it from being removed.

SELECT pg_create_logical_replication_slot(
  'cdc_slot', 'test_decoding');

Peeking at Changes

pg_logical_slot_peek_changes shows pending changes without advancing the slot, useful for inspection.

SELECT * FROM pg_logical_slot_peek_changes(
  'cdc_slot', NULL, NULL);

Consuming Changes

pg_logical_slot_get_changes reads and advances the slot, so those changes will not be returned again.

SELECT * FROM pg_logical_slot_get_changes(
  'cdc_slot', NULL, NULL);

Example Change Output

With test_decoding an INSERT appears as readable text describing the table and new column values, wrapped between BEGIN and COMMIT markers.

BEGIN 712
table public.users: INSERT: id[int]:1 name[text]:'Ada'
COMMIT 712

Slots Hold WAL

An inactive slot keeps WAL forever, which can fill the disk. Monitor and drop unused slots.

SELECT slot_name, active FROM pg_replication_slots;
SELECT pg_drop_replication_slot('cdc_slot');

CDC Pipelines

External CDC connectors stream from a slot into systems like Kafka, search indexes, or data warehouses, enabling near-real-time downstream updates.

At-least-once Delivery

Consumers must track the last confirmed LSN and handle possible re-delivery after a crash. Design downstream writes to be idempotent.

Replica Identity for CDC

To capture the full before image on updates and deletes, set REPLICA IDENTITY FULL on tables without a usable primary key.

ALTER TABLE orders REPLICA IDENTITY FULL;

Quick Check

Why must logical replication slots be monitored?

Recap

You learned logical decoding: set wal_level=logical, create a logical slot with an output plugin, peek or consume changes, and feed CDC pipelines. Monitor slots, design idempotent consumers, and set replica identity for full change images.

Часто задаваемые вопросы

Урок «Логическое декодирование и захват изменений данных» бесплатный?

Да — полный текст урока «Логическое декодирование и захват изменений данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Advanced PostgreSQL: Indexing, Partitioning, Replication, подпишись на CoddyKit PRO. Курс Advanced PostgreSQL: Indexing, Partitioning, Replication содержит 4 уроков всего.

Чему я научусь в уроке «Логическое декодирование и захват изменений данных»?

Используйте логическое декодирование, чтобы передавать изменения строк из PostgreSQL в потоки CDC для конвейеров и систем, управляемых событиями. Ты практикуешь Advanced PostgreSQL: Indexing, Partitioning, Replication с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Advanced PostgreSQL: Indexing, Partitioning, Replication?

Предыдущий опыт не требуется. Advanced PostgreSQL: Indexing, Partitioning, Replication на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Логическое декодирование и захват изменений данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Advanced PostgreSQL: Indexing, Partitioning, Replication?

Да. Каждый урок Advanced PostgreSQL: Indexing, Partitioning, Replication включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Каскадная репликация
  2. Мультимастерная репликация (BDR)
  3. Слоты репликации и управление WAL
  4. Логическое декодирование и захват изменений данных
← Назад к Advanced PostgreSQL: Indexing, Partitioning, Replication