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

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

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

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

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

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

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

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

В дальнейшем, по мере развития технологии планирования распределенных запросов, кластер станет применим и для целей OLAP.

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

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

  • oracle_fdw для подключения к внешним базам данных Oracle;
  • orafce для поддержки совместимости с системными функциями Oracle. Набор поддерживаемых функций будет расширяться усилиями нашей компании. В частности, мы планируем поработать над функциями отправки HTTP-запросов и e-mail из хранимых процедур.

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

Также мы планируем разработать средство для автоматизированной миграции структуры БД и данных из баз Oracle.

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

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

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

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

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

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

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

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

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

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

Мы разработали систему сборки пакетов Patroni, совместимую с Postgres Pro. Кроме этого, в СУБД Postgres Pro 16-й версии войдёт разрабатываемое нами решение для обеспечения отказоустойчивости "из коробки", не требующее сторонних решений. Данное решение будет совместимо с pg_probackup в смысле прозрачного резервного копирования и восстановления кластера целиком.

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

В течение нескольких лет наша компания развивает свободно распространяемую утилиту резервного копирования pg_probackup. В настоящее время идёт работа над функциями

  • резервного копирования в облачной среде с использованием протокола S3;
  • резервного копирования в корпоративные коммерческие СРК;
  • избирательного копирования и восстановления отдельных БД в рамках экземпляра.

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

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

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

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

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

Нами разрабатывается средство управления отдельными инсталляциями, кластерами или корпоративными облаками на основе СУБД семейства Postgres, со следующими функциями:

  • Старт, рестарт, остановка экземпляров, изменение ролей в кластере (switchover).
  • Резервное копирование и восстановление данных.
  • Настройка параметров СУБД.
  • Мониторинг функционирования экземпляров СУБД
  • Просмотр структуры и содержимого БД, исполнение SQL-команд над отдельными БД или в серийном режиме.

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

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

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

  • очистки памяти и диска для исключения доступа к удалённым данным;
  • контроля целостности программного кода;
  • управления расширенными парольными политиками;
  • аудита использования СУБД.

В планах разработки – средства для:

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

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

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

Ускорение выхода последующих релизов

С 2021 года нами ведется работа по оптимизации рабочего цикла разработки релизов Postgres Pro с целью максимального приближения выхода релизов Postgres Pro к релизам PostgreSQL. Нами разработана и внедрена практика непрерывного слияния изменений и непрерывного тестирования для дальнейшего повышения качества кода.

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

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