Инициатива с открытым исходным кодом, поддерживаемая Microsoft, направлена на улучшение возможностей PostgreSQL как аналитической базы данных путем интеграции в нее системы OLAP DuckDB. Этот проект, лицензированный по разрешительной лицензии MIT, стремится решить проблемы, с которыми сталкиваются разработчики при использовании PostgreSQL для аналитических целей, несмотря на его признание самой популярной базой данных среди разработчиков с 2023 года.
Улучшение PostgreSQL с помощью DuckDB
PostgreSQL пользуется стабильным ростом популярности на протяжении последних 28 лет благодаря своей надежной и расширяемой архитектуре. Однако разработчики сталкивались с трудностями при создании аналитических систем, которые работают так же эффективно, как и транзакционные системы. Грядущее расширение PostgreSQL, которое встраивает аналитический движок DuckDB, стремится устранить это ограничение.
В недавнем блоге от MotherDuck, поставщика бэкэнд-услуг и расширений для DuckDB, подчеркивается, что интеллектуальная собственность этого расширения принадлежит независимому некоммерческому фонду DuckDB Foundation, что гарантирует его статус open-source. Проект размещен в официальном репозитории DuckDB на GitHub.
Согласно блогу, «PostgreSQL хорош во многих вещах, но если вы попытаетесь использовать его для аналитики, вы довольно быстро столкнетесь со стеной». Хотя PostgreSQL отлично справляется с созданием и поиском отдельных строк, он может испытывать трудности с эффективным анализом больших наборов данных. Традиционные попытки улучшить аналитическую производительность PostgreSQL часто не достигали успеха, так как эффективная аналитика требует других методов выполнения запросов, таких как пакетная обработка и отложенная декомпрессия данных.
DuckDB работает как встроенный аналитический движок внутри хост-процесса, устраняя необходимость в установке или обслуживании отдельного серверного ПО СУБД. Например, пакет DuckDB для Python позволяет пользователям выполнять запросы непосредственно на данных внутри библиотеки Pandas без необходимости импорта или копирования данных. Написанный на C++, DuckDB свободно доступен по лицензии MIT.
MotherDuck подчеркивает, что векторизированный движок запросов DuckDB обрабатывает данные кусками, что делает его особенно подходящим для решения аналитических задач. В блоге отмечается: «Популярность DuckDB растет благодаря его скорости, простоте использования и универсальности».
Новое расширение pg_duckdb поддерживается коалицией организаций, включая DuckDB Labs, коммерческую поддержку, основанную разработчиками DuckDB; Microsoft, которая предоставляет услуги PostgreSQL и нанимает коммиттеров PostgreSQL; Hydra, компанию по данным и ПО, которая инициировала pg_duckdb; и Neon, специализирующуюся на серверных платформах PostgreSQL. MotherDuck также играет поддерживающую роль в этом начинании.
Энди Павло, доцент кафедры баз данных в Университете Карнеги-Меллона, отметил исторический контекст аналитических возможностей PostgreSQL. Он подчеркнул, что разработчики пытались создать OLAP-версии PostgreSQL с начала 2000-х годов, часто приводя к жестким форкам оригинального кода, таким как Greenplum и Vertica. Однако достижения в API расширений PostgreSQL с 2006 года проложили путь для более интегрированных решений.
Павло выделил значимость оптимизатора DuckDB, который, хотя и не так испытан в боевых условиях, как оптимизатор PostgreSQL, основан на высоко оцененном оптимизаторе HyPer от TUM. Этот дизайн позволяет DuckDB обрабатывать сложные запросы, с которыми другие системы, включая Microsoft SQL Server и Oracle, испытывают трудности. Он выразил уверенность в поддержке проекта известными компаниями, заявив: «Если бы я был разработчиком, который уже использует Postgres + DuckDB в своем стеке и хотел бы объединить их вместе, я бы выбрал pg_duckdb среди других альтернатив расширений DuckDB для Postgres».