Управление расширениями
Managed Service for PostgreSQL поддерживает многие стандартные расширения PostgreSQL и некоторые нестандартные. Полный список доступных расширений и их версий в зависимости от версии PostgreSQL приведен ниже.
Важно
В кластерах Managed Service for PostgreSQL нельзя управлять расширениями PostgreSQL с помощью команд SQL.
Подключение библиотек для расширений
Некоторые расширения требуют подключения библиотек общего пользования (shared libraries). Чтобы подключить библиотеку, при создании или изменении кластера укажите ее имя в параметре Shared preload libraries.
Managed Service for PostgreSQL поддерживает подключение библиотек:
auto_explain
— необходима для работы расширения auto_explain ;pgaudit
— необходима для работы расширения pgaudit ;pg_cron
— необходима для работы расширения pg_cron ;pg_hint_plan
— необходима для работы расширения pg_hint_plan ;pg_qualstats
— необходима для работы расширения pg_qualstats ;timescaledb
— необходима для использования расширения TimescaleDB .
Важно
Подключение библиотеки общего пользования приведет к перезагрузке PostgreSQL на хосте-мастере.
Получить список установленных расширений
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите блок Базы данных.
- В колонке Расширения PostgreSQL будет отображаться список расширений, подключенных к каждой базе данных.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список расширений для базы данных, выполните команду:
yc managed-postgresql database get <имя_БД> \
--cluster-name <имя_кластера>
Включенные расширения будут перечислены в списке extensions
.
Чтобы получить список расширений для базы данных, воспользуйтесь методом REST API get для ресурса Database или вызовом gRPC API DatabaseService/Get и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя базы данных в параметре
databaseName
.
Изменить список установленных расширений
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Базы данных.
- В строке с нужной базой данных нажмите значок
- Выберите необходимые расширения и нажмите кнопку Изменить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить расширения для базы данных, передайте их список в аргументе --extensions
команды CLI. При этом расширения, не упомянутые в списке, будут выключены.
yc managed-postgresql database update <имя_БД> \
--cluster-name <имя_кластера>
--extensions <имя_расширения>=<версия>,<имя_расширения>=<версия>...
Примечание
Версия расширения не учитывается при обработке команды — в качестве версии можно передать любую непустую строку.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации базы данных кластера Managed Service for PostgreSQL см. в документации провайдера Terraform
. -
Добавьте к описанию соответствующей базы данных кластера один или несколько блоков
extension
(по одному блоку на каждое расширение):resource "yandex_mdb_postgresql_database" "<имя_БД>" { ... extension { name = "<имя_расширения>" version = "<версия_расширения>" } ... }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы изменить список расширений для базы данных, воспользуйтесь методом REST API update для ресурса Database или вызовом gRPC API DatabaseService/Update и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя изменяемой базы данных в параметре
databaseName
. Чтобы узнать имя базы данных, получите список баз данных в кластере. - Один или несколько объектов с настройками расширений в параметре
extensions
. - Список настроек базы данных, которые необходимо изменить (в данном случае —
extensions
), в параметреupdateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Поддерживаемые расширения и утилиты PostgreSQL
Расширение \ Версия PostgreSQL |
11 |
12 |
13 |
14 |
15 |
16 |
Содержит функции для нормализации почтовых адресов, переданных в виде строки. |
2.5.2 |
3.0.0 |
3.1.4 |
3.1.4 |
3.3.2 |
3.4.0 |
Содержит правила нормализации почтовых адресов США и Канады для расширения |
2.5.2 |
3.0.0 |
3.1.4 |
3.1.4 |
3.3.2 |
3.4.0 |
Содержит функции проверки логической согласованности реляционной структуры баз данных. Для использования расширения необходима роль |
1.1 |
1.2 |
1.2 |
1.3 |
1.3 |
1.3 |
Содержит функцию
|
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
Добавляет доступ к индексам баз данных на основе фильтров Блума |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
Содержит примеры классов оператора GIN (Generalized Inverted Index, обобщенный инвертированный индекс), используемого для обратного поиска. |
1.3 |
1.3 |
1.3 |
1.3 |
1.3 |
1.3 |
Содержит классы оператора GiST (Generalized Search Tree, обобщенное дерево поиска). В отличие от индексов B-tree, GiST поддерживает операторы |
1.5 |
1.5 |
1.5 |
1.6 |
1.7 |
1.7 |
Содержит тип данных |
1.5 |
1.6 |
1.6 |
1.6 |
1.6 |
1.6 |
Добавляет поддержку Foreign Data Wrapper |
1.3 |
1.3 |
1.3 |
- |
1.4 |
- |
Содержит тип данных |
1.4 |
1.4 |
1.4 |
1.5 |
1.5 |
1.5 |
Добавляет поддержку подключения к другим базам данных PostgreSQL из текущей сессии. Для использования расширения необходима роль |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
Содержит пример дополнительного шаблона словаря для полнотекстового поиска. Использование шаблона позволяет избежать разрастания списка уникальных слов и увеличивает скорость поиска. |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
Содержит пример дополнительного шаблона словаря синонимов (Extended Synonym Dictionary) для полнотекстового поиска: при поиске слова будут найдены также все его синонимы. |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
Содержит модуль для вычисления расстояний между точками на поверхности Земли. Вычисление расстояния производится двумя способами:
|
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
Содержит функции, используемые для определения сходства и различия строк. |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
1.2 |
Содержит тип |
1.5 |
1.6 |
1.7 |
1.8 |
1.8 |
1.8 |
Содержит виртуальные индексы. Они позволяют с минимальными затратами ресурсов выяснить, будет ли PostgreSQL использовать реальные индексы при обработке проблемных запросов. |
1.3.1 |
1.3.1 |
1.3.1 |
1.3.1 |
1.3.1 |
1.4.0 |
Содержит функции и операторы для работы с массивами целых чисел, в которых нет пустых ( |
1.2 |
1.2 |
1.3 |
1.5 |
1.5 |
1.5 |
Содержит типы данных для международных стандартов нумерации продукции EAN13, UPC, ISBN, ISMN и ISSN. Проверка и формирование номеров осуществляется по заданному списку префиксов. |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
Добавляет поддержку языка JsQuery, используемого для работы с данными типа |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
Содержит тип данных |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
Содержит тип данных |
1.1 |
1.1 |
1.2 |
1.2 |
1.2 |
1.2 |
Содержит функцию |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
Добавляет поддержку Foreign Data Wrapper Для использования расширения необходима роль |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
Добавляет функции и операторы, которые эмулируют набор функций и пакетов БД Oracle. |
3.18 |
3.18 |
3.18 |
3.18 |
3.25 |
4.6 |
Добавляет функции мониторинга общего буферного кеша. Для использования расширения необходима роль |
1.3 |
1.3 |
1.3 |
1.3 |
1.3 |
1.4 |
Позволяет добавлять в базу данных задачи по расписанию и выполнять SQL-запросы непосредственно из задачи. Требует подключения библиотеки общего пользования Для использования расширения необходима роль Подключение расширения приводит к перезагрузке всех хостов. Подробнее см. в разделе Использование pg_cron. |
1.4.1 |
1.4.1 |
1.4.1 |
1.4.1 |
1.4.1 |
1.5 |
Содержит функции для управления планировщиком PostgreSQL. Требует подключения библиотеки общего пользования |
1.3.4 |
1.3.5 |
1.3.7 |
1.4 |
- |
1.6.0 |
Добавляет расширенные возможности по партицированию таблиц, в том числе на основе времени или последовательности. |
4.0.0 |
4.2.0 |
4.4.0 |
4.6.0 |
4.7.0 |
4.7.4 |
Добавляет возможность сбора статистики по предикатам в выражениях Требует подключения библиотеки общего пользования |
2.0.3 |
2.0.3 |
2.0.3 |
2.0.3 |
2.0.4 |
2.1.0 |
Позволяет загружать данные отношений в кеш операционной системы или в кеш буферов PostgreSQL. |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
Содержит функции для удаления раздувания (bloat) из таблиц и индексов. В отличие от Для использования расширения необходима роль |
1.4.6 |
1.4.6 |
1.4.6 |
1.4.7 |
1.4.8 |
1.4.8 |
Добавляет возможность сбора статистики по операциям чтения и записи, выполненным на уровне файловой системы. Требует включения расширения Для использования расширения необходима роль |
2.1.1 |
2.1.1 |
2.1.3 |
2.2.0 |
2.2.1 |
2.2.1 |
Добавляет возможности отслеживания планирования и сбора статистики выполнения всех SQL-запросов, запущенных в кластере. Для использования расширения необходима роль |
1.6 |
1.7 |
1.8 |
1.9 |
1.10 |
1.10 |
Позволяет создавать логический слот репликации в прошлом. |
1.0 |
1.0 |
1.0 |
1.0 |
1.1 |
1.1.1 |
Содержит инструменты для быстрого поиска похожих строк на основе сопоставления триграмм. |
1.4 |
1.4 |
1.5 |
1.6 |
1.6 |
1.6 |
Предоставляет дополнительные инструменты для логирования и повышает возможности аудита. Требует подключения библиотеки общего пользования Подробнее см. в разделе Использование pgaudit. |
1.0.0 |
1.0.0 |
1.0.0 |
1.0.0 |
1.7 |
16.0 |
Предоставляет криптографические функции для PostgreSQL. Подробнее см. в разделе Использование pgcrypto. |
1.3 |
1.3 |
1.3 |
1.3 |
1.3 |
1.3 |
Добавляет поддержку потоковой логической репликации с использованием механизма публикации/подписки. |
2.4.1 |
2.4.1 |
2.4.1 |
2.4.1 |
- |
2.4.3 |
Содержит функции для геопространственной маршрутизации базы данных PostGIS |
2.6.2 |
2.6.2 |
3.0.2 |
3.3.0 |
3.4.1 |
3.5.0 |
Содержит функцию |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
1.2 |
Содержит функции для получения статистики на уровне кортежей. Для использования расширения необходима роль |
1.5 |
1.5 |
1.5 |
1.5 |
1.5 |
1.5 |
Добавляет поиск векторного подобия. |
0.2.5 |
0.2.5 |
0.2.5 |
0.2.5 |
0.3.2 |
- |
Добавляет поддержку процедурного языка основе JavaScript и движка V8. |
3.0.0 |
3.0.0 |
3.0.0 |
3.0.0 |
- |
3.2.0 |
Добавляет возможности хранения и обработки объектов геоинформационных систем (ГИС) в базах данных PostgreSQL. |
2.5.2 |
3.0.0 |
3.1.4 |
3.1.4 |
3.3.2 |
3.4.0 |
Содержит функции для геокодирования на основе данных в формате TIGER |
2.5.2 |
3.0.0 |
3.1.4 |
3.1.4 |
3.3.2 |
3.4.0 |
Содержит типы данных и функции расширения |
2.5.2 |
3.0.0 |
3.1.4 |
3.1.4 |
3.3.2 |
3.4.0 |
Добавляет поддержку Foreign Data Wrapper Для использования расширения необходима роль |
1.0 |
1.0 |
1.0 |
1.1 |
1.1 |
1.1 |
Добавляет метод доступа для работы с индексами |
1.3 |
1.3 |
1.3 |
1.3 |
1.3 |
1.3 |
Содержит тип данных |
1.3 |
1.3 |
1.3 |
1.4 |
1.4 |
1.4 |
Содержит набор функций для определения сходства массивов. |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
Содержит набор функций, возвращающих таблицы (наборы строк). |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
1.0 |
Добавляет возможности автоматического партицирования таблиц по времени и пространству (ключу партицирования), сохраняя при этом стандартный интерфейс PostgreSQL для работы с данными. Это позволяет масштабировать PostgreSQL для обработки временных рядов. Требует подключения библиотеки общего пользования В сервис устанавливается издание TimescaleDB Apache 2 Edition. Оно имеет ограниченную функциональность по сравнению с TimescaleDB Community Edition. Изменить издание нельзя. Подробнее об ограничениях см. в документации TimescaleDB |
2.3.1 |
2.4.2 |
2.5.2 |
2.6.1 |
2.9.0 |
2.13.0-dev |
Содержит словарь для поиска текста без учета диакритических знаков. |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
Содержит функции для генерации UUID по стандартным алгоритмам. |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
Добавляет поддержку запросов XPath и языка XSLT. |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
1.1 |
Утилита pgcompacttable
Синтаксис использования:
./bin/pgcompacttable \
-h c-<идентификатор_кластера>.rw.mdb.yandexcloud.net \
-p 6432 \
-U <имя_пользователя> \
-W <пароль> \
-d <имя_БД> \
-n <имя_схемы> \
-t <имя_таблицы>
Требует включения расширения pgstattuple
.
Для использования утилиты необходима роль mdb_admin
.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc