PostgreSQL vs. MySQL

PostgreSQL und MySQL sind zwei der am weitesten verbreiteten Open-Source-Datenbank-Management-Systeme. Wir zeigen Gemeinsamkeiten und Unterschiede und erklären, welches der beiden Tools für welche Einsatzszenarien am besten geeignet ist.

PostgreSQL vs. MySQL im Überblick

Bei PostgreSQL und MySQL handelt es sich um Datenbank-Management-Systeme (DBMS). Für die meisten Praxisanwendungen haben die beiden Systeme mehr Gemeinsamkeiten als Unterschiede. Dennoch zeigt der Vergleich PostgreSQL vs. MySQL subtile Besonderheiten, die sich in spezifischen Vor- und Nachteilen niederschlagen.

Tipp

Mehr über die beiden Systeme erfahren Sie in unseren ausführlichen Detailartikeln:

Zunächst nutzen PostgreSQL und MySQL die Programmiersprache SQL als zentrale Schnittstelle für die Interaktion mit Datenbanken und den darin enthaltenen Daten. Am bekanntesten dürfte die SELECT-Anweisung zum Ausführen von Abfragen (Queries) sein. So lassen sich Daten innerhalb der Datenbank auffinden und ausgeben. Ferner existieren vielfältige SQL-Befehle, die der Steuerung des DBMS dienen.

Der Funktionsumfang von SQL ist in verschiedenen Normen festgelegt. Die gebräuchlichen Implementationen decken den Standard mehr oder weniger gut ab. Beim Vergleich PostgreSQL vs. MySQL ist PostgreSQL mächtiger und unterstützt einen größeren Funktionsumfang als MySQL.

Tipp

Sie sind neu beim Thema SQL? Dann machen Sie sich unsere SQL-Einführung mit Beispielen zunutze.

Ein wichtiger Unterschied zwischen PostgreSQL und MySQL besteht in der grundlegenden Architektur. Zunächst sind beide Systeme relationale Datenbank-Management-Systeme (RDBMS). PostgreSQL kann jedoch einiges mehr, denn es handelt sich um ein sogenanntes objektrelationales DBMS (ORDBMS). Wir erklären weiter unten, wie genau sich der Unterschied auswirkt.

Beide DBMS fußen auf einer Storage Engine. Dabei handelt es sich um eine Schnittstelle zur Speicherung der Daten auf physischen Datenträgern. Für den performanten Zugriff kommen Indizes zum Einsatz, die auf die einzelnen Datenbankeinträge verweisen. Es gibt verschiedene Storage Engines und Index-Methoden, mit jeweils eigenen Vor- und Nachteilen.

Tipp

PostgreSQL und MySQL sind Open-Source-Datenbank-Management-Systeme und stehen damit im Gegensatz zu den proprietären Produkten großer Anbieter wie Microsoft und IBM. Daneben existiert eine Vielzahl weiterer Open-Source-DBMS. Wir stellen die wichtigsten Open-Source-Datenbanken im Vergleich vor.

MySQL – das klassische Open-Source-RDBMS

MySQL wurde Mitte der 1990er Jahre von der Firma MySQL AB in Schweden entwickelt, die 2008 von Sun Microsystems und 2010 von Oracle übernommen wurde. Aufgrund des bestehenden Misstrauens der Open-Source-Community gegenüber Oracle kam es zum Fork der Datenbank-Software als „MariaDB“. Somit sollte der Verbleib des Projekts unter einer Open-Source-Lizenz sichergestellt werden.

In den Boomjahren des noch neuen World Wide Webs erlangte MySQL als Komponente des allgegenwärtigen LAMP-Stacks Berühmtheit. So wird die Datenbank-Software neben Linux, Apache und PHP als Teil der meisten Webhosting-Pakete zur Verfügung gestellt. Im Zuge der starken Verbreitung entwickelte sich MySQL zum Standard für Webprojekte mit dahinterliegender relationaler Datenbank.

PostgreSQL – die mächtige objektrelationale Alternative

PostgreSQL wurde ursprünglich unter dem Namen „Postgres“ als Nachfolger des DBMS Ingres konzipiert. Die Entwicklung fand Mitte der 1980er Jahre an der University of California, Berkeley statt; der Code wurde unter der Lizenz „Berkeley Software Distribution“ (BSD) veröffentlicht. Mitte der 1990er Jahre erfolgte der Umstieg auf SQL als einheitliche Schnittstelle. Damit einhergehend kam es zur Namensänderung in „PostgreSQL“. Bis heute sind beide Namen weiterhin gebräuchlich.

Der Vergleich: PostgreSQL vs. MySQL

Zunächst ermöglichen sowohl PostgreSQL als auch MySQL das Arbeiten mit relationalen Datenbanken. Beide Systeme verstehen SQL-Befehle zum Erzeugen, Modifizieren und Befüllen von Tabellen sowie zum Ausführen von Abfragen. Darüber hinaus zeigt die Betrachtung PostgreSQL vs. MySQL grundlegende Unterschiede in der Funktionalität. Diese Differenzen ergeben sich aus der verschiedenartigen Architektur.

Während MySQL ein rein relationales Datenbank-Management-System (RDBMS) ist, handelt es sich bei PostgreSQL um ein objektrelationales DBMS (ORDBMS). Somit unterstützt PostgreSQL eine Reihe von Konzepten, die aus der objektorientierten Programmierung bekannt sind. Dazu zählen nutzerdefinierte Datentypen, zusammengesetzte Datentypen sowie Vererbung. PostgreSQL ist mächtiger als MySQL, dabei aber auch komplexer.

DBMS-Eigenschaft

PostgreSQL / ORDBMS

MySQL / RDBMS

Mehrere Daten pro Feld

Als Arrays unterstützt

Erfordert separate Tabelle und Join

m:n-Beziehung

Direkt modellierbar

Erfordert zusätzliche Tabellen und Join

Vererbung

Direkt modellierbar

Erfordert komplexe Lösung/Views, mehrere Tabellen etc.

Hierarchische Daten

Per JSON, HStore und XML

Lediglich JSON

Boolesche Werte

Eigener Datentyp

Implementierung als TINYINT(1)

Datentypen

Datentypen stellen die Grundlage für ein solides Datenbankdesign und damit für den produktiven Einsatz der Datenbank dar. Beim Design der Tabellen legt man für einzelne Spalten fest, welche Art von Daten diese enthalten. Folgende Datentypen existieren:

Datentyp

PostgreSQL

MySQL

Boolesche Werte

PostgreSQL kennt einen eigenen Bool-Datentyp.

MySQL geht einen Umweg: Anstatt boolesche Werte als eigenen Datentyp zu implementieren, werden Booleans als Zahlen des Typs TINYINT(1) gespeichert.

Ranges

PostgreSQL bietet eine breite Unterstützung für Range-Typen, was die Arbeit mit ordinalen Werten vereinfacht.

MySQL hat keine Unterstützung für Ranges an Bord; benötigt man diese, muss man sich mit ggf. selbstgebauten Alternativen behelfen.

Geodaten

PostgreSQL hat die Open-Source-Erweiterung PostGIS, die als eine der ausgereiftesten GIS-Implementationen gilt.

MySQL unterstützt seit Version 8 Geodaten und die dazugehörigen Abfragen. Allerdings fällt der Funktionsumfang kleiner aus als bei PostgreSQL.

Arrays

PostgreSQL unterstützt als ORDBMS Arrays. Mit PostgreSQL-Arrays lassen sich mehrere Werte in einem Feld speichern.

MySQL unterstützt diesen Datentyp nicht.

Hierarchische Daten / JSON

PostgreSQL unterstützt JSON als Datentyp. So lässt sich eine komplexe, hierarchisch verschachtelte Datenstruktur in einem einzigen Feld unterbringen.

MySQL unterstützt ebenfalls JSON als Datentyp, doch ist nicht so mächtig wie PostgreSQL.

Performance

Datenbank-Performance ist ein hochkomplexes Thema. Für gewöhnlich bieten verschiedene DBMS je nach Einsatzszenario gewisse Vor- und Nachteile. Generell gilt MySQL als ausgesprochen performant, vor allem dann, wenn überwiegend „read-heavy“, d. h. lesend auf die Datenbank zugegriffen wird. Das ist insbesondere bei Content-Management-Systemen wie WordPress der Fall, die hauptsächlich Inhalte aus der Datenbank auslesen und an Besucherinnen und Besucher ausliefern.

Im Gegensatz zu MySQL liefert PostgreSQL oft eine bessere Performance bei „write-heavy“-Operationen. Ferner gilt das ORDBMS als besser geeignet für Data-Warehousing-Lösungen und andere Systeme für „Online Analytical Processing“ (OLAP). PostgreSQL unterstützt multiple Verbindungen mit eigenen Prozessen, was jedoch zu höherem Speicherbedarf führt.

Sicherheit und Verfügbarkeit

