Обновить

Векторизованное колоночное исполнение запросов в PostgreSQL 19

Уровень сложностиСложный
Время на прочтение21 мин
Охват и читатели7.9K
Всего голосов 5: ↑5 и ↓0+7
Комментарии2

Комментарии 2

Я в свое время прошел примерно такой же путь. Вначале сделал на rust расширение с DataFusion в виде фонового воркера пг и протоколом через общую память - https://github.com/darthunix/pg_fusion. Там главными проблемами были стоимость перепаковки datum-arrow, отличия в поведении типов (numeric, текст только в виде utf8 и т.д.), а так же отличия в поведении выражений и операторов (приходилось переписывать почти все готовые узлы).

Потом я решил сделать модульный пакетный исполнитель для системы типов пг - https://github.com/darthunix/tessera. В нем сразу предусмотрено, что могут быть любые форматы сырых пакетных данных из разных tam (и для этих форматов можно реализовать свою обработку без перепаковки в datum). А если разным форматам пакетов нужно друг с другом поговорить или встроиться в построчный исполнитель пг, то данные перепаковываются в пакеты datum. Сейчас главную сложность я вижу в том, чтобы описать код спецификациями, описать процесс разработки для агнетов (проектирование функционала, тестирование, замеры произвотельности на микро и макро бенчах). Возможно, что-то из этого будет полезно и вашему проекту.

Интересный опыт у вас! Похоже, что вся индустрия крутится вокруг одинаковых технологий, похожих идей и наступаем на те же грабли с перепаковкой типов. Обязательно посмотрю на ваш модульный пакетный исполнитель, спасибо!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации