← На главную

PostHog заменила DuckDB на Trino в облачном хранилище

02.11.2026 16:02 · hackernews

PostHog рассказала, почему спустя пять месяцев после перехода на DuckDB снова перестроила облачное аналитическое хранилище. Изначально компания отказалась от общего кластера ClickHouse, который плохо справлялся с многочасовыми запросами моделирования и не имел оптимизатора стоимости запросов. DuckDB позволил выделить каждому клиенту отдельный экземпляр и подключать dbt через Postgres-интерфейс. Однако за последние три месяца архитектуру пришлось изменить из-за более крупных и сложных рабочих нагрузок, чем ожидала команда.

DuckDB остаётся, по оценке PostHog, отличным одноузловым инструментом: он надёжен и при нехватке памяти сбрасывает данные на диск. В облаке это создало проблемы. Размер worker приходилось выбирать до поступления запроса, а потребность конкретного запроса в CPU и памяти трудно предсказать. Сложные запросы требовали очень крупных инстансов; добавление дисков делало выполнение слишком медленным и дорогим. Отдельным ограничением была загрузка больших объёмов из S3 без асинхронного чтения, которое появилось в DuckDB лишь недавно.

Для полноценного хранилища использовалось расширение DuckLake. Его переносимая схема каталога ограничивала оптимизации под конкретную СУБД: запись в одну таблицу могла занимать более трёх минут, поскольку каждый commit заново читал статистику всего каталога. Более 99% строк статистики относились к уже удалённым таблицам. Очистка ускоряла записи в 30–50 раз, но данные снова накапливались. Также много ресурсов уходило на соединения с общими Postgres-базами метаданных.

PostHog сразу перевела в DuckLake собственные данные. К моменту миграции там хранилось около 2 ПБ, примерно триллион строк и 15,3 млн снимков. Нужные изменения не удавалось достаточно быстро вносить в основной проект, поэтому компании пришлось поддерживать патчи в fork. Дополнительные сложности создал pgwire на порту 5432: долгие соединения, reconnect, TTL, слабые средства балансировки и разные ожидания многочисленных Postgres-клиентов.

Новая архитектура построена вокруг собственной версии распределённого Trino и открытого табличного формата HogLake. PostHog уже проверяет их на своих петабайтных данных и только после этого предлагает партнёрам для совместной доработки.

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