WalShadow: репликация Postgres → ClickHouse из физического WAL, ~200 мс
ClickHouse открыл исходники WalShadow — движка, который реплицирует Postgres в ClickHouse не через логическую репликацию, а прямо из физического WAL (того же потока, что читает physical standby).
Как устроено: каталожные WAL-записи проигрываются в «теневой» Postgres только со схемой, heap-записи параллельно декодируют Rust-декодеры, батчер собирает нативные блоки ClickHouse, пул инсертеров пишет их конкурентно. Ни output-плагина логического декодирования, ни Kafka, ни JSON. Блоки могут приходить не по порядку, поэтому к каждой строке цепляется _lsn, и ClickHouse оставляет свежую версию ключа; схемные изменения и TRUNCATE идут через барьеры.
Цифры (c8i.2xlarge, 8 vCPU, один регион, одна таблица): commit→видимость ~200 мс против ~50 мс у физической реплики Postgres и ~10 с у PeerDB. Пропускная: источник ~290K строк/с, WalShadow 289K/с, PeerDB ~120K/с.
Главное практически: нагрузка на источник как у обычного physical standby, слоты логической репликации не нужны; поддержаны initial load, эволюция схемы (ADD/RENAME/DROP COLUMN, CREATE TABLE), восстановление после рестарта и плановый switchover. Оговорка: бенчмарк синтетический, продакшн-закалка с design-партнёрами ещё идёт.
https://clickhouse.com/blog/introducing-walshadow
Post #1267
302