2. Возможности Postgres Pro Shardman #

Postgres Pro Shardman предоставляет наиболее актуальную версию PostgreSQL c дополнительными изменениями и расширениями. Этот продукт включает все новые возможности, реализованные компанией Postgres Professional, а также сторонние доработки, которые уже приняты сообществом PostgreSQL и попадут в новые версии PostgreSQL, а также некоторые возможности, унаследованные от Postgres Pro Enterprise. Таким образом, пользователи Postgres Pro Shardman получают ранний доступ к важным нововведениям и исправлениям.

Postgres Pro Shardman — это решение для распределённых систем. Оно обладает преимуществами единой БД, гарантируя единообразие и предоставляя широкий спектр возможностей масштабирования. Является альтернативой NoSQL и требует от вашего системного администратора БД более глубокой экспертизы, а также ответственного подхода к обработке приложений и запросов.

Строгие гарантии ACID относительно других распределённых баз данных, высокий уровень отказоустойчивости и прозрачное горизонтальное масштабирование служат надёжным основанием для работы с OLTP для CRM/ERP в реальном времени, массово-параллельной архитектурой (MPP, Massively Parallel Processing), а также PaaS, SaaS, FaaS, хранилищами операционных данных (ODS, Operational Data Store) и системами управления мастер-данными (MDM, Master Data Management). Postgres Pro Shardman также отлично подходит для систем, где физическое разделение БД невозможно, а также если у таблиц в БД сложная архитектура.

За более подробной информацией обратитесь к главе Внутренние особенности распределённой системы.

Примечание

Postgres Pro Shardman предоставляется по следующей лицензии: https://postgrespro.ru/products/postgrespro/eula. Обязательно ознакомьтесь с условиями лицензии, прежде чем загружать и использовать Postgres Pro Shardman.

Postgres Pro Shardman обладает следующими преимуществами и улучшениями совместимости:

От Postgres Pro Enterprise дополнительно унаследованы следующие усовершенствования:

  • 64-битные идентификаторы транзакций, исключающие проблемы зацикливания. (См. Подраздел 23.1.5.)
  • Сжатие на уровне страниц. (См. Главу 31.)
  • Справедливое распределение лёгких исключительных блокировок после получения заданного количества разделяемых блокировок. (См. описание параметра lwlock_shared_limit.)
  • Улучшение в libpq обработки подключений с несколькими серверами и перехода от одного к другому. (См. описание параметров hostorder и failover_timeout.)
  • Добавление в libpq возможности забыть введённый пароль, что позволяет предотвратить переподключения, когда это требуется политикой безопасности. (См. описание параметра reusepass.)
  • Поддержка вывода времени в pg_waldump.
  • Алгоритм поиска k ближайших соседей (k-NN) для индекса-B-дерева. (См. Раздел 11.13.)
  • Устранено практически достижимое ограничение на число записей в ACL (списках управления доступом), связанных с таблицами и индексами.
  • Представление pgpro_stat_wal_activity, показывающее объём файлов WAL, который генерирует каждый процесс.
  • Проверка уникальных ограничений в индексах-B-деревьях, выполняемая модулем amcheck.
  • Поддержка передачи именованных и позиционных аргументов скриптам, вызываемым командой \i в psql.
  • Корпоративная редакция приложения pg_probackup, поддерживающая интерфейс Simple Storage Service (S3) для хранения данных в частных облачных хранилищах, CFS (сжатую файловую систему) для инкрементного копирования, а также алгоритмы сжатия lz4 и zstd.
  • Исключение дубликатов блокировок, благодаря которому обеспечивается эффективное хранение в памяти и отслеживание всех исключительных блокировок, удерживаемых процессом запуска резервного сервера во время воспроизведения WAL.
  • Встроенная отказоустойчивость, которая достигается за счёт развёртывания BiHA в рамках кластера Postgres Pro Shardman с физической репликацией, встроенным аварийным переключением узлов, автоматическим выявлением отказа узла, реагированием и последующим изменением конфигурации кластера. Конфигурация такого кластера включает один выделенный узел-лидер и несколько узлов-последователей.
  • Повышенная производительность за счёт уменьшения количества блокировок каталога:

    • Оптимизированный механизм для работы с метаданными таблиц, который позволяет получать информацию об атрибутах с использованием системного кеша вместо прямого чтения из системного каталога.
    • Файл pg_internal.init не аннулируется при анализе таблиц каталога, даже когда статистика для этих таблиц часто меняется. Может быть полезно для 1C.
    • Уменьшенное количество запросов на блокировку таблиц pg_attribute и pg_statistic при выполнении запросов с большим количеством отношений, отсутствующих в кеше системы. Может быть полезно для 1C.
  • Пропуск блокировок для временных отношений и индексов этих отношений, а также ограничение действий, которые суперпользователи могут совершать с временными отношениями из других сеансов. Это полезно для 1C. (См. описание параметра skip_temp_rel_lock.)
  • Управление количеством блокировок вставки при одновременной записи в журнал предзаписи (WAL). Это помогает повысить эффективность записи в WAL.
  • Процесс фоновой записи в своём главном цикле работы заранее создаёт сегменты WAL для снижения нагрузки на обслуживающие процессы. Параметр конфигурации max_wal_segments_prealloc задаёт максимальное количество таких сегментов.
  • Ограниченный объём памяти, выделяемый серверному процессу, что позволяет предотвратить ошибки нехватки памяти (OOM, out of memory). (За подробностями обратитесь к описанию параметра конфигурации max_backend_memory.)
  • Возможность выделения до 1 ГБ памяти для обработки XML-данных. (За подробностями обратитесь к описанию параметра конфигурации xml_parse_huge.)
  • Возможность получения одиночной блокировки SHARE для таблицы во время проверки ограничений внешних ключей. (За подробностями обратитесь к описанию параметра хранения share_lock_fk.)

