Как переливать данные из Postgres в 10 раз быстрее привычных инструментов

29 июн 2026
3,294
220
23
5 дней

Знакомая история: проект растет, данных в Postgres становится все больше, и бизнес просит «прикрутить аналитику». Вы ставите ClickHouse или Snowflake, берете какой-нибудь популярный ETL-инструмент и внезапно обнаруживаете, что синхронизация пары сотен гигабайт растягивается на дни. А если в таблицах есть тяжелые JSONB или массивы, стандартные коннекторы начинают спотыкаться или безбожно тормозить.

Я наткнулся на PeerDB — проект, который пытается решить именно эту проблему. Разработчики не стали делать «швейцарский нож» для всего подряд, а сфокусировались на одной задаче: максимально быстро и эффективно выкачивать данные из PostgreSQL.

https://raw.githubusercontent.com/PeerDB-io/peerdb/main/images/banner.jpg

В чем проблема обычных ETL-инструментов

Большинство инструментов для репликации данных стараются поддерживать сотни источников. В итоге Postgres для них — просто еще одна база данных в списке. Они используют стандартные механизмы, которые не учитывают внутреннюю кухню «слона».

PeerDB пошли другим путем. Они называют свой подход «Postgres-first». Это значит, что вместо универсальных костылей они используют нативные фишки БД. Например, если у вас есть огромные таблицы, PeerDB умеет распараллеливать их начальную загрузку, сохраняя при этом консистентность. Ребята заявляют, что там, где другие инструменты справляются за дни, они тратят минуты.

Реклама

Чем PeerDB интересен на практике

Главная фишка, которая бросается в глаза — это SQL-интерфейс для управления ETL-процессами. Вы не кликаете мышкой в сложном UI, а пишете привычные запросы.

Знакомый интерфейс

Вы можете подключиться к PeerDB через обычный psql или любой другой клиент (DBeaver, pgAdmin). Это прикольно, потому что для автоматизации пайплайнов не нужно учить новые API — достаточно уметь писать SQL-скрипты на Python, Go или просто через Airflow.

Работа с CDC и сложными типами

Многие инструменты ломаются на специфических типах данных Postgres. PeerDB нормально переваривает:

  • Массивы и JSONB
  • Геоданные (PostGIS)
  • Кастомные типы данных
  • Столбцы с TOAST (те самые огромные куски данных, которые Postgres хранит отдельно)

Для отслеживания изменений используется Change Data Capture (CDC), причем разработчики обещают задержку (data freshness) всего в несколько десятков секунд даже при нагрузке в 10 000 транзакций в секунду.

https://raw.githubusercontent.com/PeerDB-io/peerdb/main/images/peerdb-demo.gif

Разные режимы стриминга

Проект не заставляет использовать только логическую репликацию. Можно выбрать:

  1. Log-based (CDC) — через чтение логов транзакций.
  2. Cursor-based — по метке времени или инкрементальному ID.
  3. XMIN-based — специфичный для Postgres способ отслеживания изменений через системный столбец.

Архитектура и надежность

Под капотом у PeerDB стоит Temporal. Это движок для управления рабочими процессами, который берет на себя всю боль с ретраями, управлением состоянием и отказоустойчивостью. Если в процессе переливки данных моргнет сеть или упадет таргет-база, PeerDB не потеряет прогресс и продолжит с того же места.

Для промежуточного хранения данных (staging) используется MinIO. Это важно учитывать при развертывании: если ваш ClickHouse стоит где-то в облаке, а PeerDB крутится локально в Docker, ClickHouse должен иметь доступ к этому MinIO, иначе магии не случится.

Как попробовать в деле

Запустить проект локально можно буквально одной командой. Вам понадобится Docker и установленный psql для проверки.

git clone git@github.com:PeerDB-io/peerdb.git
cd peerdb
bash ./run-peerdb.sh

После запуска подключаемся к PeerDB как к обычной базе:

psql "port=9900 host=localhost password=peerdb"

Кстати, если вы используете ClickHouse Cloud, то PeerDB там теперь доступен нативно через ClickPipes. Это показатель того, что проект признали серьезные игроки.

https://raw.githubusercontent.com/PeerDB-io/peerdb/main/images/in-clickpipes.png

Стоит ли переходить

PeerDB точно не универсальная замена Airbyte или Fivetran. Если вам нужно тянуть данные из 50 разных SaaS-сервисов, этот проект не для вас.

Но если ваша основная база — Postgres, и вы уперлись в производительность текущих ETL-решений или устали от того, что CDC постоянно отваливается на больших объемах, PeerDB стоит пощупать. Проект под лицензией AGPLv3, так что для внутреннего использования в компании ограничений нет.

Главный плюс здесь — узкая специализация. Когда инструмент «заточен» под конкретную БД, он всегда будет работать лучше, чем комбайн «все-в-одном». Единственное, к чему стоит подготовиться — это необходимость настраивать сетевые доступы для MinIO, если базы разнесены по разным инфраструктурам.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.