← На главную

Snowflake Postgres запустил data mirroring через Apache Iceberg

10.08.2026 01:01 · hackernews

В Snowflake Postgres появилась фича data mirroring — сейчас она в public preview. Это репликация данных из Postgres в Snowflake с низкой задержкой, низкой стоимостью и транзакционной согласованностью. Под капотом изменения уходят прямо из Postgres в таблицы Apache Iceberg (в сжатом Parquet) транзакционными батчами. Snowflake автоматически применяет эти батчи к своим таблицам — тоже транзакционно и serverless. Никакой дополнительной инфраструктуры не нужно: нажал кнопку — и таблицы Postgres уже в Snowflake.

Инженеры Snowflake решили переделать репликацию Postgres с нуля. Стандартный подход через logical decoding и WAL перекладывает всю работу на клиента: нужно следить за схемой, снапшотами, добавлением и удалением таблиц, перезапускаться после сбоев, эффективно мёржить изменения, сохранять границы транзакций. Даже встроенная логическая репликация Postgres покрывает только часть этих сценариев. Главная проблема — внешняя система, которая читает изменения, ничего не знает о состоянии Postgres. Она не понимает, когда меняется схема, как снапшоты соотносятся с изменениями и жив ли вообще сервер.

Решение — перестать тянуть изменения извне и начать пушить их из Postgres в data lake. Объектные хранилища вроде Amazon S3 масштабируются, надёжны и уже давно используются для бэкапов Postgres. Для CDC они тоже подходят.

За зеркалирование отвечает новое расширение Postgres — snowflake_cdc. Оно в фоне через base workers постоянно пушит батчи изменений в отдельные change log'и для каждой таблицы и в общий meta log. Расширение живёт внутри Postgres, поэтому точно знает, что там происходит. Оно аккуратно координирует изменения схемы, сложные DML и DDL транзакции, делает снапшоты и одновременно продолжает пушить новые изменения, выравнивая снапшоты с потоком данных.

В итоге вместо хаотичного процесса с кучей сценариев отказов репликация превращается в простой механизм, который работает сам по себе. Это главная идея: транзакционный push в data lake, транзакционный apply в Snowflake и никакого лишнего зоопарка инструментов.

Читать оригинал →