Extensiones de PostgreSQL en Azure Database for PostgreSQL: un solo servidor

Se aplica a: Azure Database for PostgreSQL: servidor único

Importante

El servicio de servidor único de Azure Database for PostgreSQL está en proceso de retirada. Se recomienda encarecidamente actualizar a Azure Database for PostgreSQL: servidor flexible. Para más información sobre la migración al servidor flexible de Azure Database for PostgreSQL, consulte ¿Qué sucede con el servicio de servidor único de Azure Database for PostgreSQL?.

PostgreSQL ofrece la capacidad de ampliar la funcionalidad de su base de datos mediante extensiones. Las extensiones agrupan varios objetos SQL relacionados en un solo paquete que se puede cargar o quitar de la base de datos con un solo comando. Después de cargarse en la base de datos, las extensiones funcionan como características integradas.

¿Cómo se utilizan las extensiones de PostgreSQL?

Para poder usar las extensiones de PostgreSQL, es preciso que estén instaladas en su base de datos. Para instalar una extensión determinada, ejecute el comando CREATE EXTENSION desde la herramienta psql para cargar los objetos empaquetados en la base de datos.

Azure Database for PostgreSQL admite un subconjunto de extensiones de claves, como se enumeran a continuación. Esta información también está disponible al ejecutar SELECT * FROM pg_available_extensions;. Aparte de las que se indican, no se admiten otras extensiones. -No puede crear su propia extensión en el servicio Azure Database for PostgreSQL.

Extensiones de Postgres 11

Las extensiones siguientes están disponibles en los servidores de Azure Database for PostgreSQL que tienen la versión 11 de Postgres.

Extensión Versión de la extensión Descripción
address_standardizer 2.5.1 Se utilizan para analizar una dirección en los elementos que la componen.
address_standardizer_data_us 2.5.1 Aborda el ejemplo del conjunto de datos estandarizado de EE. UU.
btree_gin 1.3 Compatibilidad con la indexación de tipos de datos comunes en GIN
btree_gist 1.5 Compatibilidad con la indexación de tipos de datos comunes en GiST
citext 1.5 Tipo de datos para cadenas de caracteres que no distinguen mayúsculas de minúsculas
cube 1.4 Tipo de datos para los cubos multidimensionales
dblink 1.2 Se conecta a otras bases de datos de PostgreSQL desde una base de datos
dict_int 1.0 Plantilla de diccionario de búsqueda de texto para números enteros
earthdistance 1.1 Calcula distancias de círculo máximo en la superficie de la Tierra
fuzzystrmatch 1.1 Determina las similitudes y la distancia entre las cadenas
hstore 1.5 Tipo de datos para almacenar conjuntos de pares (clave/valor)
hypopg 1.1.2 Índices hipotéticos para PostgreSQL
intarray 1.2 Funciones, operadores e índices compatibles con matrices 1D de números enteros
isn 1.2 Tipos de datos para los estándares internacionales de numeración de productos
ltree 1.1 Tipo de datos para las estructuras de árbol jerárquicas
orafce 3.7 Funciones y operadores que emulan un subconjunto de funciones y paquetes desde un RDBMS comercial
pgaudit 1.3.1 Proporciona funcionalidad de auditoría
pgcrypto 1.3 Funciones de cifrado
pgrouting 2.6.2 Extensión pgRouting
pgrowlocks 1.2 Muestra información de bloqueo de nivel de fila
pgstattuple 1.5 Muestra estadísticas de nivel de tupla
pg_buffercache 1.3 Examina la caché del búfer compartido
pg_partman 4.0.0 Extensión para administrar tablas con particiones por hora o identificador
pg_prewarm 1.2 Prepara los datos de relación
pg_stat_statements 1.6 Realiza un seguimiento de las estadísticas de ejecución de todas las instrucciones SQL ejecutadas
pg_trgm 1.4 Medición de similitud de texto y búsqueda de índice basada en trigramas
plpgsql 1.0 Lenguaje de procedimientos de PL/pgSQL
plv8 2.3.11 Lenguaje de procedimientos de confianza de PL/JavaScript (v8)
postgis 2.5.1 Geometría, geografía y funciones y tipos espaciales de trama de PostGIS
postgis_sfcgal 2.5.1 Funciones de PostGIS SFCGAL
postgis_tiger_geocoder 2.5.1 Geocoder de PostGIS tiger y geocoder inverso
postgis_topology 2.5.1 Funciones y tipos espaciales de topología PostGIS
postgres_fdw 1.0 Contenedor de datos externos para servidores PostgreSQL remotos
tablefunc 1.0 Funciones que manipulan la totalidad del contenido de las tablas, incluidas tablas de referencias cruzadas
timescaledb 1.7.4 Habilita las inserciones escalables y las consultas complejas para los datos de serie temporal
unaccent 1.1 Diccionario de búsqueda de texto que quita los acentos
uuid-ossp 1.1 Genera identificadores únicos universales (UUID)