От Postgres Pro Standard дополнительно унаследованы следующие усовершенствования:

  • Увеличенная скорость и эффективность планирования для различных типов запросов.
  • Уменьшенное потребление памяти при обработке сложных запросов со множеством таблиц.
  • Добавление времени планирования в информацию, выводимую модулем auto_explain.
  • Возможность замены нулевого байта заданным ASCII-символом при загрузке данных с помощью команды COPY FROM. (См. описание параметра nul_byte_replacement_on_import.)

    Возможность замены символа '\u0000' заданным символом Unicode при вызове функции, обрабатывающей JSONB. (За подробностями обратитесь к описанию параметра unicode_nul_character_replacement_in_jsonb.)

  • Реализация механизма PTRACK, позволяющего программе pg_probackup отслеживать изменения страниц при создании инкрементальных резервных копий.
  • Возможность изменения параметра restore_command без перезапуска сервера.
  • Расширенные политики аутентификации, обеспечивающие эффективное управление паролями и контроль доступа. (См. CREATE PROFILE и ALTER ROLE).
  • Встроенные механизмы защиты данных, которые позволяют стерилизовать объекты, перед удалением заполняя их нулями. Обнуление объектов может производиться перед удалением файлов на диске и перед удалением устаревших версий строк (очисткой страниц), освобождением ОЗУ и удалением или перезаписью файлов WAL. (Только сертифицированная редакция.)
  • Статистика очистки таблиц, индексов и баз данных в системных представлениях.
  • Предопределённые роли, позволяющие создавать табличные пространства и управлять профилями без прав суперпользователя.
  • Сбор информации о сбоях сервера, который включается параметром конфигурации crash_info и находится под управлением нескольких параметров, включая этот.
  • Оптимизированное потребление памяти при оценке избирательности для каждого элемента массива.
  • Экспериментальная функциональность, которая включает механизм параллельного выполнения запросов для запросов, использующих хотя бы одну временную таблицу. Эта функциональность полезна для 1C. (См. описание параметра enable_parallel_temptables.)
  • Оценка приблизительной стоимости сброса страниц временных таблиц на диск. Эта функциональность полезна для 1C. (См. описание параметра write_page_cost.)
  • Возможность преобразования подзапросов ANY в соединения LATERAL. (См. описание параметра enable_any_to_lateral_transformation.)
  • Возможность исследовать повреждённые базы данных с помощью функции pg_snapshot_any. За подробностями обратитесь к Подраздел 9.28.13.
  • Улучшенная производительность поиска сегментов для более быстрого вычисления размера таблиц.
  • Улучшенная производительность в многоядерных системах за счёт увеличения до 1024 количества секций хеш-таблицы сопоставлений в общем буфере.
  • Ускоренная обработка журнала предзаписи (WAL) и TOAST и снижение использования дискового пространства за счёт замены значений по умолчанию параметров default_toast_compression и wal_compression на lz4.
  • Подключаемый механизм TOAST, позволяющий разрабатывать и подключать пользовательские реализации TOAST для столбцов таблиц и типов данных в дополнение к реализации по умолчанию. (За подробностями обратитесь к Подраздел 66.2.3.)
  • Автоматическое определение провайдера локалей на основании значения --lc-collate, если провайдер локали не указан в базе данных: libc для локалей C или POSIX, icu для всех других локалей. Также значение по умолчанию параметра --icu-locale совпадает со значением параметра --locale, если оно задано. В противном случае используется значение параметра lc_collate. За дополнительной информацией обратитесь к initdb, createdb и CREATE DATABASE.

