PostgreSQL 8: Schneller und flexibler

Der freie Datenbankserver bietet in der Version 8 nicht nur mehr Funktionen, sondern läuft auch erstmals nativ unter Windows.

Artikel erschienen in Swiss IT Magazine 2005/03

     

Seit Mitte Januar ist die neuste Version des freien Datenbankservers PostgreSQL endlich verfügbar. Sie bringt unter anderem einen nativen Windows-Service, Savepoints, Point-in-Time-Recovery, flexible Tablespaces, verbessertes Buffer-Management und schnellere Wartungsfunktionen mit. Damit kann PostgreSQL die eigene Position gegenüber der Konkurrenz wie MS SQL oder MySQL MaxDB weiter stärken.


Kein Cygwin mehr

Eines der grössten Mankos, vor allem in den Augen vieler Entwickler, war der fehlende Windows-Support von PostgreSQL. Zwar liess sich PostgreSQL mit Hilfe eines Subsets des Unix-Emulators Cygwin unter Windows betreiben, allerdings war dies vor allem wegen der nicht ganz einfachen Installation für viele Entwickler zu umständlich. Dieses Problem wurde nun behoben: Die Version 8.0 läuft nun nativ als Windows-Service. Zur Installation wird ein MSI-Installer (www.pgfoundry.org/projects/pginstaller) verwendet, der die Datenbank auf Windows 2000, Windows XP sowie Windows 2003 einrichtet.


Geteilte Transaktionen

Die Funktionalität von PostgreSQL wurde im Rahmen der Version 8 vor allem bei den Transaktionen sowie der Datensicherheit stark erweitert. So unterstützt PostgreSQL nun sogenannte Savepoints. Sie erlauben, grosse Transaktionen in kleinere Teiltransaktionen aufzuteilen, die ausgeführt werden, selbst wenn eine dieser Teiltransaktionen fehlschlägt. In früheren Versionen war dieses Verhalten, das vor allem bei der Fehlerbehandlung in grossen Transaktionen nützlich ist, noch nicht verfügbar, und so wurde im Fehlerfall die komplette Transaktion zurückgerollt.
Die Steuerung einer Transaktion mit Hilfe der Savepoints ist verhältnismässig simpel. Ein Savepoint wird mit SAVEPOINT mein_savepoint; gestartet. Nachher können beliebig viele Aktionen ausgeführt werden. Tritt während einer dieser Aktionen ein Fehler auf oder stellt man fest, dass das Resultat der Operationen unerwünscht ist, werden mit ROLLBACK TO mein_savepoint; sämtliche Aktionen rückgängig gemacht, die seit dem Setzen des Savepoint mittels SAVEPOINT mein_savepoint; ausgeführt wurden. PostgreSQL setzt dann die Arbeit hinter ROLLBACK TO mein_savepoint; fort, ohne dass die gesamte Transaktion abgebrochen wird.


Backup in jeder Situation

PostgreSQL hält, um eine grössere Datensicherheit zu gewährleisten, ein sogenanntes Write Ahead Log (WAL) vor. Dieses Logfile enthält sämtliche Änderungen an den Daten einer Datenbank, damit im Falle eines Absturzes des Servers die Daten wieder rekonstruiert werden können. Dies ist nötig, da PostgreSQL in der Zeit zwischen einzelnen Checkpoints Daten nicht auf die Festplatte schreibt, sondern diese für eine gewisse Zeit im Cache vorhält. Während die bisherigen Mechanismen für die meisten Desaster ausreichen, konnte man im Fall eines Festplattenschadens nur ein Backup zurückspielen oder die replizierten Daten von einem Slave verwenden. Die Daten, die in der Zeit zwischen dem Backup und dem Ausfall verändert wurden, waren ohne einen Slave verloren. Dieses Problem lässt sich nun mit Hilfe einer kontinuierlichen Archivierung der WAL-Dateien auf ein externes Medium lösen. Im Falle eines Ausfalls können dann mit Hilfe der WAL-Dateien die fehlenden Daten bis zu einem gewünschten Zeitpunkt rekonstruiert werden.


Weniger behäbig

Weitere Verbesserungen wurden bezüglich der Arbeitsgeschwindigkeit von PostgreSQL vorgenommen. So wurde einerseits der Caching-Algorithmus auf das Adaptive-Replacement-Cache-Verfahren umgestellt. Dieses sorgt im Vergleich zur früher verwendeten Strategie, welche die zuletzt benutzten Speicherseiten im Cache hielt, für eine bessere Skalierbarkeit, da nun nicht nur der zeitliche Abstand der Nutzung berücksichtigt wird, sondern auch deren Häufigkeit. Für eine weitere Beschleunigung und eine ausgeglichenere Last auf dem Server sorgt ein Background-Writer. Dieser schreibt nun kontinuierlich geänderte Daten auf die Festplatte, während dies in früheren Versionen nur alle paar Minuten auf einmal während der Erzeugung eines Checkpoints passiert ist. Zudem lässt sich das Wartungsprogramm VACUUM so steuern, dass die Wartungszyklen über eine längere Zeit verteilt werden, womit das Löschen unbenötigter Daten ressourcenschonender ablaufen kann.


PostgreSQL-8-Highlights


• nativer Windows-Service


• Unterstützung für Subtransaktionen


• Point-in-Time-Recovery


• Tablespaces lassen sich auf andere Festplatten verlagern


• verbessertes Cache-Management


• kontinuierliches Schreiben von Checkpoint-Daten


• feinere Steuerung von VACUUM


• Änderungen von Spaltentypen mit ALTER TABLE möglich


• neue Version von PL/Perl unterstützt u.a. Triggers


• COPY unterstützt CSV-Daten




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Wieviele Zwerge traf Schneewittchen im Wald?
GOLD SPONSOREN
SPONSOREN & PARTNER