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 обладает следующими преимуществами и улучшениями совместимости:
- Строгие гарантии ACID относительно других распределённых баз данных.
- Совместимость с Postgres Pro Enterprise.
- Поддержка одновременной работы нескольких кластеров в рамках одного распределённого кластера.
- Прозрачное горизонтальное масштабирование без необходимости перехода СУБД на базе NoSQL.
- Встроенная поддержка репликации без единой точки отказа, возможность назначения любого узла координатором без необходимости выключения системы и без потери данных.
- Поддержка до 100 узлов кластера.
- Высокая степень доступности с поддержкой режимов ведущего и резервного узлов, а также синхронного решения для обеспечения отказоустойчивости.
- Инструменты для поддержки уровня изоляции
REPEATABLE READ в распределённой системе, а также рекомендательные блокировки. - Возможность работы с кластером как с полнофункциональной СУБД.
- Инструменты резервного копирования и восстановления для поддержки согласованного полного и инкрементального резервного копирования с журналированием.
- Восстановление на момент времени (PITR) в качестве согласованной точки синхронизации.
- Создание кластера с высокой доступностью с несколькими ведущими узлами при помощи специальных утилит.
- Хранимые процедуры.
- Полнотекстовый поиск.
- Покрывающие индексы.
- Индексы B-tree, hash, GiST, GIN, SP-GiST, BRIN.
- Процедурные языки Perl и Python.
- Поддержка стандарта ANSI SQL.
- Хранение и обработка большого объёма данных (от 1 ПБ).
- Интерфейсы для работы с C++, Ruby, C, ODBC, Perl, Python, Tcl и Java.
- Кодировки EUC, UTF-8 и Mule.
- Сжатая файловая система.
- Обращение к данным, находящимся на внешних серверах PostgreSQL, с помощью postgres_fdw.
- Встроенный агент мониторинга.
- Неограниченное количество записей и индексов, максимальный размер секции секционированной таблицы — 32 ТБ, максимальный размер атрибута — 1 ГБ, максимальное количество атрибутов — 1600.
- Тонкая настройка управления доступом на основе разных уровней доступа и ролей.
От Postgres Pro Enterprise дополнительно унаследованы следующие усовершенствования:
От 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. - Смягчение ограничений синхронной репликации, в результате которого ведущий сервер может продолжать работать при временной недоступности одного из ведомых. (См. описание параметра synchronous_standby_gap.)
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 совместим со следующими ОС:
Выпуски Postgres Pro Shardman следуют за выпусками PostgreSQL, хотя иногда могут выпускаться чаще. Схема версионирования Postgres Pro Shardman основана на схеме версионирования PostgreSQL и включает дополнительную цифру.