Extensiones de Postgres 10

Las extensiones siguientes están disponibles en los servidores de Azure Database for PostgreSQL que tienen la versión 10 de Postgres.

Extensión Versión de la extensión Descripción
address_standardizer 2.5.1 Se utilizan para analizar una dirección en los elementos que la componen.
address_standardizer_data_us 2.5.1 Aborda el ejemplo del conjunto de datos estandarizado de EE. UU.
btree_gin 1.3 Compatibilidad con la indexación de tipos de datos comunes en GIN
btree_gist 1.5 Compatibilidad con la indexación de tipos de datos comunes en GiST
chkpass 1.0 Tipo de datos para las contraseñas de cifrado automático
citext 1.4 Tipo de datos para cadenas de caracteres que no distinguen mayúsculas de minúsculas
cube 1.2 Tipo de datos para los cubos multidimensionales
dblink 1.2 Se conecta a otras bases de datos de PostgreSQL desde una base de datos
dict_int 1.0 Plantilla de diccionario de búsqueda de texto para números enteros
earthdistance 1.1 Calcula distancias de círculo máximo en la superficie de la Tierra
fuzzystrmatch 1.1 Determina las similitudes y la distancia entre las cadenas
hstore 1.4 Tipo de datos para almacenar conjuntos de pares (clave/valor)
hypopg 1.1.1 Índices hipotéticos para PostgreSQL
intarray 1.2 Funciones, operadores e índices compatibles con matrices 1D de números enteros
isn 1.1 Tipos de datos para los estándares internacionales de numeración de productos
ltree 1.1 Tipo de datos para las estructuras de árbol jerárquicas
orafce 3.7 Funciones y operadores que emulan un subconjunto de funciones y paquetes desde un RDBMS comercial
pgaudit 1.2 Proporciona funcionalidad de auditoría
pgcrypto 1.3 Funciones de cifrado
pgrouting 2.5.2 Extensión pgRouting
pgrowlocks 1.2 Muestra información de bloqueo de nivel de fila
pgstattuple 1.5 Muestra estadísticas de nivel de tupla
pg_buffercache 1.3 Examina la caché del búfer compartido
pg_partman 2.6.3 Extensión para administrar tablas con particiones por hora o identificador
pg_prewarm 1.1 Prepara los datos de relación
pg_stat_statements 1.6 Realiza un seguimiento de las estadísticas de ejecución de todas las instrucciones SQL ejecutadas
pg_trgm 1.3 Medición de similitud de texto y búsqueda de índice basada en trigramas
plpgsql 1.0 Lenguaje de procedimientos de PL/pgSQL
plv8 2.1.0 Lenguaje de procedimientos de confianza de PL/JavaScript (v8)
postgis 2.4.3 Geometría, geografía y funciones y tipos espaciales de trama de PostGIS
postgis_sfcgal 2.4.3 Funciones de PostGIS SFCGAL
postgis_tiger_geocoder 2.4.3 Geocoder de PostGIS tiger y geocoder inverso
postgis_topology 2.4.3 Funciones y tipos espaciales de topología PostGIS
postgres_fdw 1.0 Contenedor de datos externos para servidores PostgreSQL remotos
tablefunc 1.0 Funciones que manipulan la totalidad del contenido de las tablas, incluidas tablas de referencias cruzadas
timescaledb 1.7.4 Habilita las inserciones escalables y las consultas complejas para los datos de serie temporal
unaccent 1.1 Diccionario de búsqueda de texto que quita los acentos
uuid-ossp 1.1 Genera identificadores únicos universales (UUID)

Extensiones de Postgres 9.6

Las extensiones siguientes están disponibles en los servidores de Azure Database for PostgreSQL que tienen la versión 9.6 de Postgres.

