PostgreSQL

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.

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 d'ells 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

Productes al voltant de PostgreSQL 
El PGDG solament desenvolupa el Motor de Dades i un nombre petit d'utilitats, per potenciar el treball amb PostgreSQL sol ser necessari afegir utilitats externes creades especialment per a aquest motor, algunes d'aquestes eines són:

Alternatives Comercials 
Gràcies a la seva llicència BSD, es permet la utilització del codi per ser comercialitzat. Un dels casos exemple és la d'Enterprise DB (Postgresql Plus), la qual inclou diversos agregats i una interfície de desenvolupament basada en Java. Entre les empreses que comercialitzen productes derivats del PostgreSQL, es troba CyberTech (Alemanya), amb el seu producte CyberCluster.

GIS 
 PostGIS
 Extensió que afegeix suport d'objectes geogràfics a PostgreSQL i permet realitzar anàlisis mitjançant consultes SQL espacials o mitjançant connexió a aplicacions GIS (Sistemes d'Informació Geogràfica).

Replicació 
 PgCluster
 Replicació multi mestre.

 Slony-I
 Replicació mestre esclau.

 PyReplica
 Replicació mestre esclau i multi mestre asincrónica.

Eines d'administració 
 PgAdmin3
 Entorn visual d'administració de la base de dades.

 PgAccess
 Entorn visual d'administració de la base de dades.

 PhpPgAdmin
 Ajust web.

 psql
 Client de consola.

 Database Master
 Entorn d'escriptori visual.

Recerca de text 
 Full text search
 Inclòs en el nucli a partir de la versió 8.3.
 Via Tsearch2 i OpenFTS per a versions anteriors a la 8.3.

XML 
 Suport de XML/XSLT
 Via XPath extensions en la secció contrib . Afegit al nucli a la versió 8.3 (com a mínim).

Usuaris destacats 
 .org, .info, .mobi i .aero registres de dominis per Afilies.
 American Chemical Society.
 BASF.
 IMDb.
 Skype.
 TiVo.
 Penny Arcade.
 Sony Online.
 O.S. Departament de Treball.
 USPS.
 VeriSign.
 Pictiger.com
 Wisconsin Circuit Court Access amb 6 * 180GB DBs replicats en temps real.
 OpenACS i .LRN.

Premis 
PostgreSQL ha rebut els següents reconeixements:

 1999 LinuxWorld Editor's Choice Award for Best
Database * 2000 Linux Journal Editors' Choice Awards for Best
Database * 2002 Linux New Mitjana Editors Choice Award for Best
Database * 2003 Linux Journal Editors' Choice Awards for Best
Database * 2004 Linux New Mitjana Award For Best
Database * 2004 Linux Journal Editors' Choice Awards for Best 
Database * 2004 ArsTechnica Best Server Application Award
 2005 Linux Journal Editors' Choice Awards for Best
Database * 2006 Linux Journal Editors' Choice Awards for Best
Database * 2008 Developer.com Product of the Year, Database Tool

Referències

Enllaços externs 

 Web de PostgreSQL 
 Assistència tècnica professional per a PostgreSQL

Sistemes de gestió de bases de dades lliures
Programari en català