Postgres Pro Shardman также включает следующие дополнительные модули и приложения:

  • Расширение aqo для адаптивной оптимизации запросов.
  • Расширение Встроенная отказоустойчивость (BiHA), управляемое с помощью утилит shardmanctl и shardmand и превращающее Postgres Pro Shardman в кластер с физической репликацией и встроенным аварийным переключением узлов, отказоустойчивостью и восстановлением после отказа узлов.
  • Пул соединений pgbouncer.
  • Модуль pg_integrity_check, осуществляющий вычисление и проверку контрольных сумм отслеживаемых файлов. (Только сертифицированная редакция.)
  • Расширение pg_proaudit, позволяющее отслеживать различные события, связанные с безопасностью.
  • pg_probackup — менеджер резервного копирования и восстановления.
  • Утилита pgpro_controldata, показывающая управляющую информацию кластера БД PostgreSQL/Postgres Pro Shardman и параметры совместимости кластера и/или сервера.
  • Расширение pgpro_pwr, позволяющее получать отчёты по нагрузке, полезные для выявления наиболее ресурсоёмких операций в базе данных.
  • Расширение pgpro_stats, которое собирает статистику выполнения SQL-операторов, подсчитывает статистику событий ожидания и предоставляет прочие полезные метрики, которые в PostgreSQL нельзя получить никак иначе. Оно также обеспечивает возможность трассировки сеансов приложений и может создавать представления, эмулирующие другие расширения для сбора статистики.
  • Модуль pg_query_state, дающий возможность узнавать текущее состояние выполнения запросов в обслуживающем процессе.
  • Расширение pgvector, предоставляющее поиск сходства векторов в Postgres Pro Shardman.
  • Расширение pg_wait_sampling, предназначенное для периодического сбора статистики по событиям ожидания. Воспользовавшись этим расширением, вы сможете понять характер активности сервера, в том числе увидеть текущие события ожидания во всех обычных и фоновых рабочих процессах.

Postgres Pro Shardman предоставляет расширенные возможности и функциональность, поэтому предъявляет более строгие требования к поддерживаемым операционным системам. Postgres Pro Shardman совместим со следующими ОС:

  • Ubuntu 20.04/22.04
  • Debian 10/11/12
  • Red Hat Enterprise Linux 7/8/9
  • РЕД ОС 7.3/8
  • Альт 9/10/10SP
  • Astra Linux 1.7/1.8/s390

Выпуски Postgres Pro Shardman следуют за выпусками PostgreSQL, хотя иногда могут выпускаться чаще. Схема версионирования Postgres Pro Shardman основана на схеме версионирования PostgreSQL и включает дополнительную цифру.