September 2011 Seite 1 von 4 PostgreSQL Comeback eines Datenbank-Veteran Am 20.09.2010 gab die PostgreSQL Global Development Group die Veröffentlichung von PostgreSQL 9.0 bekannt. Mit diesem Major Release wurden viele Verbesserungen in den Bereichen Sicherheit, Anwendungsunterstützung, Monitoring, Performance sowie beim Speichern von Spezialdaten realisiert, auf die eine zunehmende Anzahl kommerzieller Anwender bereits länger gewartet hatte. Obwohl die Wurzeln bereits in die 80er Jahre zurückreichen, gelang PostgreSQL erst in den letzten Jahren ein breiter Durchbruch auch in der kommerziellen Nutzung. Es ist aktuell wohl die Datenbank mit dem auffälligsten Marktwachstum weltweit. Was sind die Gründe? Zum einen setzt sich in immer mehr Unternehmen die Überzeugung durch, dass OpenSource-Produkte in vielen Bereichen wegen ihrer kommerziellen Vorteile und ihrer weiten Verbreitung echte Alternativen im professionellen Einsatz sind. Zum anderen bietet PostgreSQL heute eigentlich alles, was eine kommerzielle Nutzung benötigt: Das Produkt hat einen sehr hohen Reifegrad erreicht und wird zunehmend besser von vielen IT-Dienstleistern unterstützt. Angebote mit professionellem Support sind heute kostengünstig am Markt vorhanden. Obwohl das Produkt über viele Jahre ein Schatten-Dasein im Licht der großen kommerziellen Datenbanken, aber auch der durch den Internet-Boom schnell verbreiteten Open-Source-Datenbank MySQL führte, erfolgte eine konsequente Weiterentwicklung des Produkts durch die Community. Die zunehmende Popularität von PostgreSQL ist auch darauf zurückzuführen, dass die Zukunft der anderen große Open-SourceDatenbank MySQL nach der Übernahme durch die Firma Oracle ungewiss ist. Somit verwundert es nicht, dass ein zunehmender Umstieg von MySQL auf PostgreSQL zu beobachten ist. Post-Ingres-Projekt zu PostgreSQL PostgreSQL entstammt einer Datenbankentwicklung der University of California. Die Basis bildete das Ingres-Projekt, das 1985 als neuer Ansatz startete, um Probleme der damaligen Datenbankmanagementsysteme zu überwinden. Mit Postgres v1 erschien 1987 die erste professionell nutzbare Version, die später dann um das Rule-System erweitert wurde. Dies ist noch heute in PostgreSQL vorhanden. Die Abfrageeinheit wurde 1991 mit Version 3 weiterentwickelt. 1993 beendete die University of California das Projekt mit der Version 4.2, um die rasant wachsenden Support-Anforderungen nicht mehr tragen zu müssen. Nach Hinzufügen eines SQL-Abfrage-Interpreters wurde die Software 1995 unter dem Begriff Postgres95 mit dem Quellcode des originalen Berkeley Postgres ins Web gestellt. Das Produkt war zu dieser Zeit komplett in ANSI C geschrieben. Verbesserung in den Bereichen Wartbarkeit und Performance folgten. Schließlich konnte die Performance gegenüber dem originalen Berkeley Postgres um bis zu 50% gesteigert werden. Die Entwicklung von PostgreSQL wurde 1996, zusammen mit dem Wechsel auf den heutigen Namen, begonnen. Die erste veröffentlichte Version unter diesem Namen ist 6.0. Seitdem wurde PostgreSQL fortlaufend weiterentwickelt. September 2011 Seite 2 von 4 PostgreSQL im praktischen Einsatz Heute präsentiert sich PostgreSQL als ausgereiftes und stabiles Produkt, dass (fast) alle Anforderungen an ein modernes relationales Datenbanksystem erfüllt. Dabei überrascht viele die ausgesprochen gute Performance, die einen Vergleich mit manchem kommerziellen Produkt nicht zu scheuen braucht. Für eine professionelle Nutzung sind aber vor allem die neuen Replikations-Mechanismen entscheidend. PostgreSQL ermöglicht seit der Version 9 Hot Standby sowie Streaming Replication. Features wie Online Backup sowie Point in time Recovery runden die wichtigsten Leistungsmerkmale für einen professionellen Einsatz aus Sicht der Datenbankadministration ab. Nicht zuletzt wird die zunehmende Verbreitung von PostgreSQL aber auch durch ihre Robustheit in der Transaktionsverarbeitung und hohe Zuverlässigkeit gefördert. Die Version 9 sticht durch zusätzliche Performance-Features und Spalten-Triggern sowie vielen anderen sehr nützlichen Erwieterungen hervor. Dennoch ist PostgreSQL eine schlanke und sehr gut zu verwaltende Datenbank, die sich auf ihr Kerngeschäft, der Verwaltung von Datenbeständen, konzentriert. Migration und/oder Mischbetrieb? PostgreSQL bietet gegenüber vielen anderen Datenbanken einen entscheidenden Vorteil: Es weist einen sehr hohe Kompatibilitätsgrad zur OracleDatenbank auf. Die Vorteile werden im praktischen Betrieb schnell sichtbar: Migrationen von Oracle zu PostgreSQL sind vielfach mit einem überschaubaren Migrationsaufwand verbunden. Zudem lassen sich Oracle- und PostgreSQL-Datenbanken problemlos im Mischbetrieb einsetzen. Trotz des hohen Kompatibilitätsgrades zu Oracle ist für Migrationen einiges zu beachten. In aller Regel gilt auch hier: Umfangreiche praktische Erfahrungen bei Migrationen von Datenbanken, genaue Konzepte sowie detaillierte Planungen sind zwingend erforderlich, um den Migrationsaufwand in Grenzen zu halten. Für Replikationen zwischen PostgreSQL und Oracle bieten sich unterschiedliche Lösungsansätze. Sie unterscheiden sich durch Kosten und Reifegrad. Die Palette reicht vom Datenbank-Link über individuelle Lösungen, die auf Log Shipping basieren, bis hin zum Einsatz von „Oracle Streams“ oder dem neuen Produkt „Oracle XStream“ Point in time Recovery Point in time Recovery erlaubt es, eine Datenbank, ausgehend von einem definierten Startzustand zu rekonstruieren. Dazu werden die Transaktionslogs archiviert und die Datenbank kann aus diesen Logs, entweder komplett oder bis zu einem gewünschten Zeitpunkt, wiederhergestellt werden. Hot-Standby-Datenbank Die fortlaufendende Archivierung der Transaktionslogs (falls Point in time Recovery aktiviert wurde) ermöglicht die Einrichtung und Konfiguration von Hochverfügbarkeitslösungen für PostgreSQL mit einem oder mehreren StandbyServern. Der primäre PostgreSQL-Server protokolliert und archiviert alle seine Transaktionen, während der sekundäre Server in einem Recovery-Modus arbeitet: Er liest ständig die Transaktionslogs des primären Servers und führt die dort verzeichneten Transaktionen aus. Bei einem Ausfall des Hauptservers kann dann auf einem dieser StandbyServer weitergearbeitet werden. September 2011 Seite 3 von 4 Tools zur Administration und zum Monitoring pgAdmin Monitoring pgAdmin ist das populärste und umfangreichste Open-SourceAdministrationswerkzeug für PostgreSQL. Die Anwendung läuft unter Linux, Solaris und Windows. Mit pgAdmin lassen sich Datenbanken ab Version 7.3 managen. Dies reicht von einfachen SQL-Abfragen bis zur Entwicklung komplexer Datenbanken. Aus der grafischen Oberfläche lassen sich alle wesentlichen Funktionen von PostgreSQL einfach verwalten. Die Anwendung enthält einen komfortablen SQL-Editor, einen server-basierten Code-Editor sowie einen SQL-, Batch-, Shellund Job-Scheduling-Agenten. Server-Verbindungen werden über TCP/IP oder Unix Domain Sockets aufgebaut und lassen sich auch über SSL-Verbindungen verschlüsseln ohne zusätzliche Treiber zu installieren. pgAdmin wird von einer Community von PostgreSQL-Experten entwickelt und steht in vielen Sprachen zur Verfügung. Die Software ist lizenzkostenfrei. Auch im Bereich Monitoring hält PostgreSQL mit den „großen“ Datenbanksystemen weitgehend Schritt. Neben der Möglichkeit, SNMP-Traps an ein vorhandenes Monitoring-Tool zu senden, gibt es fertige Monitoring-Lösungen, die direkt eingesetzt werden können. Ein Angebot kommt von der Firma EnterpriseDB, eine weitere Option ist die Einbindung in Nagios, einem populären Open-Source-Monitoring-Tool. Hierfür gibt es eine Reihe von Plug-ins. Die Bandbreite der Plug-ins reicht von einer einfachen Überprüfung, ob der Datenbankserver Verbindungen akzeptiert, bis hin zu grafischen Darstellungen für die Auswertung von PerformanceDaten. September 2011 Seite 4 von 4 Charakteristika (Quelle PostgreSQL) PostgreSQL ist heute auf den meisten Unix- und LinuxPlattformen lauffähig. Seit der Version 8.0 wird auch Windows unterstützt. Die Datenbank ist durch Funktionen, selbstdefinierbare Datentypen und Operatoren erweiterbar. Export und Import sowohl von Daten als auch von Datenbankstrukturen (Schemata) sind möglich. Die Größe von Datenbanken in PostgreSQL ist theoretisch nicht begrenzt. Hier limitiert lediglich die Leistungsfähigkeit der Hardware. Jede Tabelle kann bis zu 32 TB umfassen. Die Anzahl der Datensätze ist unbegrenzt. Jeder Datensatz kann bis zu 1,6 TB groß werden. Lediglich die Anzahl der Spalten ist auf 250 bis 1600, je nach Datentyp, begrenzt. Felder können bis zu 1 GB Daten aufnehmen und für jede Tabelle lassen sich unbegrenzt Indexe definieren. Die PostgreSQL-Datenbankdateien sowie die Verbindungen von Client-Programmen werden von einem Serverprozess („postmaster“) verwaltet. Die Kommunikation mit dem „postmaster“ können über unterschiedlichste Client-Programme aufgebaut werden. Das in der Distribution mitgelieferte „psql“ ist ein einfacher aber schneller Datenbankmonitor. Die meisten Linux-Distributionen enthalten zudem den grafischer Client pgAccess. PostgreSQL kennt ein umfassendes Transaktionskonzept, das Multiversion Concurrency Control (MVCC) unterstützt. Geschachtelte komplexe Abfragen mit Unterabfragen (Subselects) sind möglich. Referenzielle Integrität (u. a. Constraints, Fremdschlüssel) wird gewährleistet, Views, die mit Hilfe von Regeln (Rules und Triggers) auch schreibfähig sein können (Updatable Views), lassen sich definieren. Trigger und Stored Procedures sind in verschiedenen Sprachen möglich (PL/pgSQL, PL/Tcl, PL/Perl, PL/Python, PL/Java, PL/PHP, PL/Ruby, PL/R, PL/sh, PL/Scheme), Schnittstellen zu zahlreichen Programmiersprachen (u. a. C, Delphi, C++, Java/JDBC, Tcl, PHP, Perl, Python, Ruby sowie zu ODBC und .NET) werden geboten. Detaillierte Übersicht zu PostgreSQLFeatures unter http://www.postgresql.org/about/ featurematrix Impressum Datum: September 2011 Autor: Lutz Fröhlich Kontakt: [email protected] www.avato-consulting.com © 2011 avato consulting