Was ist PostgreSQL?

PostgreSQL ist ein objektrelationales Open-Source-Datenbankmanagementsystem (ORDBMS), das typischerweise sowohl als Produktionsdatenbank als auch als analytische Datenbank eingesetzt wird. Während bei MySQL Skalierbarkeit und Leistung im Vordergrund stehen, gibt Postgres der SQL-Compliance und Erweiterbarkeit den Vorrang.

Organisationen, die ein hohes Maß an Datenintegrität und Anpassbarkeit gewährleisten wollen, entscheiden sich in der Regel für Postgres. Dies ist auf die Unterstützung von PostgreSQL für vollständige ACID-Transaktionen und benutzerdefinierte Prozeduren zurückzuführen.

Anders als bei anderen transaktionalen Open-Source-Datenbanken hat bei Postgres auch die ANSI-SQL-Compliance Vorrang und enthält eine umfassende SQL-Bibliothek und erweiterbare Funktionen, die zur Unterstützung fortgeschrittener analytischer Workloads verwendet werden können.

Postgres kann kostenlos heruntergeladen und auf Standardhardware eingesetzt werden, oder es kann in der Cloud über verschiedene Anbieter ausgeführt werden. Während Postgres funktionsreich und auf OLAP-Workloads zugeschnitten ist, stößt die Leistung bei Postgres tendenziell an eine Grenze, wenn die Datenmengen über mehrere Terabyte hinaus skalieren.

Die Wahl von PostgreSQL als Datenbank

Erweiterbarkeit

Einer der größten Vorteile, den Postgres als objektrelationale Datenbank hat, ist die Tatsache, dass die Architektur erweiterbar ist. Dadurch kann die Datenbank benutzerdefinierte Funktionen und Bibliotheken von Drittanbietern unterstützen, die zur Anpassung und Automatisierung von Prozeduren innerhalb der Datenbank verwendet werden können.

ANSI-SQL-Konformität

PostgreSQL hat eine elegante und umfassende SQL-Syntax, was für Organisationen hilfreich ist, die Postgres für OLAP-Workloads verwenden möchten. Zum Zeitpunkt der Abfassung dieses Artikels entspricht Postgres dem ANSI-SQL: 2008 Standard.

Hohe Parallelität

Postgres nutzt Multiversion-Parallelitätssteuerung, um das Schreiben und Lesen in dieselben Datenbanken zu unterstützen, ohne dem Benutzer eine Sperre aufzuerlegen.

Wozu ist PostgreSQL gut geeignet?

Benutzergesteuerte Anpassung von gespeicherten Prozeduren

Die Stärke von PostgreSQL als objektrelationale Datenbank liegt darin, dass die Benutzer die Möglichkeit haben, gespeicherte Prozeduren und Funktionen relativ einfach zu modifizieren. Die Möglichkeit, benutzergenerierten Code direkt in die Datenbank einzufügen, macht Postgres zu einem hervorragenden Kandidaten für die Erstellung von Prototypen und die Implementierung benutzerdefinierter Prozeduren und Workflows.

Funktionsumfang

Für Organisationen, die an einem breiten Funktionsumfang interessiert sind, ist Postgres eine gute Alternative zu den beliebten, proprietären relationalen Datenbanken wie Oracle und MSSQL, da es zu wesentlich geringeren Kosten bereitgestellt werden kann. Je nachdem, wofür Sie sich entschieden haben, können diese Optionen jedoch ein höheres Maß an Support bieten als das, was Sie bei Postgres erhalten können.

Preisliche Erwägungen

Die PostgreSQL-Software ist Open Source und kann kostenlos heruntergeladen werden. Es ist jedoch wichtig zu beachten, dass die Gesamtkosten des Betriebs stark von der zugeteilten Hardware abhängen: Mehr Festplattenplatz, CPU und Speicher werden mehr kosten. Serverspeicher- und dedizierte Wartungskosten sind zusätzliche Kosten im Zusammenhang mit einer selbst gehosteten PostGreSQL-Lösung.

Wenn Sie daran interessiert sind, eine PostgreSQL-Instanz in der Cloud zu verwalten, wird der Service auch von einer Vielzahl von Cloud-Anbietern wie Amazon Relational Database Service, Google Cloud SQL, EnterpriseDB und Heroku angeboten.

Datenbankarchitektur