Relationale DBMS stellen idealerweise die Konsistenz und Verfügbarkeit der gespeicherten Daten sicher. Man spricht dabei auch von den „ACID“-Eigenschaften. PostgreSQL unterstützt die ACID-Eigenschaften vollständig, bei MySQL ist dies je nach eingesetzter Storage Engine mehr oder weniger der Fall.

Ähnlich sieht es aus in Bezug auf die „Multiversion Concurrency Control“ (MVCC), die bei gleichzeitigen Zugriffen auf die Datenbank die Konsistenz der Daten sicherstellt. Bei PostgreSQL ist MVCC grundsätzlich gegeben, bei MySQL hängt dies von der Storage Engine ab. In puncto Sicherheit macht MySQL mit TLS-Verschlüsselung einen guten Eindruck. PostgreSQL setzt noch auf den älteren SSL-Standard.

Administration

Ein wichtiger Aspekt bei der Arbeit mit DBMS ist die Unterstützung verschiedener Admin-Oberflächen. Sowohl PostgreSQL als auch MySQL verfügen mit psql bzw. mysql über eine Kommandozeilen-Schnittstelle (Command Line Interface, CLI). Mit Hilfe der CLI-Tools lässt sich eine Verbindung zur Datenbank herstellen und SQL-Code aus direkter Eingabe oder einer Skript-Datei ausführen.

Neben den Kommandozeilen-Schnittstellen verfügen PostgreSQL und MySQL über webbasierte und native grafische Benutzeroberflächen (Graphical User Interface, GUI). Als weiterer wichtiger Punkt sind die dedizierten Import- und Export-Tools zu nennen. Diese erlauben das Anlegen und Wiedereinspielen von Datenbank-Backups. PostgreSQL hat die Tools pg_dump und pg_restore an Bord und ist in puncto Backup mächtiger als ein MySQL-Backup mit dem MySQL-Dump-Tool.

Admin-Tool

PostgreSQL

MySQL

CLI-Client

psql

mysql

Web-GUI

phpPgAdmin

phpMyAdmin

Native GUI

pgAdmin

MySQL Workbench

Für welche Szenarien nutzt man PostgreSQL vs. MySQL?

Wie wir gesehen haben, fördert der Vergleich PostgreSQL vs. MySQL tiefgreifende Unterschiede zu Tage. Welches der beiden Datenbank-Management-Systeme sollte man nun für das eigene Projekt einsetzen? Glücklicherweise fällt die Antwort einfach aus: Der Einsatz von PostgreSQL ist sinnvoll, wenn es spezielle Anforderungen an die Datenbank gibt. Ist dies nicht der Fall, genügt in der Regel MySQL.

Anders ausgedrückt setzt man auf PostgreSQL, um die Website einer Bank oder einer kritischen Institution zu implementieren. Hierbei zahlt sich die vollständige ACID-Compliance aus, und die hohen Anforderungen an Stabilität und Datenkonsistenz rechtfertigen die höhere Komplexität des ORDBMS. Ferner stehen ausreichend Ressourcen für eine hochperformante PostgreSQL-Umgebung zur Verfügung.

Ein weiteres Einsatzszenario für PostgreSQL liegt dann vor, wenn die Projektarchitektur das Verwalten anspruchsvoller Datenmodelle erfordert. Möchte man komplexe Objekthierarchien abbilden oder wird Vererbung als zentrale Komponente des Datenmodells benötigt, lohnt sich der Einsatz des mächtigen ORDBMS. Insbesondere erspart man sich damit ggf. den Einsatz einer objektrelationalen Abbildung (Object-relational Mapping, ORM).

Für kleine bis mittelgroße Webprojekte setzt man besser MySQL ein. Das RDBMS ist weniger anspruchsvoll in Bezug auf Serverressourcen. Ferner ist es einfacher, einen erfahrenen und bezahlbaren MySQL-Admin zu finden. Die starke Performance beim Lesen von Daten aus der Datenbank passt gut für Websites und nicht allzu anspruchsvolle Onlineshops.

Zu guter Letzt merken wir an, dass sich PostgreSQL und MySQL durchaus im Tandem einsetzen lassen. Insbesondere für Data-Warehousing-Lösungen ist dies attraktiv. Für gewöhnlich kommen in einem derartigen Setup eine oder mehrere nach außen gerichtete MySQL-Instanzen zum Einsatz. Sie sammeln Daten und geben diese weiter an eine dahinterliegende, zentrale PostgreSQL-Installation, auf der Auswertung und Analysen laufen.