Расширения PostgreSQL в Базе данных Azure для PostgreSQL — один сервер

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

База данных Azure для PostgreSQL — одиночный сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для PostgreSQL — гибкий сервер. Дополнительные сведения о миграции на База данных Azure для PostgreSQL — гибкий сервер см. в статье "Что происходит с одним сервером База данных Azure для PostgreSQL?".

PostgreSQL предоставляет возможность расширить функциональность базы данных с помощью расширений. Расширения позволяют объединить несколько связанных объектов SQL в один пакет, чтобы загружать и удалять их из базы данных одной командой. После загрузки в базу данных расширения действуют как встроенные функции.

Как использовать расширения PostgreSQL

Чтобы использовать расширения PostgreSQL, их необходимо сначала установить в базу данных. Чтобы установить определенное расширение, выполните команду CREATE EXTENSION из средства PSQL, чтобы загрузить упакованные объекты в базу данных.

База данных Azure для PostgreSQL поддерживает подмножество ключевых расширений, перечисленных ниже. Эти сведения также можно получить, выполнив SELECT * FROM pg_available_extensions;. Никакие другие расширения не поддерживаются. С помощью Базы данных Azure для PostgreSQL невозможно создать свое собственное расширение.

Расширения Postgres 11

В серверах Базы данных Azure для PostgreSQL с Postgres версии 11 доступны следующие расширения.

Расширение Версия расширения Description
address_standardizer 2.5.1 Используются для анализа адреса в составных элементы.
address_standardizer_data_us 2.5.1 пример набора данных для стандартизации адресов США
btree_gin 1,3 поддержка индексирования общих типов данных в GIN
btree_gist 1.5 поддержка индексирования общих типов данных в GiST
citext 1.5 тип данных для строк символов без учета регистра
cube 1.4 тип данных для многомерных кубов
dblink 1.2 подключение к другим базам данных PostgreSQL c базы данных
dict_int 1.0 шаблон словаря текстового поиска для целых чисел
earthdistance 1,1 вычисляет ортодромические расстояния на поверхности Земли
fuzzystrmatch 1,1 определяет сходство и различия между строками
hstore 1.5 тип данных для хранения наборов пар (ключ, значение)
hypopg 1.1.2 гипотетические индексы для PostgreSQL
intarray 1.2 поддержка функций, операторов и индексов для одномерных массивов целых чисел
isn 1.2 типы данных для международных стандартов нумерации продуктов
ltree 1,1 тип данных для иерархических древовидных структур
orafce 3,7 Функции и операторы, эмулирующие подмножество функций и пакетов из коммерческой системы управления реляционной базой данных
pgaudit 1.3.1 предоставляет функции аудита
pgcrypto 1,3 криптографические функции
pgrouting 2.6.2 Расширение pgRouting
pgrowlocks 1.2 отображение сведений о блокировке на уровне строк
pgstattuple 1.5 отображение статистики на уровне кортежей
pg_buffercache 1,3 проверка общего буферного кэша
pg_partman 4.0.0 Расширение для управления секционированными таблицами по времени или идентификатору
pg_prewarm 1.2 предварительная подготовка реляционных данных
pg_stat_statements 1,6 отслеживание статистики выполнения всех инструкций SQL
pg_trgm 1.4 измерение степени сходства текста и поиск по индексу на основе триграмм
plpgsql 1.0 процедурный язык PL/pgSQL
plv8 2.3.11 доверенный процедурный язык PL/JavaScript (версия 8)
postgis 2.5.1 геометрия, география и растровые пространственные типы и функции PostGIS
postgis_sfcgal 2.5.1 функции PostGIS SFCGAL
postgis_tiger_geocoder 2.5.1 PostGIS Tiger для геокодирования и инвертированного геокодирования
postgis_topology 2.5.1 пространственные типы и функции топологии PostGIS
postgres_fdw 1.0 оболочка внешних данных для удаленных серверов PostgreSQL
tablefunc 1.0 функции для полного управления таблицами, включая перекрестные таблицы
timescaledb 1.7.4 включает масштабируемые вставки и сложные запросы для данных временных рядов
unaccent 1,1 словарь текстового поиска, удаляющий акценты
uuid-ossp 1,1 создает идентификаторы UUID

