Como sabrá, puede ampliar la funcionalidad de PostgreSQL mediante el uso de extensiones de PostgreSQL. Puede usar diferentes extensiones para hacer que PostgreSQL sea como una versión empresarial y abordar necesidades específicas. En este blog, veremos algunas de las extensiones de código abierto más populares en PostgreSQL y cómo se pueden usar para expandir su capacidad.
PostgreSQL es la base de datos de código abierto más avanzada. Cada año, la comunidad de PostgreSQL lanza una nueva versión con algunas funciones nuevas, pero hay muchas funciones desarrolladas con extensiones que se pueden usar para un caso de uso particular.
Algunas de estas extensiones son muy potentes y populares para crear un entorno PostgreSQL de nivel empresarial.
Pg_stat_declaraciones
El módulo pg_stat_statements proporciona un medio para rastrear las estadísticas de ejecución de todas las declaraciones SQL ejecutadas por un servidor PostgreSQL. Cuando se carga el módulo pg_stat_statements, realiza un seguimiento de las estadísticas en todas las bases de datos del servidor. Las estadísticas recopiladas por el módulo pg_stat_statements están disponibles a través de una vista denominada pg_stat_statements. Puede consultar más detalles sobre las funciones pg_stat_statements y el parámetro de configuración aquí.
PostGIS
PostGIS es una extensión del sistema de base de datos PostgreSQL que permite almacenar objetos GIS (Sistemas de Información Geográfica) en la base de datos. Incluye soporte para índices espaciales R-Tree basados en GiST y funciones para el análisis y procesamiento de objetos GIS.
PostGIS se utiliza para objetos espaciales y geográficos para PostgreSQL. PostGIS agrega tipos (geometría, geografía, ráster, etc.) a la base de datos de PostgreSQL. PostGIS también agrega funciones, operadores y mejoras de índice que se aplican a estos tipos espaciales. Puede comprobar el método de instalación aquí.
Postgres_fdw
El módulo postgres_fdw proporciona el envoltorio de datos externos postgres_fdw, que se puede utilizar para acceder a los datos almacenados en servidores de bases de datos PostgreSQL externos. Cuando hay dos bases de datos PostgreSQL, postgres_fdw se refiere a la tabla de la otra base de datos de una base de datos. Una vez que defina la TABLA EXTRANJERA, puede SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR como una base de datos local.
La funcionalidad proporcionada por el módulo postgres_fdw se superpone sustancialmente con la funcionalidad del módulo dblink anterior. Pero el módulo postgres_fdw proporciona una sintaxis más transparente y compatible con los estándares para acceder a tablas remotas y puede ofrecer un mejor rendimiento en muchos casos.
El principal caso de uso de las tablas foráneas es poner los datos a disposición de los sistemas sin replicarlos ni duplicarlos. Incluso hay implementaciones simples de fragmentación mediante FDW, porque los datos en las otras particiones pueden estar disponibles para consultas a través de FDW.
En Oracle, puede obtener los datos de las tablas de bases de datos remotas utilizando DBLinks, pero la principal diferencia entre DBLinks y FDW es que FDW puede mantener los metadatos o la definición de la tabla sobre la tabla externa localmente.
Mysql_fdw
Mysql_fdw es una extensión de PostgreSQL que implementa un contenedor de datos externos (FDW) para MySQL. El módulo Mysql_fdw facilita el uso del servidor PostgreSQL como cliente para el servidor MySQL, lo que significa que puede obtener datos de la base de datos MySQL como cliente. Actualmente, EnterpriseDB mantiene este módulo en github.
La versión anterior de mysql_fdw solo admitía lectura, pero la última versión proporciona la capacidad de escritura. El usuario ahora puede emitir declaraciones de inserción, actualización y eliminación para las tablas foráneas usando mysql_fdw. Utiliza el mecanismo de conversión de tipos de PostgreSQL para proporcionar una conversión de tipos opuesta entre los tipos de datos de MySQL y PostgreSQL.
Htienda
El módulo hstore implementa el tipo de datos hstore para almacenar pares clave-valor en un solo valor en PostgreSQL. El tipo de datos hstore es muy útil en muchos casos de uso, como datos semiestructurados o filas con muchos atributos que rara vez se consultan. Tenga en cuenta que las claves y los valores son solo cadenas de texto.
Antes de trabajar con el tipo de datos hstore, debe crear la extensión hstore que carga el módulo contrib en su instancia de PostgreSQL.
Pgauditoría
pgAudit es una extensión de auditoría de PostgreSQL que proporciona un registro detallado de sesión y/o auditoría de objetos a través de la función de registro estándar de PostgreSQL.
El objetivo principal del módulo pgAudit es proporcionar a los usuarios de PostgreSQL la capacidad de producir registros de auditoría que a menudo se requieren para cumplir con las certificaciones gubernamentales, financieras o ISO.
En general, una auditoría es una inspección oficial de las cuentas de una persona u organización, normalmente por parte de un organismo independiente. La información recopilada por el módulo pgAudit se denomina correctamente pista de auditoría o registro de auditoría.
El módulo pgAudit fue desarrollado para soportar PostgreSQL 9.5 y versiones superiores.
El registro de auditoría de sesión del módulo pgAudit proporciona registros detallados de todas las declaraciones ejecutadas por un usuario en el backend. Puede consultar más detalles, configuración y cómo instalarlo y usarlo en PostgreSQL aquí.
Orafce
Orafce es un módulo que implementa funciones, tipos de datos y paquetes compatibles con Oracle. Esta es una herramienta de código abierto con licencia BSD para que cualquiera pueda usar esta herramienta. Este módulo es muy útil en la tarea de migración de Oracle a PostgreSQL, tiene muchas funciones de Oracle implementadas en PostgreSQL.
Las aplicaciones generalmente usan esas funciones con múltiples ocurrencias. Puede reducir el costo de modificación de SQL utilizando esta herramienta. Puede consultar el blog sobre cómo migrar de Oracle a PostgreSQL.
Todas las funciones y paquetes están implementados correctamente y están bien probados.
Algunas de las funciones son:
- Dbms_salida
- Dbms_aleatorio
- utl_file:funciones relacionadas con el sistema de archivos
- Dbms_pipe y dbms_alert
- PLVfecha,PLVstr, PLVchr
- Tipo de datos DATE compatible con Oracle y funciones como ADD_MONTHS, LAST_DAY,NEXT_DAY, etc.
- Función NVL
- Función SUBSTR y SUBSTRB
- Compatibilidad con VARCHAR2 y NVARCHAR2
- HASTA_FECHA()
Pg_carga masiva
El módulo Pg_bulkload proporciona capacidad de carga de datos de alta velocidad a los usuarios de PostgreSQL. El módulo pg_bulkload está diseñado para cargar una gran cantidad de datos en una base de datos. Puede cargar los datos en la tabla sin pasar por los búferes compartidos de PostgreSQL. El módulo pg_bulkload también tiene algunas funciones de ETL, como la validación de datos de entrada y la transformación de datos con funciones de filtro.
El objetivo original del módulo pg_bulkload era una alternativa más rápida al comando COPY en PostgreSQL.
El módulo Pg_bulkload es desarrollado y mantenido por NTT OSS Center.
NOTA IMPORTANTE:en el entorno de replicación de transmisión en PostgreSQL, el módulo pg_bulkload no funciona correctamente. Vea aquí para más detalles.
Pgstattuple
El módulo pgstattuple proporciona varias funciones para obtener estadísticas a nivel de tupla en PostgresQL. La función en el módulo pgstattuple devuelve la longitud física de una relación, el porcentaje de tuplas "muertas" y otra información. Esto puede ser útil para que los usuarios determinen si el vacío es necesario o no. El argumento de la función es el nombre de la relación de destino (opcionalmente calificado por esquema) u OID.
Pg_trgm
pg_trgm es una extensión de PostgreSQL que proporciona coincidencias de cadenas difusas simples en PostgreSQL. Su sobrecarga operativa y conceptual es mucho menor que la búsqueda de texto completo de PostgreSQL o un motor de búsqueda independiente.
Un trigrama o trigraph es un grupo de tres caracteres consecutivos tomados de una cadena. Puedes medir la similitud de dos cadenas contando el número de trigramas que comparten. Esta simple idea de trigrama resulta muy efectiva para medir la similitud de palabras en muchos lenguajes naturales.
En general, el módulo pg_trgm puede ayudar cuando:
- Necesita coincidencias de cadenas insensibles a mayúsculas y minúsculas en PostgreSQL.
- Desea acelerar LIKE, ILIKE, ~ o ~* en PostgreSQL.
- Desea buscar patrones que no estén anclados a la izquierda (por ejemplo, %john%). Dichos patrones no son compatibles con los índices de árbol B en PostgreSQL.
La lista anterior de módulos/extensiones es muy útil para expandir la capacidad de PostgreSQL. Hay algunas extensiones más que no están incluidas en el blog, pero son muy útiles para expandir la funcionalidad de PostgreSQL. Estos son los siguientes.
- Extensiones de idioma:PL/Python, PL/Perl, PL/R, PL/v8, PL/sh, etc.
- Cstore_fdw
- Mongo_fdw
- HipoPG
- Tds_fdw
- Plperfilador
Conclusión
Hay muchas extensiones en las extensiones admitidas por la comunidad de PostgreSQL y algunas extensiones de terceros, todas utilizadas para un caso de uso particular. Puede expandir la capacidad o funcionalidad de PostgreSQL usando esos módulos.