36.1. Cómo funciona la extensibilidad #

PostgreSQL es extensible porque su funcionamiento está basado en catálogos. Si estás familiarizado con los sistemas de bases de datos relacionales estándar, sabrás que almacenan información sobre bases de datos, tablas, columnas, etc., en lo que comúnmente se conoce como catálogos del sistema. (Algunos sistemas llaman a esto el diccionario de datos). Los catálogos aparecen ante el usuario como tablas como cualquier otra, pero el DBMS almacena su contabilidad interna en ellas. Una diferencia clave entre PostgreSQL y los sistemas de bases de datos relacionales estándar es que PostgreSQL almacena mucha más información en sus catálogos: no solo información sobre tablas y columnas, sino también información sobre tipos de datos, funciones, métodos de acceso, etcétera. Estas tablas pueden ser modificadas por el usuario, y dado que PostgreSQL basa su funcionamiento en estas tablas, esto significa que PostgreSQL puede ser extendido por los usuarios. En comparación, los sistemas de bases de datos convencionales solo se pueden extender cambiando procedimientos codificados en el código fuente o cargando módulos escritos especialmente por el proveedor del DBMS.

El servidor de PostgreSQL puede además incorporar código escrito por el usuario en sí mismo mediante la carga dinámica. Es decir, el usuario puede especificar un archivo de código objeto (por ejemplo, una biblioteca compartida) que implemente un nuevo tipo o función, y PostgreSQL lo cargará según sea necesario. El código escrito en SQL es aún más trivial de añadir al servidor. Esta capacidad de modificar su funcionamiento al vuelo hace que PostgreSQL sea único para el prototipado rápido de nuevas aplicaciones y estructuras de almacenamiento.