Postgres как точка контроля для Iceberg
Всю аналитику он просто отдает DuckDB.
На выходе транзакционные апдейты в lakehouse и быстрые аналитические запросы в одном SQL, так работает pg_lake.
pg_lake - это набор расширений, который позволяет читать и изменять Iceberg-таблицы напрямую из Postgres. Для тяжелой аналитики используется DuckDB, запущенный в отдельном сайдкар-процессе pgduck_server, который подключается к выполнению запроса во время исполнения.
Приложение отправляет в Postgres запрос, например посчитать нереализованный PnL по тикеру Disney. Postgres парсит запрос и выделяет часть, где нужно посчитать среднюю цену по историческим данным из lakehouse.
Этот фрагмент он передает в pgduck_server. Там DuckDB читает Iceberg, при необходимости используя кэш, считает среднюю цену и возвращает результат обратно.
После этого Postgres джойнит его с локальными данными портфеля, считает PnL и отдает итог приложению.
Снаружи это выглядит как обычный SQL-запрос. Внутри Postgres занимается транзакциями и логикой, а DuckDB сканами и агрегациями по lakehouse.
@five_minutes_of_data
Всю аналитику он просто отдает DuckDB.
На выходе транзакционные апдейты в lakehouse и быстрые аналитические запросы в одном SQL, так работает pg_lake.
pg_lake - это набор расширений, который позволяет читать и изменять Iceberg-таблицы напрямую из Postgres. Для тяжелой аналитики используется DuckDB, запущенный в отдельном сайдкар-процессе pgduck_server, который подключается к выполнению запроса во время исполнения.
Приложение отправляет в Postgres запрос, например посчитать нереализованный PnL по тикеру Disney. Postgres парсит запрос и выделяет часть, где нужно посчитать среднюю цену по историческим данным из lakehouse.
Этот фрагмент он передает в pgduck_server. Там DuckDB читает Iceberg, при необходимости используя кэш, считает среднюю цену и возвращает результат обратно.
После этого Postgres джойнит его с локальными данными портфеля, считает PnL и отдает итог приложению.
Снаружи это выглядит как обычный SQL-запрос. Внутри Postgres занимается транзакциями и логикой, а DuckDB сканами и агрегациями по lakehouse.
@five_minutes_of_data