PostgreSQL és un programari lliure que implementa un sistema de gestió de bases de dades relacional, distribuït amb la llicència PostgreSQL License.
Ofereix una alternativa a altres sistemes de gestió de base de dades (com ara MySQL, Firebird, i MaxDB), i de sistemes de programari propietari com Oracle, Sybase, DB2 d'IBM i Microsoft SQL Server.
PostgreSQL no té un sistema de seguiment d'errors, el que fa bastant difícil saber l'estat dels errors.A bug tracker for PostgreSQL?
Nom del producte L'ús de caràcters en majúscula en el nom PostgreSQL pot confondre a algunes persones a primera vista. Les diferents pronunciacions de "SQL" poden portar a confusió. Els desenvolupadors de PostgreSQL ho pronuncien (en anglès) /ˈpoʊstɡrɛs ˌkjuː ˈɛl/, és a dir, Postgres cu ela. És també comú referir-s'hi com a simplement "Postgres", el que fou el seu nom original. A causa del seu suport de l'estàndard SQL, comú entre la major part de bases de dades relacionals, la comunitat va considerar canviar el nom a l'anterior Postgres. No obstant això, el PostgreSQL Core Team va anunciar en 2007 que el producte seguiria dient-se PostgreSQL. El nom fa referència als orígens del projecte com la base de dades "post-Ingres", i els autors originals també van desenvolupar la base de dades Ingres.
Història PostgreSQL ha tingut una llarga evolució, la qual s'inicià el 1982 amb el projecte Ingres a la Universitat de Berkeley. Aquest projecte, liderat per Michael Stonebraker, va ser un dels primers intents d'implementar un motor de base de dades relacional. Després d'haver treballat força temps desenvolupant lIngres i d'haver-hi tingut una experiència comercial, Michael va decidir tornar a la Universitat el 1985 per treballar en un nou projecte basat en l'experiència d'Ingres. Aquest projecte va ser anomenat post-ingres o simplement POSTGRES.
El projecte post-ingres pretenia resoldre els problemes amb el model de base de dades relacional que havien estat aclarits al començament dels anys 1980. El principal d'aquests problemes era la incapacitat del model relacional de comprendre "tipus", és a dir, combinacions de dades simples que conformen una única unitat. Actualment, i quan s'hi afegeixen mètodes que n'encapsulen la funcionalitat, s'anomenen objectes. Es van esforçar a introduir la menor quantitat possible de funcionalitats per completar el suport de tipus. Aquestes funcionalitats incloïen l'habilitat de definir tipus, però també l'habilitat de descriure relacions - les quals fins a aquest moment eren àmpliament utilitzades però mantingudes completament per l'usuari. A Postgres la base de dades «comprenia» les relacions i podia obtenir informació de taules relacionades utilitzant regles. Postgres va usar moltes idees d'Ingres però no el seu codi.
La següent llista mostra les fites més importants en la vida del projecte Postgres.
1986: es van publicar diversos papers que descrivien les bases del sistema. 1988: ja es comptava amb una versió utilitzable. 1989: el grup publicava la versió 1 per a una petita comunitat d'usuaris. 1990: es publicava la versió 2 la qual tenia pràcticament reescrit el sistema de regles. 1991: publicació de la versió 3, aquesta afegia la capacitat de múltiples motors d'emmagatzematge. 1993: creixement important de la comunitat d'usuaris, la qual demandava més característiques. 1994: després de la publicació de la versió 4, el projecte va acabar i el grup es va dissoldre.
Després que el projecte POSTGRES acabés, dos graduats de la universitat, Andrew Yu i Jolly Chen, van començar a treballar sobre el codi de POSTGRES, això va ser possible atès que POSTGRES estava llicenciat sota la BSD, i el primer que van fer va ser afegir suport per al llenguatge SQL a POSTGRES, atès que anteriorment comptava amb un intèrpret del llenguatge de consultes QUEL (basat en Ingres), creant així el sistema al qual van anominar Postgres95.
Cap al 1996 es van unir al projecte persones alienes a la Universitat com Marc Fournier de Hub.Org Networking Services, Bruce Momjian i Vadim B. Mikheev els quals van proporcionar el primer servidor de desenvolupament no universitari per a l'esforç de desenvolupament de codi obert i van començar a treballar per tal d'estabilitzar el codi de Postgres95.
L'any 1996 van decidir canviar el nom de Postgres95 de tal manera que reflectís la característica del llenguatge SQL i van acabar anomenant-lo PostgreSQL, la primera versió del qual de codi obert va ser publicada el 8 de juliol de 1996. La primera versió formal de PostgreSQL (6.0) va ser publicada el gener de 1997. Des de llavors, molts desenvolupadors entusiastes dels motors de base de dades s'han unit al projecte, s'han coordinat via Internet i entre tots han anat incorporant moltes característiques al motor.
Tot i que la llicència permetia la comercialització de PostgreSQL, el codi no es va desenvolupar en principi amb finalitats comercials; cosa sorprenent considerant els avantatges que oferia. La principal derivació es va originar quan Paula Hawthtorn (un membre de l'equip original d'Ingres que es va passar a Postgres) i Michael Stonebraker van fundar Illustra Information Technologies per comercialitzar Postgres.
El 2000, ex inversors de Red Hat van crear l'empresa Great Bridge per a comercialitzar PostgreSQL i competir contra proveïdors comercials de bases de dades. Great Bridge va afavorir a diversos desenvolupadors de PostgreSQL i va fer, en contrapartida, donació de recursos a la comunitat. No obstant això, a finals de 2001 va tancar a causa de la dura competència d'empreses com a Red Hat i les difícils condicions del mercat.
El 2001, Command Prompt, Inc. va publicar Mammonth PostgreSQL, la més antiga distribució comercial de PostgreSQL. Continua donant suport a la comunitat PostgreSQL a través del patrocini de desenvolupadors i projectes, incloent-hi PL/Perl, PL/php i l'allotjament de projectes de comunitats com PostgreSQL Build Farm.
El gener de 2005, PostgreSQL va rebre suport del proveïdor de base de dades Pervasive Software, conegut pel seu producte Btrieve que es feia servir a la plataforma Novell Netware, Pervasive va anunciar suport comercial i participació comunitària i va aconseguir una mica d'èxit. No obstant això, al juliol de 2006 va deixar el mercat de suport de PostgreSQL.
A mitjan 2005 dues companyies més van anunciar plans per comercialitzar PostgreSQL, fent èmfasi en nínxols separats de mercats. EnterpriseDB va afegir funcionalitats que permetien que les aplicacions escrites per treballar amb Oracle fossin fàcils d'adapatar per a la seva execució amb PostgreSQL. Greenplum va contribuir millores directament orientades a aplicacions de Data Warehouse i intel·ligència de negocis, incloent-hi el projecte BizGres.
A l'octubre de 2005, John Loiacono, vicepresident executiu de programari a Sun Microsystems va comentar: "No pretenem ser revenedors de Microsoft, però estem fixant-nos en PostgreSQL", sense entrar en detalls. Cap al novembre de 2005, Sun Solaris 10 (versió 6/06) incloïa PostgreSQL.
L'agost de 2007 EnterpriseDB va anunciar el Postgres Resource Center i EnterpriseDB Postgres, dissenyats per ser una distribució de PostgreSQL completament configurada amb molts mòduls contribuïts i agregats. EnterpriseDB Postgres va canviar el seu nom per Postgres Plus al març de 2008.
El projecte PostgreSQL continua publicant versions principals anualment i versions menors de correcció d'errades (bugs), totes disponibles sota la llicència BSD, i basades en contribucions de proveïdors comercials, empreses que hi donen suport i programadors de codi obert majorment.
Característiques Algunes de les principals caractéristiques del PostgreSQL són, entre altres:
Alta concurrència Mitjançant un sistema denominat MVCC (Accés concurrent multiversió, per les seves sigles en anglès) PostgreSQL permet a un procés escriure en una taula, mentre d'altres hi accedeixen, sense bloquejar-se mútuament. Cada usuari obté una visió consistent de les últimes dades que han estat confirmades (commit). Aquesta estratègia es considera millor que l'ús de bloquejos per taula o per files, comuna en altres bases. S'elimina la necessitat de l'ús de bloquejos explícits.
Àmplia varietat de tipus natius PostgreSQL suporta nadiuament: Nombres de precisió arbitrària. Text de llargada il·limitada. Figures geomètriques (amb una varietat de funcions associades) Adreces IP (IPv4 i IPv6). Blocs d'adreces estil CIDR. Adreces MAC. Vectors.
A més a més, els usuaris poden crear els seus propis tipus de dades, que poden ser indexables mercès a la infraestructura GiST de PostgreSQL. Alguns exemples són els tipus de dades d'informació geogràfica (GIS) creats pel projecte PostGIS.
Altres característiques Claus foranes també denominades Claus alienes (foreign keys). Disparadors (triggers): Un disparador o trigger es defineix com una acció específica basada en algun esdeveniment a la base de dades. En el cas del PostgreSQL això significa l'execució d'un procediment emmagatzemat després que es dugui a terme una determinada acció, o quan s'avisa que aquesta acció està a punt de dur-se a terme (i abans que es dugui a terme), sobre una o diverses files d'una taula específica. Els disparadors es defineixen per sis característiques: El nom del disparador o trigger El moment en què el disparador ha d'activar-se (abans o després d'una certa acció) L'esdeveniment concret que activarà el disparador (el fet que s'afegeixin o modifiquin dades d'una fila d'una relació, per exemple) La taula on el disparador s'activarà La freqüència de l'execució (un cop per cada fila, o un cop per cada relació, per exemple) La funció que ha de ser cridada Combinant aquestes sis característiques, el PostgreSQL permet crear una àmplia funcionalitat a través del seu sistema de disparadors: Vistes. Integritat transaccional i relacional. Herència de taules. Tipus de dades i operacions geomètriques. Suport per a transaccions distribuïdes. Permet a PostgreSQL integrar-se en un sistema distribuït format per diversos recursos (p.e., una base de dades PostgreSQL, una altra Oracle, una cua de missatges IBM MQ JMS i un ERP SAP) gestionat per un servidor d'aplicacions on l'èxit ("commit") de la transacció global és el resultat de l'èxit de les transaccions locals.
Funcions Blocs de codi que s'executen en el servidor. Poden ser escrits en diversos llenguatges, amb la potència que cadascun dona, des de les operacions bàsiques de programació, com ara bifurcacions i bucles, fins a les complexitats de la programació orientada a objectes o la programació funcional.
Els disparadors (triggers en anglès) són funcions enllaçades a operacions sobre les dades.
Alguns dels llenguatges que es poden usar són els següents:
Un llenguatge propi anomenat PL/PgSQL (similar al PL/SQL d'Oracle). C. C++. Java PL/Java web . PL/Perl. plPHP . PL/Python. PL/Ruby . PL/sh . PL/Tcl. PL/Scheme . Llenguatge per a aplicacions estadístiques R per mitjà de PL/R.
PostgreSQL permet funcions que retornin "files". Els valors retornats per aquestes funcions es tracten de la mateixa manera que una fila retornada per una consulta.
Les funcions poden ser definides per executar-se amb els drets de l'usuari executor o amb els drets d'un usuari prèviament definit. Allò que el PostgreSQL anomena "funcions", en altres sistemes de bases de dades, s'anomena sovint "procediments emmagatzemats" (stored procedures en anglès).
Historial de versions