План разработок
Важнейшее направление работы компании 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.
Встроенный отказоустойчивый кластер BiHA
Существует ряд внешних средств для организации отказоустойчивого кластера на базе нескольких экземпляров 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 графическим интерфейсом. Идёт его дальнейшая разработка, связанная с расширением функциональности.
Ближайшие планы по улучшению консоли:
- объединение со встроенной системой управления отказоустойчивыми кластерами — Postgres Pro BiHA;
- интеграция всех возможностей резервного копирования pg_probackup;
- расширение функционала пресетов конфигурации экземпляров;
- отображение информации о блокировках;
- управление расширениями;
- интеграция с распределённой системой управления базами данных — Postgres Pro Shardman;
- более гибкое управление расписаниями и дальнейшее усовершенствование UI/UX.
Развитие функций ИИ и 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.
Расширение карты совместимости
Линейка СУБД Postgres Pro совместима с более чем 300 российскими решениями, включая все самые популярные операционные системы, серверы приложений, СЭД, ERP, PLM, АБС, ГИС. Подробнее о совместимых решениях можно узнать на странице.
Программные аппаратные комплексы
В 2024 году вышла новая версия Машины баз данных Скала^р МБД.П на базе сертифицированной СУБД Postgres Pro Enterprise. Благодаря архитектурным подходам пиковая производительность Машины (ПАК) баз данных Скала^р МБД.П возросла на 60% и превышает 65 000 транзакций в секунду. ПАК Скала^р обеспечивает работу базы данных, емкостью до 150 ТБ.
В разработке программных аппаратных комплексов Postgres Professional ориентируется на ряд требований:
- обеспечение высокой производительности ПАК;
- работа с базами данных большого размера;
- повышение надежности.
Ускорение выхода последующих релизов, совершенствование внутренних процедур разработки
С 2021 года нами ведется работа по оптимизации рабочего цикла разработки релизов Postgres Pro с целью максимального приближения выхода релизов Postgres Pro к релизам PostgreSQL. Нами разработана и внедрена практика непрерывного слияния изменений и непрерывного тестирования для дальнейшего повышения качества кода. С 2019 года мы используем в разработке методики РБПО, в т.ч. статический и динамический анализ программного кода и фаззинг. В 2025 г. планируется сертификация процессов РБПО по ГОСТ Р 56939-202Х «Защита информации. Разработка безопасного программного обеспечения. Общие требования».
Увеличение количества поддерживаемых сторонних расширений СУБД
Среди новых расширений PostgreSQL, которые уже сделаны или будут сделаны совместимыми с Postgres Pro и взяты на техническую поддержку: