Multicorn: разработка Foreign Data Wrapper'ов на языке Python
Multicorn - это обобщенный Foreign Data Wrapper (FDW, интерфейс для подключения внешних источников данных, устоявшегося русского названия пока нет), предоставляющий возможность разработки конкретных FDW на языке Python, что упрощает их разработку.
Мы узнаем:
- Что такое FDW, как работает Multicorn, и какие готовые FDW поставляются вместе с ним.
- Как написать свой FDW на python, включая новый интерфейс IMPORT FOREIGN SCHEMA, появившийся в версии 9.5.
- Внутренности Multicorn: что он делает и что не делает внутри.
После общего рассмотрения FDW и Multicorn, мы детальнее рассмотрим некоторые FDW, поставляемые с ним.
Затем проведем полный тур по API Multicorn, чтобы научить вас создавать FDW на Python, включая следующие детали:
- испольование определений таблиц
- пробрасывание WHERE
- ограничения колонок
- как влиять на планировщик
- как писать во внешнюю таблицу
- как работать с импортом внешней схемы
- пробрасывание ORDER BY
- управление транзакциями
Все это будет объяснено наглядно, с примерами кода, позволяющими слушателям с нуля создать свой FDW на Python.
Слайды
Видео
Другие доклады
-
Федор Сигаев Postgres ProfessionalАнастасия Лубенникова Postgres Professional РазработчикАлександр Коротков Postgres Professional Руководитель разработки
Программирование на уровне ядра и расширений PostgreSQL
На мастер-классе будет рассказано про устройство внутренних интерфейсов PostgreSQL, о том, как их использовать для написания собственных патчей или расширений, и как продвигать результаты своей работы в сообществе. Анастасия Лубенникова — российский разработчик PostgreSQL, уже известный мировому сообществу – работает над курсом «молодого бойца» для программистов PostgreSQL, что уже анонсировалось в Facebook и на Хабре: Hacking PostgreSQL.
Отдельные части этого курса, подкрепленные многолетним опытом Федора Сигаева и Александра Короткова, составят основу мастер-класса. Мастер-класс рассчитан на программистов, владеющих языком C.
-
ДДмитрий Мельник ИСП РАН разработчик
Ускорение исполнения запросов в PostgreSQL с использованием JIT-компилятора LLVM
В настоящее время в PostgreSQL для исполнения SQL-запросов используется интерпретатор. Это приводит к накладным расходам, связанным с неявными вызовами функций-обработчиков и проверок, которых можно было бы избежать при создании исполняемого кода "на лету" (JIT-компиляции) под конкретный SQL-запрос: в этом случае во время выполнения уже известна структура используемых таблиц и типы данных. Особенно это актуально для сложных запросов, где производительность процессора является основным ограничением. В настоящий момент существует два известных проекта, реализующих JIT-компиляцию в PostgreSQL: коммерческое решение Vitesse DB и open-source проект PGStorm. В первом проекте за счет использования LLVM JIT авторам удается получить ускорение до 8 раз на тестах из набора TPC-H. Второй проект реализует JIT-компиляцию запроса с использованием CUDA для исполнения его на GPU, что позволяет ускорить выполнение некоторых типов запросов на порядок.
Наша работа посвящена добавлению поддержки JIT-компиляции SQL-запросов в PostgreSQL с использованием компиляторной инфраструктуры LLVM. В докладе будет подробно рассмотрено, как JIT-компиляция может быть использована для ускорения различных этапов исполнения SQL-запросов, а также особенности трансляции SQL-запросов в LLVM-биткод для получения эффективного исполняемого кода. Также будут представлены предварительные результаты тестирования JIT-компилятора на наборе тестов TPC-H.
-
Евгений Сергеев
Lua в Postgres(из alpha в beta)
В докладе хотел бы рассказать про возможности использования языка луа в постгресе, способы расширения функциональности при помощи готовых модулей, возможности удаленной отладки, про проделанные изменения с версии 1.0, отличия в стиле написания кода plpgsql и pllua при использовании функций как аргументов. Так же можно рассказать про некоторые спорные моменты, такие как расширение поддерживаемых типов данных в этом языке. Если интересна другая сторона, то могу поделиться опытом доработки фунциональности скриптового языка в постгресе.
-
Владимир Ситников Pgjdbc, JMeter committer Инженер по производительности
PostgreSQL и JDBC: выжимаем все соки
Все говорят, что для максимальной производительности работы из Java с базой данных нужно использовать PreparedStatements и Batch DML. Практика показывает, что нельзя слепо идти на поводу у прописных истин. Нужно понимать особенности конкретной базы и характера передаваемых данных. В докладе мы рассмотрим то, как эффективное использование протокола PostgreSQL позволяет добиться высокой производительности при выборке и сохранении данных. На примерах увидим как простые изменения в коде приложения и JDBC драйвера на порядок ускоряют запросы. Мы увидим как задействовать механизм server prepared statements из клиенсткого кода и узнаем его узкие места. Обсудим средства эффективной передачи данных в базу. Многие обсуждаемые доработки недавно вошли в состав официального JDBC драйвера. Доклад будет полезен не только Java программистам, т.к. многие подводные грабли вытекают из самого протокола общения PostgreSQL с внешним миром.