PostgreSQL




                    PostgreSQL
             Die freie Datenbankalternative


                  Peter Eisentraut
             petere@postgresql.org


                      22. 1. 2007
PostgreSQL




Agenda


      1      Historie

      2      Das Projekt

      3      Im Einsatz

      4      Features

      5      Interna

      6      Abschluss
PostgreSQL
  Historie




Agenda


       1     Historie

       2     Das Projekt

       3     Im Einsatz

       4     Features

       5     Interna

       6     Abschluss
PostgreSQL
  Historie




INGRES



      1977–1985
             University of California at Berkeley
             Prof. Stonebraker
             Prototyp eines relationalen DBMS
      1986—
             Relational Technologies/Ingres Corp./Computer Associates
             Kommerziell erfolgreich
PostgreSQL
  Historie




POSTGRES



      1986–1994
             University of California at Berkeley
             Prof. Stonebraker
             Prototyp eines objektrelationalen DBMS
      1995—
             Illustra/Informix/IBM
             Kommerziell erfolgreich
PostgreSQL
  Historie




PostgreSQL



      1995
             Postgres95
             University of California at Berkeley
             Umstellung auf SQL
      1996—
             Open-Source-Projekt
             Teamwachstum von 4 auf mehrere Dutzend
PostgreSQL
  Das Projekt




Agenda


      1      Historie

      2      Das Projekt

      3      Im Einsatz

      4      Features

      5      Interna

      6      Abschluss
PostgreSQL
  Das Projekt




Projektorganisation




                Interessierte versammeln sich auf
                pgsql-hackers@postgresql.org
                Quellcode im CVS
                Entwickler schicken Patches
                Core Team behält den Überblick
PostgreSQL
  Das Projekt




Entwicklungsarbeit


                “Scratch your own itch”
                Roadmap gibt’s nicht
                Feature-Vorschläge auf TODO-Liste
                Nebenaufgaben:
                    Dokumentation
                    Website
                    Lokalisierung
                    Öffentlichkeitsarbeit
                    usw.
PostgreSQL
  Das Projekt




Wer entwickelt das?




                Selbstständige
                Dienstleister
                Anbieter von Erweiterungen
                Hobbyisten
                Studenten
PostgreSQL
  Das Projekt




Lizenz




                Freie Software / Open Source
                BSD-Lizenz
                Keinerlei Lizenzkosten
                Eigene Ergänzungen beliebig möglich
                Keine Herausgabe des Quelltextes erforderlich
PostgreSQL
  Das Projekt




Community




                Anwender helfen Anwendern
                Direkter Kontakt zu Entwicklern
                Website: http://www.postgresql.org/
                Mailing-Listen
                IRC, Foren, Blogs, . . .
PostgreSQL
  Im Einsatz




Agenda


      1        Historie

      2        Das Projekt

      3        Im Einsatz

      4        Features

      5        Interna

      6        Abschluss
PostgreSQL
  Im Einsatz




Anwendungen

               Telekommunikation
               Universitäten
               Regierungen
               Militär
               Warenwirtschaft
               Steuerungssysteme
               Internet
               Medien
               Einzelhandel
               Technologiefirmen
PostgreSQL
  Im Einsatz




Vergleich mit anderen Produkten



               Vergleichbare Menge von Features
               Performance:
                   Benchmark muss wirklichkeitsnah sein
                        AS3AP: Geschwindigkeit und Skalierbarkeit
                        TPC-C: Online-Transaktionsverarbeitung
                   Veröffentlichung von Zahlen nicht erlaubt
                   Ergebnisse vergleichbar!
               Wirtschaftlich vorteilhafter
PostgreSQL
  Im Einsatz




Ableger




               EnterpriseDB
               Greenplum/Bizgres
               TelegraphCQ
PostgreSQL
  Features




Agenda


      1      Historie

      2      Das Projekt

      3      Im Einsatz

      4      Features

      5      Interna

      6      Abschluss
PostgreSQL
  Features




Plattformen




             Läuft auf großen Servern und auf kleinen Systemen
             Unterstützt nahezu alle Unix-Derivate, Linux, Windows,
             MacOS
             Multiprozessorfähig
PostgreSQL
  Features




SQL-Standards



             Unterstützt große Teile von SQL 1992, SQL 1999, SQL
             2003
             Beste SQL-Unterstützung am Markt
             Einfache Portierungen
             Portierungstools
             Kompatibilitätserweiterungen für Oracle, Informix, . . .
PostgreSQL
  Features




SQL-Features

             Aggregierung
             Constraints
             Domains
             Fremdschlüssel
             Outer Joins
             Partielle Indexe
             Savepoints
             Schemas
             Subselects
             Trigger
             Views
PostgreSQL
  Features