Im Unterschied zu anderen transaktionalen Datenbanken wird PostgreSQL auf einem einzigen Server implementiert und ist grundsätzlich nicht darauf ausgelegt, seine Speicher- oder Berechnungsfunktionen auf mehrere Knoten zu verteilen. Es ist zwar möglich, Clustering-, Replikations- und Pooling-Techniken zu verwenden, um Ihren Postgres-Cluster für Leistung und zusätzliche Kapazität zu skalieren, aber diese Lösungen sind komplex und unüblich. Viele Organisationen haben sich dafür entschieden, Postgres durch vertikale Skalierung der Datenbank zu vergrößern, was die Anschaffung eines größeren und leistungsfähigeren Servers bedeutet.

Es gibt einige einzigartige Merkmale der PostgreSQL-Architektur, die es wert sind, hervorgehoben zu werden.

Objektrelationales Datenbankverwaltungssystem

Postgres wird als objektrelationales Datenbankmanagementsystem (ORDBMS) klassifiziert. Das bedeutet, dass Postgres im Gegensatz zu traditionellen relationalen Datenbankmanagementsystemen (RDBMS) eine objektorientierte Architektur hat.

Die meisten RDBMS speichern Informationen über die tatsächlich in der Datenbank enthaltenen Daten, wie z. B. Tabellen. In ORDBMS wie Postgres werden jedoch viel mehr Informationen gespeichert, z. B. Informationen über verschiedene Datentypen, SQL-Funktionen und mehr. Insbesondere Postgres ermöglicht einzelnen Benutzern die Bearbeitung dieser Tabellen, z. B. das Hinzufügen neuer Datentypen, sowie der SQL-Funktionen, um die Art und Weise, wie deren Daten gespeichert werden und mit der Datenbank interagieren anzupassen.

Diese Architektur ist es, die Postgres erweiterbar macht und den Nutzern die Möglichkeit gibt, mit neuen Anwendungen ihrer gespeicherten Daten zu experimentieren, ohne mit dem Quellcode herumzuspielen zu müssen.

Multiversion-Parallelitätssteuerung

Eine weitere Hauptstärke der PostgreSQL-Architektur ist Parallelität, d. h. die Fähigkeit, das Schreiben von Daten in die Datenbank bei gleichzeitigem Lesen von Daten aus der Datenbank zu unterstützen.

Andere transaktionale Datenbanken unterstützen solches Lesen und Schreiben aus derselben Datenbank nicht. Denn wenn ein Lesevorgang während eines Schreibvorgangs stattfindet, könnte ein Benutzer Daten auslesen, die sich mitten in der Aktualisierung befinden, was zu fehlerhaften Lesevorgängen aus der Datenbank führen könnte.

Um dieses Problem zu lösen, verfolgen Datenbanken wie MySQL eine Politik der Datenbanksperrung, wenn Daten in den Speicher geschrieben werden. Dies erfordert, dass Organisationen die Datenbank physisch replizieren müssen, um Schreib- und Lesevorgänge auf demselben System durchführen zu können.

Postgres nutzt ein als Multiversion-Parallelitätssteuerung (MVCC) bekanntes System, das effektiv einzelne Snapshots der gesamten Datenbank zu Lesezwecken erstellt. Wenn Daten in die Datenbank geladen werden, werden neuere Snapshots der Tabellen erstellt, aus denen der Benutzer dann liest. Das Ergebnis ist ein sperrfreies Datenbanksystem.

Datentypen

Wie bei den meisten transaktionalen Datenbanken liegt die Kernkompetenz von PostgreSQL in der relationalen Datenspeicherung. Abgesehen davon ist Postgres gut mit kleinen bis mittleren Mengen von JSON und unterstützt natives JSON-Parsing und sogar die JSON-Indizierung durch HStore. Es ist kein nativer Columnar Store. Es gibt eine Erweiterung, die die Speicherung von Kolumnen erlaubt, die kostenlos ist (abhängig vom Hosting), da Postgres quelloffen ist.

Eine vollständige Liste der von PostgreSQL unterstützten Datentypen finden Sie hier, aber es ist auch erwähnenswert, dass Benutzer ebenfalls ihre eigenen Datentypen erstellen können.

Zeilenbereich (Menge)

Die Leistung von PostgreSQL wird allmählich beeinträchtigt, wenn sich das Speichervolumen mehreren Terabyte an Daten nähert. Wie bei jeder Datenbank kann dies mit verschiedenen Optimierungen angegangen werden.

