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

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

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

Разработка отказоустойчивого горизонтально масштабируемого кластера OLTP

Мы разработали Shardman - симметричный кластер с прозрачным шардингом (секционированием по узлам кластера) данных. Кластер обеспечивает автоматическое исполнение SQL-запросов в распределённой базе данных, транзакционную целостность данных и отказоустойчивость. Согласованное состояние распределённой базы может быть восстановлено на любой момент времени (PITR) из резервной копии.

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

Для этого мы решили ряд технологических вопросов, включая:

  • обеспечение транзакционной целостности и изоляции транзакций (ACID) в распределенной БД;
  • обеспечение планирования распределённых запросов модифицированным планировщиком Postgres Pro;
  • разработка быстрого транспорта для межузловых взаимодействий при исполнении распределённых запросов;
  • разработка утилиты массовой загрузки данных в распределенный кластер;
  • разработка средств согласованного (консистентного) резервного копирования и восстановления кластера и отдельных узлов;
  • обеспечение устойчивой работы кластера при отказе отдельных узлов;
  • разработка средств управления и мониторинга кластера, в т.ч. безостановочное реконфигурирование кластера (решардинг).

Дальнейшие направления развития Shardman связаны с совершенствованием планировщика распределенных запросов, межузлового транспорта и системы управления кластером. В дальнейшем, по мере развития технологии планирования распределенных запросов и колоночного/паркетного хранилища, кластер станет применим и для целей OLAP.

Облегчение миграции с Oracle

В состав СУБД Postgres Pro входят специализированные модули расширения:

  • oracle_fdw для подключения к внешним базам данных Oracle;
  • orafce для поддержки совместимости с системными функциями Oracle.

Одним из факторов, затрудняющих миграцию с Oracle, является наличие в этой СУБД концепции пакетов программного кода (packages), конвертация которых в приемлемые для Postgres структуры требует ручной работы. Мы разработали средства поддержки в Postgres пакетов, близких по функциональности к Oracle, а в дальнейшем и других особенностей Oracle, концептуально совместимых с архитектурой Postgres.

В Oracle имеется большое количество системных пакетов (библиотек служебных функций), для части из них в Postgres Pro Enterprise мы разработали аналоги - это пакеты utl_http, utl_smtp, utl_mail, dbms_lob, pgpro_application_info. Ведется работа по увеличению количества таких аналогов.

С учетом указанных выше доработок Postgres Pro мы создали утилиту миграции ora2pgpro, существенно модифицировав популярную утилиту с открытым кодом ora2pg. Эта утилита постоянно совершенствуется по мере разработки нами новых функций по совместимости  с  Oracle. В частности, она мигрирует коллекции Oracle в разработанные нами аналогичные структуры.

Также мы  ведем разработку средств для автоматизированной миграции данных класса CDC/ETL, и работаем над аналогами Advanced Queueing и ILM.

Облегчение миграции с MS SQL Server

C 15-й версии мы включаем в СУБД Postgres Pro и начинаем поддерживать модуль tds_fdw для подключения внешних баз MS SQL Server и импорта данных из них.

В дальнейшем мы планируем разработать средство для автоматизированной миграции структуры БД и данных из баз MS SQL Server.

Развитие функциональности слабоструктурированных данных (JSON)

В стандарт SQL:2016 была включена поддержка работы с данными в формате JSON, которая в то время уже имелась в PostgreSQL. Однако стандарт предложил модифицировать синтаксис языка SQL для работы с JSON и расширить его функциональность. В PostgreSQL 13 вошли наши разработки, связанные с поиском и адресацией внутри JSON (JSON_PATH), частично реализовавшие требования стандарта и обеспечивающие быстрый индексный поиск по JSON(B) с использованием выражений JSON_PATH. Мы продолжили разработку в этом направлении с целью реализовать требования стандарта полностью, часть из них этих разработок вошла в PostgreSQL 16, а основная часть (JSON_TABLE) - в Postgres Pro Enterprise 15 и скоро выйдет в PostgreSQL 17.

В стандарте SQL:2019 речь зашла о JSON как специальном типе данных (в PostgreSQL такой тип, и даже два, реализованы давно). Однако требования этого стандарта мы видим как сведение обоих типов (JSON, JSONB) к единому типу, обеспечивающему вариативность внутреннего представления с целью оптимизации работы. Эта разработка также ведётся.

Оптимизация работы с большими значениями (TOAST, BLOB)

Технология работы с большими значениями в колонках таблиц БД (до 1Gb) в PostgreSQL носит называние TOAST. Она нуждается в оптимизации, сокращающей объем читаемых и записываемых данных с учётом специфики отдельных типов данных (например, JSON, bytea, файлы). Нами разработан подход (Pluggable TOASTer), позволяющий использовать различные алгоритмы для работы с данными разных типов. Например, для JSON имеет смысл хранить оглавление в начале блока данных, чтобы сократить объем чтения и записи. На тестах с данными, близкими к реальным, можно получить выигрыш в производительности на 1-2 порядка.