Programmierschnittstellen

      Standardisierte APIs:
             ODBC 3.5
             JDBC 3
             Embedded SQL in C
             Perl DBI/DBD
      Weitere Schnittstellen:
             SQL-Shell
             C
             C++
             PHP
             Python, Ruby, Tcl
PostgreSQL
  Features




Stored Procedures


      Verschiedene Sprachen:
             PL/pgSQL, ähnlich PL/SQL
             Java
             C
             Perl, PHP, Python, Ruby, Shell, Tcl
      Benutzerdefinierte Funktionen:
             Liefert Einzelwert oder Tabelle
             Verarbeitet Tabellen
PostgreSQL
  Features




Erweiterbarkeit


      Benutzerdefinierte
             Datentypen
             Funktionen
             Operatoren
             Indextypen
             Programmiersprachen
             u.a.
PostgreSQL
  Features




Erweiterbarkeit



      Viele Erweiterungen verfügbar:
             GIS
             Krypto
             XML
             Volltextsuche
             Ähnlichkeitssuche
             Replikation
PostgreSQL
  Features




Datensicherung




             SQL-Dumps
             Inkrementelle Backups mit Point-in-Time-Recovery
             “Hot Backups”
PostgreSQL
  Features




Keine Größenbeschränkung




             Geeignet für große Datenmengen
             Keine Beschränkungen für Tabellen, Zeilen, . . .
             Lineare Skalierung auch bei anspruchsvollen
             Anwendungen
PostgreSQL
  Features




Datenintegrität



             Kompromisslos stabil und zuverlässig
             Datenintegrität gesichert bei Systemabstürzen
             Korrekte Transaktionslogik von Anfang an
             Ausgefeiltes Typensystem mit Domains
             Datenbank akzeptiert keine ungültigen Daten
             Korrekte Semantik der Daten durch Fremdschlüssel und
             Constraints
PostgreSQL
  Features




Transaktionsverarbeitung – ACID



             Atomicity Ergebnis der Transaktion ganz oder gar nicht zu
                       sehen
      Consistency Datenbank bleibt immer konsistent
             Isolation Gleichzeitige Transaktionen beeinflussen sich
                       nicht
         Durability Ergebnis bleibt erhalten
PostgreSQL
  Features




Multiversion Concurrency Control




             Leser blockieren keine Schreiber, Schreiber blockieren
             keine Leser.
             Volle Unterstützung des ACID-Prinzips
             Transaktionsisolation: Serializable und Read Committed
             Explizite Sperrmodi
PostgreSQL
  Features




Indexe




             B-tree
             R-tree
             Hash
             GiST
             GIN
PostgreSQL
  Features




Objektrelationale Datenbankmanagementsysteme




             Kombination relationaler und objekorientierter Konzepte
             Beibehaltung bewährter Konzepte
             Abwärtskompatibel
             Evolution statt Revolution
             Migration
PostgreSQL
  Features




Objektrelationale Datenbankmanagementsysteme




             Benutzerdefinierte Typen, Operatoren
             Komplexe Datentypen: Arrays, Zeilentypen, . . .
             Vererbung
             Eindeutige Objektidentität
PostgreSQL
  Features




Administration




             Sehr geringer Administrationsaufwand
             Ins Serversystem eingebunden: Dateisystem, Logging, . . .
             Diverse Administrationstools: phpPgAdmin, Webmin,
             pgAdmin, TOra, psql
             Zusätzlich Spezialtools: Visual Explain, . . .
PostgreSQL
  Interna




Agenda


      1      Historie

      2      Das Projekt

      3      Im Einsatz

      4      Features

      5      Interna

      6      Abschluss
PostgreSQL
  Interna




Wie funktioniert das?




      . . . oder: Wieviel meines Studienwissens kann ich dabei
      anwenden?
PostgreSQL
  Interna




Implementierung




             Geschrieben in C
             Client/Server-Architektur
             Ein Prozess pro Verbindung
             Kommunikation über Shared Memory
             Daten liegen in Dateien
PostgreSQL
  Interna




Verarbeitung eines Befehls




            1   Netzwerkprotokoll
            2   Parser
            3   Rewriter
            4   Planer/Optimizer
            5   Executor
PostgreSQL
  Interna




Andere Bauteile




             Storage Manager
             Lock Manager
             Memory Manager
             Cache Manager
             Eingebaute Funktionen, Datentypen
PostgreSQL
  Interna




Was man noch so lernt



             COBOL lebt — als SQL
             B-Tree-Indexe sind noch viel komplizierter als in der
             Vorlesung
             Objektorientierte Datenbanken interessieren keinen
             Aber XML vielleicht schon
             Hardware spielt eine erhebliche Rolle
             Immer mal das Halteproblem zitieren
PostgreSQL
  Abschluss




