План разработок

Важнейшее направление работы компании Postgres Professional – это непрерывное совершенствование СУБД Postgres Pro. Мы работаем вместе с международным сообществом разработчиков PostgreSQL и стремимся к тому, чтобы наши разработки принимались в свободно распространяемую СУБД PostgreSQL.

Здесь перечислены главные  направления нашей разработки.

Эффективное секционирование таблиц

Как известно, традиционная для PostgreSQL реализация секционирования через наследование таблиц имеет много недостатков, один из них - деградация производительности при большом количестве секций. Мы разрабатываем новый механизм секционирования, который использует не наследование, а специально предназначенные для него алгоритмы на уровне планирования и исполнения запросов.

Подключаемые хранилища

PostgreSQL хорошо известен своей высокой степенью расширяемости. Последними достижениями являются FDW, пользовательские методы индексного доступа, обобщённый WAL. Мы не так далеки от реализации подключаемых хранилищ. Концепция API для подключаемых хранилищ была представлена на PGCon 2016.

Резервное копирование

Ведется работа по нескольким направлениям: блочный инкрементальный бэкап, валидация бэкапа, частичный бэкап и восстановление

JIT-компиляция запросов

Современный подход к выполнению запросов по сути представляет собой интерпретацию созданного планировщиком дерева плана. JIT-компиляция запросов предполагает компиляцию плана в набор инструкций для непосредственного исполнения. Это позволит избавиться от многоуровневой непрямой адресации, и, следовательно, ускорить выполнение запросов.

Мультимастерный кластер с шардингом

Multi-master кластер с системой шардинга, который обеспечит масштабируемое чтение/запись в сочетании с высокой доступностью, очевидно, самая долгожданная функция СУБД. Опыт показывает, что для достижения цели нужно двигаться последовательно, шаг за шагом. Компания Postgres Professional присоединилась к работе PostgreSQL-сообщества для решения этой задачи.

Управление планами запросов

Критичные бизнес-приложения требуют постоянного контроля и корректировки плана выполнения запросов. Проблема усложняется тем, что ресурсы, расходуемые на выполнение запроса, могут существенно отличаться для незначительных изменений в плане выполнения запросов. Таким образом, мы работаем с учетом постоянного риска выбора неверного плана и, как следствие, падения производительности всей системы после сбора новых статистических данных. DBA хотели бы защитить себя от этого риска путем «замораживания» планов для критично важных запросов.

Пулы соединений

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

Адаптивное планирование запросов

Мы работаем над новыми алгоритмами, дополняющими существующий планировщик запросов.

Сжатие данных на уровне страниц

В настоящее время для сжатия отдельных значений используется PGLZ. Однако в отдельных случаях значительное сжатие возможно только при совместном сжатии нескольких значений. Именно поэтому мы занимаемся разработкой сжатия данных на уровне страниц.

Улучшение временных таблиц

Временные таблицы активно используются во многих случаях. К повышению производительности может привести вывод временных таблиц из системного каталога. Необходимо также научиться работать с временными таблицами на read-only репликах.

Глобальные индексы

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