PostgreSQL
Extensiones de PostgreSQL
Sistema de extensiones de PostgreSQL para añadir tipos, funciones y capacidades como pgcrypto, PostGIS o pg_stat_statements con control de versiones y permisos.
- Última actualización
- Actualizada
- Nivel
- Aplicación
PostgreSQL
Sistema de extensiones de PostgreSQL para añadir tipos, funciones y capacidades como pgcrypto, PostGIS o pg_stat_statements con control de versiones y permisos.
Una extensión instala código y objetos dentro del servidor. Debe tratarse como una dependencia de infraestructura: con propietario, versión, compatibilidad, backups, permisos y plan de actualización.
Una extensión empaqueta objetos versionados:
funciones + tipos + operadores + casts + views + access methodsSe habilita por database:
CREATE EXTENSION IF NOT EXISTS pg_trgm
WITH SCHEMA extensions;Los archivos deben existir en el servidor y el proveedor debe permitirla.
SELECT extname, extversion, extnamespace::regnamespace
FROM pg_extension;Disponibles:
SELECT name, default_version, installed_version
FROM pg_available_extensions;Disponible no significa instalada.
No presentes una extensión externa como capacidad garantizada de cualquier instalación.
pg_trgm: similitud y búsquedas parciales.btree_gist: operator classes GiST para exclusion constraints.citext: comparaciones case-insensitive con trade-offs de collation.pgcrypto: funciones criptográficas.postgres_fdw: acceso a otros servidores PostgreSQL.pg_stat_statements: estadísticas agregadas de queries; requiere configuración compartida.Algunas extensiones pueden instalarse por usuarios con privilegio CREATE si están marcadas trusted; otras requieren superuser o rol administrado por el proveedor.
No otorgues superuser al rol de aplicación para resolver una instalación.
Un schema dedicado reduce contaminación de public:
CREATE SCHEMA IF NOT EXISTS extensions AUTHORIZATION db_owner;Pero no todas las extensiones son relocatable. Comprueba:
SELECT relocatable FROM pg_available_extension_versions
WHERE name = 'pg_trgm';Califica nombres en funciones sensibles y controla search_path.
El owner puede actualizar o eliminar la extensión. El runtime role normalmente solo necesita USAGE sobre schema y EXECUTE en funciones específicas.
No cambies manualmente objetos pertenecientes a la extensión: una actualización puede sobrescribirlos o quedar inconsistente.
ALTER EXTENSION pg_trgm UPDATE;Antes:
El upgrade de PostgreSQL y el de extensiones son planes relacionados, pero no idénticos.
Antes de adoptar una extensión confirma:
Una dependencia no disponible puede bloquear migración de proveedor.
Una extensión puede ejecutar código nativo dentro del proceso PostgreSQL. Evalúa:
No instales paquetes arbitrarios en producción.
Un dump lógico incluye CREATE EXTENSION, no necesariamente los binarios. El destino debe tener el paquete compatible instalado antes de restaurar.
En backup físico, los datos están presentes, pero el nuevo servidor necesita librerías compatibles para arrancar o usar objetos.
La replicación física copia el cluster y objetos. En replicación lógica, DDL y extensiones no se replican automáticamente: publisher y subscriber deben prepararse por separado.
DROP EXTENSION pg_trgm;Puede fallar por dependencias. CASCADE podría eliminar índices, funciones u objetos importantes. Nunca lo uses sin inventario.
Cuantas más extensiones centrales use el modelo, más difícil es migrar. Esto no significa evitarlas; significa documentar el valor que justifican.
public sin revisar permisos.Funciones y procedimientos almacenados decide qué lógica merece ejecutarse cerca de los datos.