Extensión Versión de la extensión Descripción
address_standardizer 2.3.2 Se utilizan para analizar una dirección en los elementos que la componen.
address_standardizer_data_us 2.3.2 Aborda el ejemplo del conjunto de datos estandarizado de EE. UU.
btree_gin 1.0 Compatibilidad con la indexación de tipos de datos comunes en GIN
btree_gist 1.2 Compatibilidad con la indexación de tipos de datos comunes en GiST
chkpass 1.0 Tipo de datos para las contraseñas de cifrado automático
citext 1.3 Tipo de datos para cadenas de caracteres que no distinguen mayúsculas de minúsculas
cube 1.2 Tipo de datos para los cubos multidimensionales
dblink 1.2 Se conecta a otras bases de datos de PostgreSQL desde una base de datos
dict_int 1.0 Plantilla de diccionario de búsqueda de texto para números enteros
earthdistance 1.1 Calcula distancias de círculo máximo en la superficie de la Tierra
fuzzystrmatch 1.1 Determina las similitudes y la distancia entre las cadenas
hstore 1.4 Tipo de datos para almacenar conjuntos de pares (clave/valor)
hypopg 1.1.1 Índices hipotéticos para PostgreSQL
intarray 1.2 Funciones, operadores e índices compatibles con matrices 1D de números enteros
isn 1.1 Tipos de datos para los estándares internacionales de numeración de productos
ltree 1.1 Tipo de datos para las estructuras de árbol jerárquicas
orafce 3.7 Funciones y operadores que emulan un subconjunto de funciones y paquetes desde un RDBMS comercial
pgaudit 1.1.2 Proporciona funcionalidad de auditoría
pgcrypto 1.3 Funciones de cifrado
pgrouting 2.3.2 Extensión pgRouting
pgrowlocks 1.2 Muestra información de bloqueo de nivel de fila
pgstattuple 1.4 Muestra estadísticas de nivel de tupla
pg_buffercache 1.2 Examina la caché del búfer compartido
pg_partman 2.6.3 Extensión para administrar tablas con particiones por hora o identificador
pg_prewarm 1.1 Prepara los datos de relación
pg_stat_statements 1.4 Realiza un seguimiento de las estadísticas de ejecución de todas las instrucciones SQL ejecutadas
pg_trgm 1.3 Medición de similitud de texto y búsqueda de índice basada en trigramas
plpgsql 1.0 Lenguaje de procedimientos de PL/pgSQL
plv8 2.1.0 Lenguaje de procedimientos de confianza de PL/JavaScript (v8)
postgis 2.3.2 Geometría, geografía y funciones y tipos espaciales de trama de PostGIS
postgis_sfcgal 2.3.2 Funciones de PostGIS SFCGAL
postgis_tiger_geocoder 2.3.2 Geocoder de PostGIS tiger y geocoder inverso
postgis_topology 2.3.2 Funciones y tipos espaciales de topología PostGIS
postgres_fdw 1.0 Contenedor de datos externos para servidores PostgreSQL remotos
tablefunc 1.0 Funciones que manipulan la totalidad del contenido de las tablas, incluidas tablas de referencias cruzadas
timescaledb 1.7.4 Habilita las inserciones escalables y las consultas complejas para los datos de serie temporal
unaccent 1.1 Diccionario de búsqueda de texto que quita los acentos
uuid-ossp 1.1 Genera identificadores únicos universales (UUID)

Extensiones de Postgres 9.5

Nota

Se ha retirado PostgreSQL, versión 9.5.

Las extensiones siguientes están disponibles en los servidores de Azure Database for PostgreSQL que tienen la versión 9.5 de Postgres.

