Extensor SQL: Preludio

En la seccion que sigue, trataremos como añadir extensiones al Postgres SQL usando peticiones del lenguaje:

Como hacer extensible el trabajo

Postgres es extensible porque las operaciones son catalogos en disco. Si está familiarizado con los estandares de sistemas relacionales, sabe que la informacion se almacena en bases de datos, tablas, columnas, etc., en lo que se comunmente conoce como sistema de catalogos. (Algunos sistemas lo llaman diccionario de datos). El catalogo aparece al usuario como una clase, como otro objeto cualquiera, pero DBMS lo almacena en una bilioteca. Una diferencia clave entre Postgres y el estandar de sistemas relacionales es que Postgres almacena muchas mas informacion en su catalogos -- no solo informacion de tablas y columnas, sino tambien informacion sobre sus tipos, funciones y metodos de acceso. Estas clases pueden ser modificadas por el usuario, y dado que Postgres basa la operacion interna en todas sus clases, esto significa que Postgres puede ser extendido por los usuarios. Por comparacion, la convencion es que los sitemas de base de datos pueden ser extendidos solamante cambiando los procedimientos codificados del DBMS o cargando modulos especialmente escritos por el vendedor de DBMS.

Postgres es tambien distinto a otros gestores de datos en que el servidor puede incoporar codigo escrito por el usuario a traves de bibliotecas de carga dinamicas. O sea, el usuario puede especificar un fichero de codigo objeto (p. ej., un fichero compilado .o o bibliotecas de intercambio) con lo que se implementa un nuevo tipo o funciones y Postgres cargara lo que requiera. El codigo escrito en SQL es mas dificil de añadir al servidor. Esta habilitad para modificar la operacion 'al vuelo' hace de Postgres la unica suite para prototipos rapidos de nuevas aplicaciones y estructuras de almacenamiento.