Wenn man jedoch nach Anwendung aller verfügbaren Optimierungstechniken keine interaktiven Abfragezeiten (gemessen in Sekunden statt Minuten) beim Schreiben analytischer Abfragen mehr erlebt, kann es Zeit sein, über die Migration von OLAP-Abfragen in eine MPP-Datenbank nachzudenken.

Verwendung von PostgreSQL

Implementieren von PostgreSQL

Da es sich um Open Source handelt, ist nur sehr wenig erforderlich, um Postgres auf einem lokalen System zu implementieren. Zusätzlich zur Postgres-Dokumentation (die recht wortreich ist), gibt es verschiedene einfache Anleitungen zur Installation von Postgres auf verschiedenen Betriebssystemen:

Die Installation auf einer gehosteten/Cloud-Instanz erfordert die Erstellung eines Kontos und die Einrichtung eines Clusters mit Amazon AWS.

Hinweis – Postgres wird einen Standardbenutzer namens „postgres“ erstellen, jedoch sollte dieser Benutzer aus Sicherheitsgründen für nichts anderes als den Zugriff auf die Datenbanksoftware verwendet werden.

Prozess für neue Daten

Das Erstellen neuer Tabellen auf PostgreSQL ist geradlinig mit dem Befehl CREATE, ähnlich wie bei MySQL.

Postgres nutzt eine Standardfunktion INSERT wie MySQL. Allerdings nutzt Postgres nicht die Erweiterung REPLACE, was bedeutet, dass etwas umständliche Workarounds erforderlich sind, um diese MySQL-Operation für ein Postgres-Äquivalent zu replizieren.

Postgres und Python spielen gut zusammen, insbesondere unter Verwendung des Python-Moduls pyscopg2, das die Operationen INSERT und UPDATE programmierbar macht.

Wartung

Es gibt eine große Anzahl von Ressourcen online, die Ihnen bei der Überwachung und dem Performance-Tuning auf Ihrer PostgreSQL-Instanz helfen.

Indizes

Einer der größten Faktoren, der sich auf die Leistung von Postgres auswirkt, ist die Fähigkeit, Ihre Tabellen innerhalb Ihrer Instanz korrekt zu indexieren . Ein Index ist vergleichbar mit einem Inhaltsverzeichnis für eine Datenbank, das die Datenbank verwendet, wenn sie versucht, Daten zu finden. So wie ein Inhaltsverzeichnis in einem Buch verhindert, dass Sie jede Seite durchblättern müssen, verhindert ein Index innerhalb einer Datenbank, dass Sie die Datenbanktabelle vollständig durchsuchen müssen, um Daten zu finden.

Eine gute Index-Praxis läuft in der Regel darauf hinaus, die verschiedenen Arten von Indizes zu verstehen und zu wissen, wie und wann sie effektiv zu nutzen sind. Dieser Artikel bietet eine hervorragende Erklärung der verschiedenen Arten von Indizes und wann sie zu verwenden sind.

Überwachung/EXPLAIN-Pläne

Ein weiterer wichtiger Aspekt einer effektiven Postgres-Performance ist das Schreiben von performantem SQL und das Verständnis, wie Postgres geschriebenes SQL interpretiert.

Der beste Weg zu verstehen, wie Postgres eine bestimmte SQL-Abfrage interpretiert, besteht darin, einen EXPLAIN-Plan auf Ihrer Abfrage auszuführen. Dieser Leitfaden von Postgres bietet eine ziemliche umfassende Erklärung der EXPLAIN-Statements, aber dieser Leitfaden schlüsselt die schwierigsten Teile auf eine etwas leichter verständliche Weise auf.

PostgreSQL-Fakten

  • MySQL-Benutzer, die auf Postgres umsteigen, realisieren manchmal nicht den breiteren Bestand an Abfragefunktionen, den Postgres enthält. Dies ist bedauerlich, denn in einigen Fällen erlauben sie eine fortgeschrittenere Analyse und ein eleganteres Schreiben von Abfragen.
  • Postgres nutzt etwas andere Namenskonventionen für Datentypen als MySQL. Eine genaue Aufschlüsselung der Unterschiede zwischen MySQL- und Postgres-Datentypen finden Sie in dieser praktischen Matrix.

Entdecken Sie Ihre Liebe zur Analytik.

Business Intelligence, Big-Data-Analyse oder eine 360°-Ansicht Ihrer Kunden.
Was auch immer Sie benötigen, Looker steht Ihnen zur Seite. Sprechen Sie einfach mit unseren Datenexperten.

Demo anfordern