Расширения Postgres 10

В серверах Базы данных Azure для PostgreSQL с Postgres версии 10 доступны следующие расширения.

Расширение Версия расширения Description
address_standardizer 2.5.1 Используются для анализа адреса в составных элементы.
address_standardizer_data_us 2.5.1 пример набора данных для стандартизации адресов США
btree_gin 1,3 поддержка индексирования общих типов данных в GIN
btree_gist 1.5 поддержка индексирования общих типов данных в GiST
chkpass 1.0 тип данных для автоматически зашифрованных паролей
citext 1.4 тип данных для строк символов без учета регистра
cube 1.2 тип данных для многомерных кубов
dblink 1.2 подключение к другим базам данных PostgreSQL c базы данных
dict_int 1.0 шаблон словаря текстового поиска для целых чисел
earthdistance 1,1 вычисляет ортодромические расстояния на поверхности Земли
fuzzystrmatch 1,1 определяет сходство и различия между строками
hstore 1.4 тип данных для хранения наборов пар (ключ, значение)
hypopg 1.1.1 гипотетические индексы для PostgreSQL
intarray 1.2 поддержка функций, операторов и индексов для одномерных массивов целых чисел
isn 1,1 типы данных для международных стандартов нумерации продуктов
ltree 1,1 тип данных для иерархических древовидных структур
orafce 3,7 Функции и операторы, эмулирующие подмножество функций и пакетов из коммерческой системы управления реляционной базой данных
pgaudit 1.2 предоставляет функции аудита
pgcrypto 1,3 криптографические функции
pgrouting 2.5.2 Расширение pgRouting
pgrowlocks 1.2 отображение сведений о блокировке на уровне строк
pgstattuple 1.5 отображение статистики на уровне кортежей
pg_buffercache 1,3 проверка общего буферного кэша
pg_partman 2.6.3 Расширение для управления секционированными таблицами по времени или идентификатору
pg_prewarm 1,1 предварительная подготовка реляционных данных
pg_stat_statements 1,6 отслеживание статистики выполнения всех инструкций SQL
pg_trgm 1,3 измерение степени сходства текста и поиск по индексу на основе триграмм
plpgsql 1.0 процедурный язык PL/pgSQL
plv8 2.1.0 доверенный процедурный язык PL/JavaScript (версия 8)
postgis 2.4.3 геометрия, география и растровые пространственные типы и функции PostGIS
postgis_sfcgal 2.4.3 функции PostGIS SFCGAL
postgis_tiger_geocoder 2.4.3 PostGIS Tiger для геокодирования и инвертированного геокодирования
postgis_topology 2.4.3 пространственные типы и функции топологии PostGIS
postgres_fdw 1.0 оболочка внешних данных для удаленных серверов PostgreSQL
tablefunc 1.0 функции для полного управления таблицами, включая перекрестные таблицы
timescaledb 1.7.4 включает масштабируемые вставки и сложные запросы для данных временных рядов
unaccent 1,1 словарь текстового поиска, удаляющий акценты
uuid-ossp 1,1 создает идентификаторы UUID

Расширения Postgres 9.6

В серверах Базы данных Azure для PostgreSQL с Postgres версии 9.6 доступны следующие расширения.