В Postgres Pro Enterprise 16 вошли дополнительные модули для хранения больших значений в форме BLOB  - bfile, поддерживающий хранение данных в файловой системе или удаленном хранилище S3 и dbms_lob, имеющий API, аналогичный такому же модулю в Oracle.

Встроенный отказоустойчивый кластер

Существует ряд внешних средств для организации отказоустойчивого кластера на базе нескольких экземпляров Postgres - Corosync/Pacemaker, Stolon, Patroni. Все эти решения поддерживаются нашей компанией, однако каждое из них требует установки и администрирования ПО сторонних производителей.

Мы разработали встроенную систему обеспечения отказоустойчивости - BiHA (Built-in High Availability), не содержащую сторонних зависимостей. Благодаря тому, что система находится внутри СУБД, она способна более качественно детектировать сбои и быстрее на них реагировать. BiHA совместима с pg_probackup в смысле прозрачного резервного копирования и восстановления кластера целиком.

Развитие средств резервного копирования

В течение нескольких лет наша компания развивает свободно распространяемую утилиту резервного копирования pg_probackup, в которой был впервые реализован полноценное и быстрое инкрементальное резервное копирование экземпляра СУБД.  Сейчас идёт работа над третьей версией pg_probackup, которая будет более удобна для интеграции в различные (в т.ч. аппаратные) СРК, а также увеличит скорость копирования и восстановления за счет параллельных операций.

Облачный доступ к Postgres Pro

Мы разработали и развиваем DBaaS-решение для частных и публичных облаков, в том числе для размещения отказоустойчивых и масштабируемых кластеров.

Развитие средств мониторинга Postgres

Нашей компанией разработан ряд средств, облегчающих сбор данных о работе СУБД для мониторинга. Это расширения pg_wait_sampling, pgpro_stats, pgpro_pwr, pg_query_state, mamonsu, агент мониторинга для Zabbix. Мы продолжаем развивать эти средства.

Средство управления и администрирования кластерами Postgres (Postgres Professional Enterprise Manager)

Нами разработано средство управления отдельными инсталляциями, кластерами или корпоративными облаками на основе СУБД семейства Postgres c графическим интерфейсом. Идёт его дальнейшая разработка, связанная с расширением функциональности.

Развитие функций ИИ и ML

Мы развиваем технологии хранения векторных данных и быстрого нечеткого поиска по ним, что сделает Postgres Pro удобной системой для построения современных экспертных систем на технологиях ИИ и ML. В самом СУБД Postgres Pro также используется технология ML для коррекции планов запросов (AQO).

Пул коннектов и CRUD-интерфейс

Начиная с Postgres Pro Enterprise 12 в нём присутствует разработанный нами встроенный пул соединений. В ближайших версиях на смену ему должен придти новый оригинальный пул соединений Proxima, имеющий дополнительную функциональность упрощённого CRUD-интерфейса БД, совместимого с протоколом Redis.

Средства управления планами запросов

Наряду с AQO в Postgres Pro Enterprise присутствуют и разрабатывается следующие средства для расширенного управления планами запросов:

pg_hint_plan – возможность модификации плана запросов с помощью хинтов; sr_plan – сохранение планов отдельных запросов для повторного использования; динамическая коррекция планов запросов по ходу их исполнения.

Развитие средств защиты информации и безопасной работы с данными

С целью обеспечения требований ФСТЭК по информационной безопасности нами выполнены и продолжают выполняться для каждой последующей версии статический и динамический анализ программного кода PostgreSQL и Postgres Pro, включая фаззинг.

Разработаны и совершенствуются подсистемы:

В планах разработки:

  • возможность скрытия исходных кодов хранимых процедур и функций БД;
  • прозрачное шифрование данных (TDE), в т.ч. с подключением различных сертифицированных средств для прозрачного шифрования данных. Уже сейчас возможно шифрование данных с использованием CryptoDB компании Аладдин Р.Д.

Поддержка российских аппаратных платформ

СУБД Postgres Pro официально поддерживает процессорную платформу Эльбрус (e2kv4 и e2kv5). Также поддерживаются процессоры на платформе ARM (включая Байкал и Kungpeng). В планах - поддержка платформ RISC-V и Loongson.

Ускорение выхода последующих релизов, совершенствование внутренних процедур разработки

С 2021 года нами ведется работа по оптимизации рабочего цикла разработки релизов Postgres Pro с целью максимального приближения выхода релизов Postgres Pro к релизам PostgreSQL. Нами разработана и внедрена практика непрерывного слияния изменений и непрерывного тестирования для дальнейшего повышения качества кода. С 2019 года мы используем в разработке методики РБПО, в т.ч. статический и динамический анализ программного кода и фаззинг. В 2025 г. планируется сертификация процессов РБПО по ГОСТ Р 56939-202Х «Защита информации. Разработка безопасного программного обеспечения. Общие требования».

Увеличение количества поддерживаемых сторонних расширений СУБД

Среди новых расширений PostgreSQL, которые уже сделаны или будут сделаны совместимыми с Postgres Pro и взяты на техническую поддержку: