Расширения 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
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 выполните следующие действия:
Выберите сервер базы данных Azure для PostgreSQL.
На боковой панели выберите Параметры сервера.
Найдите параметр
shared_preload_libraries
.Выберите TimescaleDB.
Нажмите кнопку Сохранить, чтобы сохранить изменения. После сохранения изменений вы получите уведомление.
После получения уведомления перезапустите сервер, чтобы применить эти изменения. Дополнительные сведения о перезапуске сервера службы "База данных 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, сделать эти процедуры менее подверженными ошибкам и повысить их производительность.
Для этого нужно выполнить указанные ниже действия
- Установите инструменты, как описано здесь
- Создайте целевые сервер и базу данных Azure для PostgreSQL
- Включите расширение шкалы времени, как показано выше
- Предоставление пользователю, который будет использоваться командой ts-restore, роль azure_pg_admin
- Выполните команду ts-restore для восстановления базы данных
Дополнительные сведения об этих служебных программах см. здесь.
Примечание.
При использовании служебных программ timescale-backup
для восстановления в Azure необходимо записать символ @
в другой кодировке в виде %40
, так как имена пользователей базы данных для негибкого сервера БД Azure для PostgreSQL должны указываться в формате <user@db-name>
.
Следующие шаги
Если вы не видите расширение, которое вы хотите использовать, сообщите нам. Вы можете проголосовать за существующие запросы или оставить свои предложения на нашем форуме отзывов.