Расширение Версия расширения Description
address_standardizer 2.3.2 Используются для анализа адреса в составных элементы.
address_standardizer_data_us 2.3.2 пример набора данных для стандартизации адресов США
btree_gin 1.0 поддержка индексирования общих типов данных в GIN
btree_gist 1.2 поддержка индексирования общих типов данных в GiST
chkpass 1.0 тип данных для автоматически зашифрованных паролей
citext 1,3 тип данных для строк символов без учета регистра
cube 1.2 тип данных для многомерных кубов
dblink 1.2 подключение к другим базам данных PostgreSQL c базы данных
dict_int 1.0 шаблон словаря текстового поиска для целых чисел
earthdistance 1,1 вычисляет ортодромические расстояния на поверхности Земли
fuzzystrmatch 1,1 определяет сходство и различия между строками
hstore 1.4 тип данных для хранения наборов пар (ключ, значение)
hypopg 1.1.1 гипотетические индексы для PostgreSQL
intarray 1.2 поддержка функций, операторов и индексов для одномерных массивов целых чисел
isn 1,1 типы данных для международных стандартов нумерации продуктов
ltree 1,1 тип данных для иерархических древовидных структур
orafce 3,7 Функции и операторы, эмулирующие подмножество функций и пакетов из коммерческой системы управления реляционной базой данных
pgaudit 1.1.2 предоставляет функции аудита
pgcrypto 1,3 криптографические функции
pgrouting 2.3.2 Расширение pgRouting
pgrowlocks 1.2 отображение сведений о блокировке на уровне строк
pgstattuple 1.4 отображение статистики на уровне кортежей
pg_buffercache 1.2 проверка общего буферного кэша
pg_partman 2.6.3 Расширение для управления секционированными таблицами по времени или идентификатору
pg_prewarm 1,1 предварительная подготовка реляционных данных
pg_stat_statements 1.4 отслеживание статистики выполнения всех инструкций SQL
pg_trgm 1,3 измерение степени сходства текста и поиск по индексу на основе триграмм
plpgsql 1.0 процедурный язык PL/pgSQL
plv8 2.1.0 доверенный процедурный язык PL/JavaScript (версия 8)
postgis 2.3.2 геометрия, география и растровые пространственные типы и функции PostGIS
postgis_sfcgal 2.3.2 функции PostGIS SFCGAL
postgis_tiger_geocoder 2.3.2 PostGIS Tiger для геокодирования и инвертированного геокодирования
postgis_topology 2.3.2 пространственные типы и функции топологии PostGIS
postgres_fdw 1.0 оболочка внешних данных для удаленных серверов PostgreSQL
tablefunc 1.0 функции для полного управления таблицами, включая перекрестные таблицы
timescaledb 1.7.4 включает масштабируемые вставки и сложные запросы для данных временных рядов
unaccent 1,1 словарь текстового поиска, удаляющий акценты
uuid-ossp 1,1 создает идентификаторы UUID

Расширения Postgres 9.5

Примечание.

PostgreSQL версии 9.5 больше не поддерживается.

В серверах Базы данных Azure для PostgreSQL с Postgres версии 9.5 доступны следующие расширения.

Расширение Версия расширения Description
address_standardizer 2.3.0 Используются для анализа адреса в составных элементы.
address_standardizer_data_us 2.3.0 пример набора данных для стандартизации адресов США
btree_gin 1.0 поддержка индексирования общих типов данных в GIN
btree_gist 1,1 поддержка индексирования общих типов данных в GiST
chkpass 1.0 тип данных для автоматически зашифрованных паролей
citext 1,1 тип данных для строк символов без учета регистра
cube 1.0 тип данных для многомерных кубов
dblink 1,1 подключение к другим базам данных PostgreSQL c базы данных
dict_int 1.0 шаблон словаря текстового поиска для целых чисел
earthdistance 1.0 вычисляет ортодромические расстояния на поверхности Земли
fuzzystrmatch 1.0 определяет сходство и различия между строками
hstore 1,3 тип данных для хранения наборов пар (ключ, значение)
hypopg 1.1.1 гипотетические индексы для PostgreSQL
intarray 1.0 поддержка функций, операторов и индексов для одномерных массивов целых чисел
isn 1.0 типы данных для международных стандартов нумерации продуктов
ltree 1.0 тип данных для иерархических древовидных структур
orafce 3,7 Функции и операторы, эмулирующие подмножество функций и пакетов из коммерческой системы управления реляционной базой данных
pgaudit 1.0.7 предоставляет функции аудита
pgcrypto 1.2 криптографические функции
pgrouting 2.3.0 Расширение pgRouting
pgrowlocks 1,1 отображение сведений о блокировке на уровне строк
pgstattuple 1,3 отображение статистики на уровне кортежей
pg_buffercache 1,1 проверка общего буферного кэша
pg_partman 2.6.3 Расширение для управления секционированными таблицами по времени или идентификатору
pg_prewarm 1.0 предварительная подготовка реляционных данных
pg_stat_statements 1,3 отслеживание статистики выполнения всех инструкций SQL
pg_trgm 1,1 измерение степени сходства текста и поиск по индексу на основе триграмм
plpgsql 1.0 процедурный язык PL/pgSQL
postgis 2.3.0 геометрия, география и растровые пространственные типы и функции PostGIS
postgis_sfcgal 2.3.0 функции PostGIS SFCGAL
postgis_tiger_geocoder 2.3.0 PostGIS Tiger для геокодирования и инвертированного геокодирования
postgis_topology 2.3.0 пространственные типы и функции топологии PostGIS
postgres_fdw 1.0 оболочка внешних данных для удаленных серверов PostgreSQL
tablefunc 1.0 функции для полного управления таблицами, включая перекрестные таблицы
unaccent 1.0 словарь текстового поиска, удаляющий акценты
uuid-ossp 1.0 создает идентификаторы UUID