Agenda


      1       Historie

      2       Das Projekt

      3       Im Einsatz

      4       Features

      5       Interna

      6       Abschluss
PostgreSQL
  Abschluss




Die Zukunft




              Neue Release 8.3 Mitte 2007
              PGCon im Mai
              Ansonsten weiter so

PostgreSQL: Die Freie Datenbankalternative

  • 1.
    PostgreSQL PostgreSQL Die freie Datenbankalternative Peter Eisentraut petere@postgresql.org 22. 1. 2007
  • 2.
    PostgreSQL Agenda 1 Historie 2 Das Projekt 3 Im Einsatz 4 Features 5 Interna 6 Abschluss
  • 3.
    PostgreSQL Historie Agenda 1 Historie 2 Das Projekt 3 Im Einsatz 4 Features 5 Interna 6 Abschluss
  • 4.
    PostgreSQL Historie INGRES 1977–1985 University of California at Berkeley Prof. Stonebraker Prototyp eines relationalen DBMS 1986— Relational Technologies/Ingres Corp./Computer Associates Kommerziell erfolgreich
  • 5.
    PostgreSQL Historie POSTGRES 1986–1994 University of California at Berkeley Prof. Stonebraker Prototyp eines objektrelationalen DBMS 1995— Illustra/Informix/IBM Kommerziell erfolgreich
  • 6.
    PostgreSQL Historie PostgreSQL 1995 Postgres95 University of California at Berkeley Umstellung auf SQL 1996— Open-Source-Projekt Teamwachstum von 4 auf mehrere Dutzend
  • 7.
    PostgreSQL DasProjekt Agenda 1 Historie 2 Das Projekt 3 Im Einsatz 4 Features 5 Interna 6 Abschluss
  • 8.
    PostgreSQL DasProjekt Projektorganisation Interessierte versammeln sich auf pgsql-hackers@postgresql.org Quellcode im CVS Entwickler schicken Patches Core Team behält den Überblick
  • 9.
    PostgreSQL DasProjekt Entwicklungsarbeit “Scratch your own itch” Roadmap gibt’s nicht Feature-Vorschläge auf TODO-Liste Nebenaufgaben: Dokumentation Website Lokalisierung Öffentlichkeitsarbeit usw.
  • 10.
    PostgreSQL DasProjekt Wer entwickelt das? Selbstständige Dienstleister Anbieter von Erweiterungen Hobbyisten Studenten
  • 11.
    PostgreSQL DasProjekt Lizenz Freie Software / Open Source BSD-Lizenz Keinerlei Lizenzkosten Eigene Ergänzungen beliebig möglich Keine Herausgabe des Quelltextes erforderlich
  • 12.
    PostgreSQL DasProjekt Community Anwender helfen Anwendern Direkter Kontakt zu Entwicklern Website: http://www.postgresql.org/ Mailing-Listen IRC, Foren, Blogs, . . .
  • 13.
    PostgreSQL ImEinsatz Agenda 1 Historie 2 Das Projekt 3 Im Einsatz 4 Features 5 Interna 6 Abschluss
  • 14.
    PostgreSQL ImEinsatz Anwendungen Telekommunikation Universitäten Regierungen Militär Warenwirtschaft Steuerungssysteme Internet Medien Einzelhandel Technologiefirmen
  • 15.
    PostgreSQL ImEinsatz Vergleich mit anderen Produkten Vergleichbare Menge von Features Performance: Benchmark muss wirklichkeitsnah sein AS3AP: Geschwindigkeit und Skalierbarkeit TPC-C: Online-Transaktionsverarbeitung Veröffentlichung von Zahlen nicht erlaubt Ergebnisse vergleichbar! Wirtschaftlich vorteilhafter
  • 16.
    PostgreSQL ImEinsatz Ableger EnterpriseDB Greenplum/Bizgres TelegraphCQ
  • 17.
    PostgreSQL Features Agenda 1 Historie 2 Das Projekt 3 Im Einsatz 4 Features 5 Interna 6 Abschluss
  • 18.
    PostgreSQL Features Plattformen Läuft auf großen Servern und auf kleinen Systemen Unterstützt nahezu alle Unix-Derivate, Linux, Windows, MacOS Multiprozessorfähig
  • 19.
    PostgreSQL Features SQL-Standards Unterstützt große Teile von SQL 1992, SQL 1999, SQL 2003 Beste SQL-Unterstützung am Markt Einfache Portierungen Portierungstools Kompatibilitätserweiterungen für Oracle, Informix, . . .
  • 20.
    PostgreSQL Features SQL-Features Aggregierung Constraints Domains Fremdschlüssel Outer Joins Partielle Indexe Savepoints Schemas Subselects Trigger Views
  • 21.
    PostgreSQL Features Programmierschnittstellen Standardisierte APIs: ODBC 3.5 JDBC 3 Embedded SQL in C Perl DBI/DBD Weitere Schnittstellen: SQL-Shell C C++ PHP Python, Ruby, Tcl
  • 22.
    PostgreSQL Features StoredProcedures Verschiedene Sprachen: PL/pgSQL, ähnlich PL/SQL Java C Perl, PHP, Python, Ruby, Shell, Tcl Benutzerdefinierte Funktionen: Liefert Einzelwert oder Tabelle Verarbeitet Tabellen
  • 23.
    PostgreSQL Features Erweiterbarkeit Benutzerdefinierte Datentypen Funktionen Operatoren Indextypen Programmiersprachen u.a.
  • 24.
    PostgreSQL Features Erweiterbarkeit Viele Erweiterungen verfügbar: GIS Krypto XML Volltextsuche Ähnlichkeitssuche Replikation
  • 25.
    PostgreSQL Features Datensicherung SQL-Dumps Inkrementelle Backups mit Point-in-Time-Recovery “Hot Backups”
  • 26.
    PostgreSQL Features KeineGrößenbeschränkung Geeignet für große Datenmengen Keine Beschränkungen für Tabellen, Zeilen, . . . Lineare Skalierung auch bei anspruchsvollen Anwendungen
  • 27.
    PostgreSQL Features Datenintegrität Kompromisslos stabil und zuverlässig Datenintegrität gesichert bei Systemabstürzen Korrekte Transaktionslogik von Anfang an Ausgefeiltes Typensystem mit Domains Datenbank akzeptiert keine ungültigen Daten Korrekte Semantik der Daten durch Fremdschlüssel und Constraints
  • 28.
    PostgreSQL Features Transaktionsverarbeitung– ACID Atomicity Ergebnis der Transaktion ganz oder gar nicht zu sehen Consistency Datenbank bleibt immer konsistent Isolation Gleichzeitige Transaktionen beeinflussen sich nicht Durability Ergebnis bleibt erhalten
  • 29.
    PostgreSQL Features MultiversionConcurrency Control Leser blockieren keine Schreiber, Schreiber blockieren keine Leser. Volle Unterstützung des ACID-Prinzips Transaktionsisolation: Serializable und Read Committed Explizite Sperrmodi
  • 30.
    PostgreSQL Features Indexe B-tree R-tree Hash GiST GIN
  • 31.
    PostgreSQL Features ObjektrelationaleDatenbankmanagementsysteme Kombination relationaler und objekorientierter Konzepte Beibehaltung bewährter Konzepte Abwärtskompatibel Evolution statt Revolution Migration
  • 32.
    PostgreSQL Features ObjektrelationaleDatenbankmanagementsysteme Benutzerdefinierte Typen, Operatoren Komplexe Datentypen: Arrays, Zeilentypen, . . . Vererbung Eindeutige Objektidentität
  • 33.
    PostgreSQL Features Administration Sehr geringer Administrationsaufwand Ins Serversystem eingebunden: Dateisystem, Logging, . . . Diverse Administrationstools: phpPgAdmin, Webmin, pgAdmin, TOra, psql Zusätzlich Spezialtools: Visual Explain, . . .
  • 34.
    PostgreSQL Interna Agenda 1 Historie 2 Das Projekt 3 Im Einsatz 4 Features 5 Interna 6 Abschluss
  • 35.
    PostgreSQL Interna Wiefunktioniert das? . . . oder: Wieviel meines Studienwissens kann ich dabei anwenden?
  • 36.
    PostgreSQL Interna Implementierung Geschrieben in C Client/Server-Architektur Ein Prozess pro Verbindung Kommunikation über Shared Memory Daten liegen in Dateien
  • 37.
    PostgreSQL Interna Verarbeitungeines Befehls 1 Netzwerkprotokoll 2 Parser 3 Rewriter 4 Planer/Optimizer 5 Executor
  • 38.
    PostgreSQL Interna AndereBauteile Storage Manager Lock Manager Memory Manager Cache Manager Eingebaute Funktionen, Datentypen
  • 39.
    PostgreSQL Interna Wasman noch so lernt COBOL lebt — als SQL B-Tree-Indexe sind noch viel komplizierter als in der Vorlesung Objektorientierte Datenbanken interessieren keinen Aber XML vielleicht schon Hardware spielt eine erhebliche Rolle Immer mal das Halteproblem zitieren
  • 40.
    PostgreSQL Abschluss Agenda 1 Historie 2 Das Projekt 3 Im Einsatz 4 Features 5 Interna 6 Abschluss
  • 41.
    PostgreSQL Abschluss DieZukunft Neue Release 8.3 Mitte 2007 PGCon im Mai Ansonsten weiter so