PostgreSQL

Artikel aus c’t 20/2005 zu PostgreSQL 8.0.3

Entstanden im Gefolge des US-Forschungsprojekts Ingres und unter dem ursprünglichen Namen Postgres95 schon lange als Bestandteil der gängigen Linux-Distributionen verbreitet, verfolgt dieses Paket seit Anbeginn recht hoch gesteckte Ziele. Im Unterschied zu den anderen hier vorgestellten Datenbanken präsentiert sich PostgreSQL als objektrelationales Verwaltungssystem: Datentypen können durch Vererbung einzelner Attribute zur Definition eines Subtyps herhalten oder zu mehreren in einem Supertyp zusammengefasst werden.

Aus dem Funktionsschatz normaler relationaler Datenbanken stammen ACID-Transaktionen, Savepoints, Versioning, Trigger sowie Stored Procedures, die in zahlreichen Sprachen formuliert sein können. Für die Garbage Collection nutzt PostgreSQL das hauseigene Kommando VACUUM, in früheren Zeiten ein Dauerbrenner in den Support-Foren. Mit Version 8 haben die Entwickler das Thema mit neuen Mechanismen zur Speicherverwaltung entschärft. Auch das justierbare Vacuum-Delay, mit dem sich das Aufräumen situationsbedingt automatisieren lässt, erleichtert die Speicherhygiene. Mit „Point in Time Recovery“ kann das System zudem einen früheren Zustand anhand der Transaktionslogs rekonstruieren, auch wenn man nicht ganz so oft Sicherungen aufgezeichnet hat.

Speziell für sehr große Datenbestände, etwa in einem Data Warehouse mit gesammelten Informationen über alle Geschäftsvorfälle in einem Unternehmen, offeriert PostgreSQL die Verwendung von Tablespaces. Damit lassen sich einzelne Datenbereiche im Interesse eines schnelleren Zugriffs gezielt auf reservierten Datenträgern platzieren.

Die Vielfalt an Funktionen und Optimierungsmöglichkeiten stellt allerdings hohe Anforderungen an die Betreiber einer PostgreSQL-Datenbank. Schon bei der Installation des Systems läuft man ohne professionelle Praktiken schnell ins Messer. Das Unterfangen, für den PostgreSQL-Administrator ein Konto ohne Passwort anzulegen, bestraft das System mit der automatischen Vergabe eines 32-stelligen alphanumerischen Zugangscodes, den man per Tastatur kaum bewältigen kann. Auch die Entscheidung, welche Zusatzfunktionen mit installiert werden sollen, und die Anpassung der angelegten Konfigurationsdateien verlangen nach intensiven Vorbereitungen.

Die Datenbank mit dem Elefantenlogo beschäftigt zwar nicht ganz so viele Buchautoren wie MySQL, aber das Angebot deckt vom Einstieg bis ins Eingemachte alle Aspekte ab. Dazu kommt ein ganzes Sortiment spezialisierter Newsgroups, und wer Absicherung für eine kritische Produktionsanwendung braucht, findet neuerdings Hilfe beim kommerziellen Support-Anbieter Pervasive Computing. (hps)

Artikel aus c’t 14/2000 zu Postgresql v7.0.2

Der Klassiker unter den frei verfügbaren Datenbanken ist PostgreSQL, das gerade frisch in der Version 7 erschienen ist. PostgreSQL kommt inklusive Quelltext daher. Sein Einsatz ist nicht lizenzkostenpflichtig. Wer mag, kann seit einiger Zeit aber kommerziellen Support bekommen. Ursprünglich stammt die Entwicklung von einem Projekt der Universität Berkeley (erst Ingres, später Postgres95), wird seit 1996 aber von einer Gruppe weltweit verstreuter Freiwilliger weitergetrieben, die recht regelmäßig neue Versionen auflegen.

PostgreSQL kann sich am ehesten von allen freien Datenbanken mit den kommerziellen Kolossen messen: Es bietet Mechanismen wie Transaktionen und bindet über Module auch prozedurale Sprachen in den Server ein, neben dem PostgreSQL-eigenen PL/pgSQL zum Beispiel auch TCL. Neben C-, C++- und TCL-Bibliotheken gibt es JDBC- und ODBC-Schnittstellen (letztere als Windows-Treiber und für Unix). Bruce Momjian schreibt für Addison-Wesley gerade an einem Buch über PostgreSQL, das, soweit vollendet, vorab schon auf derPostgreSQL-Website (www.postgresql.org) einzusehen ist.

Die Inbetriebnahme von PostgreSQL erfordert im Vergleich zu MySQL etwas mehr Aufwand. Es empfiehlt sich, die Quelltexte für das jeweilige System zu kompilieren. Unter den Quelltexten findet sich ein Regression-Test, mit dem man den Kompilations- und Anpassungserfolg überprüfen kann.