pg_stat_statements

Расширение pg_stat_statements предварительно загружено на каждом сервере Базы данных Azure для PostgreSQL, что предоставляет вам средства отслеживания статистики выполнения инструкций SQL. Параметр pg_stat_statements.track, который управляет тем, какие инструкции учитываются расширением, по умолчанию имеет значение top. Это означает, что все инструкции, выпущенные непосредственно клиентами, отслеживаются. Два других уровня отслеживания: none и all. Этот параметр можно настроить в качестве параметра сервера с помощью портала Azure или Azure CLI.

Существует компромисс между информацией о выполнении запроса, предоставляемой pg_stat_statements, и воздействием на производительность сервера при регистрации каждой инструкции SQL. Если расширение pg_stat_statements не используется активно, рекомендуется задать для параметра pg_stat_statements.track значение none. Обратите внимание, что некоторые сторонние службы мониторинга могут зависеть от pg_stat_statements при предоставлении информации о производительности запроса, поэтому подтвердите ваш ли это случай.

dblink и postgres_fdw позволяют подключаться с одного сервера PostgreSQL к другому или к другой базе данных на том же сервере. Принимающий сервер должен разрешать подключения с отправляющего сервера при помощи его брандмауэра. При использовании этих расширений для подключения между серверами Базы данных Azure для PostgreSQL, это можно сделать, задав значение "Вкл." для "Разрешить доступ к службам Azure". Это необходимо, если вы хотите использовать расширения для циклического возвращения на тот же сервер. Параметр "Разрешить доступ к службам Azure" можно найти на странице портала Azure для сервера Postgres в разделе "Безопасность подключения". Значение "Вкл." для "Разрешить доступ к службам Azure" добавляет в список разрешений все IP-адреса Azure.

Примечание.

В настоящее время исходящие подключения из базы данных Azure для PostgreSQL через внешние модули обработки данных, такие как postgres_fdw, не поддерживаются, за исключением подключений к другим серверам базы данных Azure для PostgreSQL в том же регионе Azure.

uuid

Если вы планируете использовать функцию uuid_generate_v4() из расширения uuid-ossp, для повышения производительности сравните ее с функцией gen_random_uuid() из расширения pgcrypto.

pgAudit

Расширение pgAudit предоставляет подробные журналы для аудита сеансов и объектов. Сведения об использовании этого расширения в Базе данных Azure для PostgreSQL см. в статье об основных понятиях аудита.

pg_prewarm

Расширение pg_prewarm загружает реляционные данные в кэш. Предварительная подготовка кэшей означает, что запросы быстрее отвечают при первом запуске после перезагрузки. В Postgres 10 и более ранних версиях предварительная подготовка выполняется вручную с помощью соответствующей функции.