Extensión Versión de la extensión Descripción
address_standardizer 2.3.0 Se utilizan para analizar una dirección en los elementos que la componen.
address_standardizer_data_us 2.3.0 Aborda el ejemplo del conjunto de datos estandarizado de EE. UU.
btree_gin 1.0 Compatibilidad con la indexación de tipos de datos comunes en GIN
btree_gist 1.1 Compatibilidad con la indexación de tipos de datos comunes en GiST
chkpass 1.0 Tipo de datos para las contraseñas de cifrado automático
citext 1.1 Tipo de datos para cadenas de caracteres que no distinguen mayúsculas de minúsculas
cube 1.0 Tipo de datos para los cubos multidimensionales
dblink 1.1 Se conecta a otras bases de datos de PostgreSQL desde una base de datos
dict_int 1.0 Plantilla de diccionario de búsqueda de texto para números enteros
earthdistance 1.0 Calcula distancias de círculo máximo en la superficie de la Tierra
fuzzystrmatch 1.0 Determina las similitudes y la distancia entre las cadenas
hstore 1.3 Tipo de datos para almacenar conjuntos de pares (clave/valor)
hypopg 1.1.1 Índices hipotéticos para PostgreSQL
intarray 1.0 Funciones, operadores e índices compatibles con matrices 1D de números enteros
isn 1.0 Tipos de datos para los estándares internacionales de numeración de productos
ltree 1.0 Tipo de datos para las estructuras de árbol jerárquicas
orafce 3.7 Funciones y operadores que emulan un subconjunto de funciones y paquetes desde un RDBMS comercial
pgaudit 1.0.7 Proporciona funcionalidad de auditoría
pgcrypto 1.2 Funciones de cifrado
pgrouting 2.3.0 Extensión pgRouting
pgrowlocks 1.1 Muestra información de bloqueo de nivel de fila
pgstattuple 1.3 Muestra estadísticas de nivel de tupla
pg_buffercache 1.1 Examina la caché del búfer compartido
pg_partman 2.6.3 Extensión para administrar tablas con particiones por hora o identificador
pg_prewarm 1.0 Prepara los datos de relación
pg_stat_statements 1.3 Realiza un seguimiento de las estadísticas de ejecución de todas las instrucciones SQL ejecutadas
pg_trgm 1.1 Medición de similitud de texto y búsqueda de índice basada en trigramas
plpgsql 1.0 Lenguaje de procedimientos de PL/pgSQL
postgis 2.3.0 Geometría, geografía y funciones y tipos espaciales de trama de PostGIS
postgis_sfcgal 2.3.0 Funciones de PostGIS SFCGAL
postgis_tiger_geocoder 2.3.0 Geocoder de PostGIS tiger y geocoder inverso
postgis_topology 2.3.0 Funciones y tipos espaciales de topología PostGIS
postgres_fdw 1.0 Contenedor de datos externos para servidores PostgreSQL remotos
tablefunc 1.0 Funciones que manipulan la totalidad del contenido de las tablas, incluidas tablas de referencias cruzadas
unaccent 1.0 Diccionario de búsqueda de texto que quita los acentos
uuid-ossp 1.0 Genera identificadores únicos universales (UUID)

pg_stat_statements

La extensión pg_stat_statements está cargada previamente en cada servidor de Azure Database for PostgreSQL para proporcionarle un medio de seguimiento de las estadísticas de ejecución de las instrucciones SQL. La configuración pg_stat_statements.track, que controla las instrucciones que la extensión cuenta, se establece de manera predeterminada en top, lo que significa que se realiza el seguimiento de todas las instrucciones que los clientes emiten directamente. Los otros dos niveles de seguimiento son none y all. Esta configuración es configurable como un parámetro de servidor a través de Azure Portal o la CLI de Azure.

Hay un equilibrio entre la información de ejecución de consulta que pg_stat_statements proporciona y el impacto en el rendimiento del servidor al registrar cada instrucción SQL. Si no está usando activamente la extensión pg_stat_statements, le recomendamos que establezca pg_stat_statements.track en none. Tenga en cuenta que algunos servicios de supervisión de terceros pueden basarse en pg_stat_statements para entregar información de rendimiento de consultas, por lo que debe confirmar si este es el caso para usted o no.

dblink y postgres_fdw le permiten conectarse de un servidor PostgreSQL a otro, o a otra base de datos en el mismo servidor. El servidor de recepción debe permitir conexiones del servidor de envío a través de su firewall. Cuando se usan estas extensiones para conectarse entre servidores de Azure Database for PostgreSQL, esto se puede realizar mediante el establecimiento de "Permitir acceso a servicios de Azure" en Activado. Esto también es necesario si desea utilizar las extensiones para volver al mismo servidor. La opción "Permitir el acceso a servicios de Azure" puede encontrarse en la página de Azure Portal para el servidor de Postgres, en Seguridad de la conexión. Al activar "Permitir el acceso a servicios de Azure", se colocan todas las direcciones IP de Azure en la lista de permitidos.

Nota

En la actualidad, no se admiten conexiones salientes desde Azure Database for PostgreSQL a través de extensiones de contenedor de datos externas, como postgres_fdw, excepto en el caso de conexiones a otros servidores de Azure Database for PostgreSQL de la misma región de Azure.

uuid

Si planea usar uuid_generate_v4() desde la extensión uuid-ossp, puede comparar con gen_random_uuid() de la extensión pgcrypto para obtener beneficios de rendimiento.

pgAudit

La extensión pgAudit proporciona registro de auditoría de objetos y de sesiones. Para aprender a usar esta extensión en Azure Database for PostgreSQL, visite el artículo acerca de los conceptos de auditoría.

pg_prewarm

