Hacker News Digest

11 ноября 2025 г. в 10:08 • peterullrich.com • ⭐ 162 • 💬 46

OriginalHN

#postgresql#wal#cdc#elixir#db-notification#pg-notify#database-replication#database-backup

Listen to Database Changes Through the Postgres WAL

Статья рассматривает проблему отслеживания изменений в PostgreSQL через NOTIFY/pg_notify, который создает узкое место из-за единой очереди для всех уведомлений. Даже при параллельных транзакциях все подключения должны ждать своей очереди для блокировки очереди уведомлений, что особенно проблематично в высокопроизводительных базах данных. Дополнительные ограничения pg_notify включают ограничение размера сообщения в 8000 байт, отсутствие подтверждения получения и избыточную генерацию уведомлений при изменении множества строк в одной транзакции.

Альтернативой служит WAL (Write-Ahead Log) - журнал всех изменений в базе данных. Основное преимущество WAL в том, что PostgreSQL может откладывать запись страниц данных на диск после завершения транзакции, что значительно повышает пропускную способность. Кроме того, WAL поддерживает репликацию, резервное копирование в реальном времени, восстановление на конкретный момент времени и сбор данных об изменениях (CDC) без модификации кода приложения. Статья далее подробно рассматривает реализацию прослушивания WAL с использованием Elixir.