В Postgres 11 и более поздних версиях можно настроить автоматическую предварительную подготовку. Необходимо включить pg_prewarm в список параметров shared_preload_libraries и перезапустить сервер, чтобы применить изменения. Параметры можно задать с помощью портала Azure, CLI, REST API и шаблона ARM.

TimescaleDB

TimescaleDB — это база данных временных рядов, которая упакована в качестве расширения для PostgreSQL. TimescaleDB обеспечивает ориентированные на время аналитические функции, оптимизации и масштабирует Postgres для рабочих нагрузок временных рядов.

Дополнительные сведения о TimescaleDB, охраняемом товарном знаке Timescale, Inc. База данных Azure для PostgreSQL предоставляет выпуск TimescaleDB Apache-2.

Установка TimescaleDB

Чтобы установить базу данных TimescaleDB, необходимо включить ее в общие библиотеки предварительной загрузки сервера. Чтобы изменение параметра shared_preload_libraries вступило в силу, перезапустите сервер. Параметры можно изменить с помощью портала Azure или Azure CLI.

В случае использования портала Azure выполните следующие действия:

  1. Выберите сервер базы данных Azure для PostgreSQL.

  2. На боковой панели выберите Параметры сервера.

  3. Найдите параметр shared_preload_libraries.

  4. Выберите TimescaleDB.

  5. Нажмите кнопку Сохранить, чтобы сохранить изменения. После сохранения изменений вы получите уведомление.

  6. После получения уведомления перезапустите сервер, чтобы применить эти изменения. Дополнительные сведения о перезапуске сервера службы "База данных Azure для PostgreSQL" см. в этой статье.

Теперь можно включить TimescaleDB в базу данных Postgres. Подключитесь к базе данных заданий и выполните следующую команду:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Совет

Если появится сообщение об ошибке, подтвердите перезапуск сервера после сохранения shared_preload_libraries.

Теперь можно создать гипертаблицу TimescaleDB с нуля или перенести существующие данные временных рядов в PostgreSQL.

Восстановление базы данных шкалы времени с помощью pg_dump и pg_restore

Чтобы восстановить базу данных шкалы времени с помощью pg_dump и pg_restore, необходимо выполнить две вспомогательные процедуры в целевой базе данных: timescaledb_pre_restore() и timescaledb_post restore().

Сначала подготовьте целевую базу данных:

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database 
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Теперь вы можете запустить pg_dump в исходной базе данных, а затем выполнить pg_restore. После восстановления выполните в восстановленной базе данных следующую команду:

SELECT timescaledb_post_restore();

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

Восстановление базы данных шкалы времени с помощью timescaledb-backup

Во время выполнения описанной выше процедуры SELECT timescaledb_post_restore() при обновлении флага timescaledb.restoring может произойти ошибка отказа в разрешениях. Это связано с ограниченным разрешением ALTER DATABASE в облачных службах баз данных PaaS. В этом случае можно выполнить альтернативный метод, используя инструмент timescaledb-backup для резервного копирования и восстановления базы данных шкалы времени. Timescaledb-backup — это программа, позволяющая упростить создание дампа и восстановление базы данных TimescaleDB, сделать эти процедуры менее подверженными ошибкам и повысить их производительность. Для этого нужно выполнить указанные ниже действия

  1. Установите инструменты, как описано здесь
  2. Создайте целевые сервер и базу данных Azure для PostgreSQL
  3. Включите расширение шкалы времени, как показано выше
  4. Предоставление пользователю, который будет использоваться командой ts-restore, роль azure_pg_admin
  5. Выполните команду ts-restore для восстановления базы данных

Дополнительные сведения об этих служебных программах см. здесь.

Примечание.

При использовании служебных программ timescale-backup для восстановления в Azure необходимо записать символ @ в другой кодировке в виде %40, так как имена пользователей базы данных для негибкого сервера БД Azure для PostgreSQL должны указываться в формате <user@db-name>.

Следующие шаги

Если вы не видите расширение, которое вы хотите использовать, сообщите нам. Вы можете проголосовать за существующие запросы или оставить свои предложения на нашем форуме отзывов.