La extensión pg_prewarm carga los datos relacionales en la memoria caché. El precalentamiento de las memorias caché significa que las consultas tengan mejores tiempos de respuesta en su primera ejecución después de un reinicio. En Postgres 10 y versiones anteriores, el precalentamiento se realiza manualmente mediante la función prewarm.

En Postgres 11 y versiones posteriores, puede configurar el precalentamiento para que se produzca automáticamente. Debe incluir pg_prewarm en la lista de parámetros de shared_preload_libraries y reiniciar el servidor para aplicar el cambio. Los parámetros se pueden establecer desde Azure Portal, la CLI, la API de REST o una plantilla de ARM.

TimescaleDB

TimescaleDB es una base de datos de serie temporal que se empaqueta como una extensión para PostgreSQL. TimescaleDB proporciona funciones analíticas orientadas al tiempo, optimizaciones y escala Postgres para las cargas de trabajo de serie temporal.

Más información sobre TimescaleDB, una marca registrada de Timescale, Inc. Azure Database for PostgreSQL proporciona la edición Apache-2 de TimescaleDB.

Instalación de TimescaleDB

Para instalar TimescaleDB, tendrá que incluirlo en las bibliotecas de carga previa compartidas del servidor. Si cambia el parámetro shared_preload_libraries de Postgres deberá shared_preload_libraries para que tenga efecto. Puede cambiar los parámetros mediante Azure Portal o la CLI de Azure.

Mediante Azure Portal:

  1. Seleccione su servidor de Azure Database for PostgreSQL.

  2. En la barra lateral, seleccione Parámetros del servidor.

  3. Busque el parámetro shared_preload_libraries.

  4. Seleccione TimescaleDB.

  5. Seleccione Guardar para conservar los cambios. Recibirá una notificación una vez que se haya guardado el cambio.

  6. Después de la notificación, reinicie el servidor para aplicar estos cambios. Para aprender a reiniciar un servidor, consulte Reinicio de un servidor de Azure Database for PostgreSQL mediante Azure Portal.

Ahora puede habilitar TimescaleDB en la base de datos de Postgres. Conéctese a la base de datos y ejecute el comando siguiente:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Sugerencia

Si ve un error, confirme que ha reiniciado el servidor después de guardar shared_preload_libraries.

Ahora puede crear una hipertabla de TimescaleDB desde cero o migrar datos de serie temporal existentes en PostgreSQL.

Restauración de una base de datos de escala de tiempo mediante pg_dump y pg_restore

Para restaurar una base de datos de Timescale mediante pg_dump y pg_restore, tiene que ejecutar dos procedimientos auxiliares en la base de datos de destino: timescaledb_pre_restore() y timescaledb_post restore().

Primero prepare la base de datos de destino:

--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();

Ahora puede ejecutar pg_dump en la base de datos original y, a continuación, pg_restore. Después de la restauración, asegúrese de ejecutar el siguiente comando en la base de datos restaurada:

SELECT timescaledb_post_restore();

Para más información sobre el método de restauración con la base de datos habilitada para la escala de tiempo, vea la documentación de Escala de tiempo.

Restauración de una base de datos de escala de tiempo mediante timescaledb-backup

Al ejecutar el procedimiento SELECT timescaledb_post_restore() mencionado anteriormente, es posible que se denieguen permisos al actualizar la marca timescaledb.restoring. Esto se debe a un permiso ALTER DATABASE limitado en los servicios de base de datos PaaS en la nube. En este caso, puede usar un método alternativo mediante la herramienta timescaledb-backup para realizar copias de seguridad y restaurar la base de datos de escala de tiempo. Timescaledb-backup es un programa para facilitar el volcado y la restauración de una base de datos de TimescaleDB, que sean menos propensos a errores y mejorar el rendimiento. Para ello, debe hacer lo siguiente

  1. Instale las herramientas como se detalla aquí.
  2. Cree una servidor y una base de datos de Azure Database for PostgreSQL de destino.
  3. Habilite la extensión de escala de tiempo como se ha mostrado anteriormente.
  4. Conceda el rol azure_pg_admin al usuario que usará ts-restore.
  5. Ejecute ts-restore para restaurar la base de datos

Aquí puede obtener más información sobre estas utilidades.

Nota

Cuando se usan utilidades timescale-backup para la restauración en Azure, como los nombres de usuario de base de datos de Azure Database for PostgresQL no flexibles usan el formato <user@db-name>, tendrá que reemplazar @ por la codificación de caracteres %40.

Pasos siguientes

Si no ve una extensión que le gustaría utilizar, háganoslo saber. Vote por las solicitudes existentes o cree nuevos comentarios y solicitudes en nuestro foro de comentarios.