El Sistema Gestor de Bases de Datos Relacionales Orientadas a Objetos conocido como PostgreSQL (y brevemente llamado Postgres95) est� derivado del paquete Postgres escrito en Berkeley. Con cerca de una d�cada de desarrollo tras �l, PostgreSQL es el gestor de bases de datos de c�digo abierto m�s avanzado hoy en d�a, ofreciendo control de concurrencia multi-versi�n, soportando casi toda la sintaxis SQL (incluyendo subconsultas, transacciones, y tipos y funciones definidas por el usuario), contando tambi�n con un amplio conjunto de enlaces con lenguajes de programaci�n (incluyendo C, C++, Java, perl, tcl y python).
La implementaci�n del DBMS Postgres comenz� en 1986. Los conceptos iniciales para el sistema fueron presentados en The Design of Postgres y la definici�n del modelo de datos inicial apareci� en The Postgres Data Model. El dise�o del sistema de reglas fue descrito en ese momento en The Design of the Postgres Rules System. La l�gica y arquitectura del gestor de almacenamiento fueron detalladas en The Postgres Storage System.
Postgres ha pasado por varias revisiones importantes desde entonces. El primer sistema de pruebas fue operacional en 1987 y fue mostrado en la Conferencia ACM-SIGMOD de 1988. Lanzamos la Versi�n 1, descrita en The Implementation of Postgres, a unos pocos usuarios externos en Junio de 1989. En respuesta a una cr�tica del primer sistema de reglas (A Commentary on the Postgres Rules System), �ste fue redise�ado (On Rules, Procedures, Caching and Views in Database Systems) y la Versi�n 2, que sali� en Junio de 1990, lo incorporaba. La Versi�n 3 apareci� en 1991 y a�adi� una implementaci�n para m�ltiples gestores de almacenamiento, un ejecutor de consultas mejorado y un sistema de reescritura de reglas nuevo. En su mayor parte, las siguientes versiones hasta el lanzamiento de Postgres95 (ver m�s abajo) se centraron en mejorar la portabilidad y la fiabilidad.
Postgres forma parte de la implementaci�n de muchas aplicaciones de investigaci�n y producci�n. Entre ellas: un sistema de an�lisis de datos financieros, un paquete de monitorizaci�n de rendimiento de motores a reacci�n, una base de datos de seguimiento de asteroides y varios sistemas de informaci�n geogr�fica. Tambi�n se ha utilizado como una herramienta educativa en varias universidades. Finalmente, Illustra Information Technologies (posteriormente absorbida por Informix) tom� el c�digo y lo comercializ�. Postgres lleg� a ser el principal gestor de datos para el proyecto cient�fico de computaci�n Sequoia 2000 a finales de 1992.
El tama�o de la comunidad de usuarios externos casi se duplic� durante 1993. Pronto se hizo obvio que el mantenimiento del c�digo y las tareas de soporte estaban ocupando tiempo que deb�a dedicarse a la investigaci�n. En un esfuerzo por reducir esta carga, el proyecto termin� oficialmente con la Versi�n 4.2.
En 1994, Andrew Yu y Jolly Chen a�adieron un int�rprete de lenguage SQL a Postgres. Postgres95 fue publicado a continuaci�n en la Web para que encontrara su propio hueco en el mundo como un descendiente de dominio p�blico y c�digo abierto del c�digo original Postgres de Berkeley.
El c�digo de Postgres95 fue adaptado a ANSI C y su tama�o reducido en un 25%. Muchos cambios internos mejoraron el rendimiento y la facilidad de mantenimiento. Postgres95 v1.0.x se ejecutaba en torno a un 30-50% m�s r�pido en el Wisconsin Benchmark comparado con Postgres v4.2. Adem�s de correcci�n de errores, �stas fueron las principales mejoras:
El lenguage de consultas Postquel fue reemplazado con SQL (implementado en el servidor). Las subconsultas no fueron soportadas hasta PostgreSQL (ver m�s abajo), pero pod�an ser emuladas en Postgres95 con funciones SQL definidas por el usuario. Las funciones agregadas fueron reimplementadas. Tambi�n se a�adi� una implementaci�n de la cl�usula GROUP BY. La interfaz libpq permaneci� disponible para programas escritos en C.
Adem�s del programa de monitorizaci�n, se incluy� un nuevo programa (psql) para realizar consultas SQL interactivas usando la librer�a GNU readline.
Una nueva librer�a de interfaz, libpgtcl, soportaba clientes basados en Tcl. Un shell de ejemplo, pgtclsh, aportaba nuevas �rdenes Tcl para interactuar con el motor Postgres95 desde programas tcl
Se revis� la interfaz con objetos grandes. Los objetos grandes de Inversion fueron el �nico mecanismo para almacenar objetos grandes (el sistema de archivos de Inversion fue eliminado).
Se elimin� tambi�n el sistema de reglas a nivel de instancia, si bien las reglas siguieron disponibles como reglas de reescritura.
Se distribuy� con el c�digo fuente un breve tutorial introduciendo las caracter�sticas comunes de SQL y de Postgres95.
Se utiliz� GNU make (en vez de BSD make) para la compilaci�n. Postgres95 tambi�n pod�a ser compilado con un gcc sin parches (al haberse corregido el problema de alineaci�n de variables de longitud doble).
En 1996, se hizo evidente que el nombre "Postgres95" no resistir�a el paso del tiempo. Elegimos un nuevo nombre, PostgreSQL, para reflejar la relaci�n entre el Postgres original y las versiones m�s recientes con capacidades SQL. Al mismo tiempo, hicimos que los n�meros de versi�n partieran de la 6.0, volviendo a la secuencia seguida originalmente por el proyecto Postgres.
Durante el desarrollo de Postgres95 se hizo hincapi� en identificar y entender los problemas en el c�digo del motor de datos. Con PostgreSQL, el �nfasis ha pasado a aumentar caracter�sticas y capacidades, aunque el trabajo contin�a en todas las �reas.
Las principales mejoras en PostgreSQL incluyen:
Los bloqueos de tabla han sido sustituidos por el control de concurrencia multi-versi�n, el cual permite a los accesos de s�lo lectura continuar leyendo datos consistentes durante la actualizaci�n de registros, y permite copias de seguridad en caliente desde pg_dump mientras la base de datos permanece disponible para consultas.
Se han implementado importantes caracter�sticas del motor de datos, incluyendo subconsultas, valores por defecto, restricciones a valores en los campos (constraints) y disparadores (triggers).
Se han a�adido funcionalidades en l�nea con el est�ndar SQL92, incluyendo claves primarias, identificadores entrecomillados, forzado de tipos cadena literales, conversi�n de tipos y entrada de enteros binarios y hexadecimales.
Los tipos internos han sido mejorados, incluyendo nuevos tipos de fecha/hora de rango amplio y soporte para tipos geom�tricos adicionales.
La velocidad del c�digo del motor de datos ha sido incrementada aproximadamente en un 20-40%, y su tiempo de arranque ha bajado el 80% desde que la versi�n 6.0 fue lanzada.