MySQL vs. PostgreSQL

Stephan_2021

Benutzer
Beiträge
14
Meine grobe Idee (basierend auf den Features von PostgreSQL):(...)

Danke für den Vorschlag. Ich kann momentan nicht überblicken ob der nur mit PostgreSQL umsetzbar (möglicherweise auch nur im Sinne "vorteilhaft" umsetzbar) ist.
Ich fürchte das die Entscheidung für MySQL gefallen ist.
 
Werbung:
Im Konkreten war/ist MySQL das Ergebnis längerer Überlegungen zu grundsätzlichen Anforderungen und der konkreten Situation beim Kunden (geprüfte Alternativen waren: PostgreSQL, Firebird, HSQLDB, MS SQL Server).
Wird jetzt ziemlich off-topic, aber ich persönlich kann mir eigentlich keinen Grund vorstellen warum man MySQL Postgres vorziehen würde. Der wirklich einzige Grund wären externe Anforderungen, weil z.B. der Kunde ausschließlich MySQL einsetzt und kein Budget dafür hat seine Mitarbeiter (Admins) auf Postgres zu schulen.
 
Der wirklich einzige Grund wären externe Anforderungen, weil z.B. der Kunde ausschließlich MySQL einsetzt und kein Budget dafür hat seine Mitarbeiter (Admins) auf Postgres zu schulen.

In der Tat, das ist der wesentliche Grund.

Ich möchte aber noch Folgendes sagen:
PostgreSQL kam hier im Thread ins Gespräch wegen einer Detailfrage von mir, welche doch überhaupt kein Kernfeature des Projektes ist. Soll das also entscheidend sein für die DB-Auswahl, zumal ich derzeitig garnicht sicher bin ob der Implementierungsvorschlag NUR mit PostgreSQL umzusetzen ist, oder ob PostgreSQL lediglich besonders günstig dafür wäre.
 
PostgreSQL hat massig Features, die MySQL nicht hat. Dafür fehlen massig Bugs, die MySQL besitzt. Wenn Du einfach mal die Threads hier der letzten 6-12 Monate durchliest wirst Du es sehen.
 
PostgreSQL hat massig Features, die MySQL nicht hat. Dafür fehlen massig Bugs, die MySQL besitzt. Wenn Du einfach mal die Threads hier der letzten 6-12 Monate durchliest wirst Du es sehen.

Das kann ich leider nicht einschätzen, aber wahrscheinlich hast Du Recht.

Was aber bedeutet das für ein Projekt dessen Anforderungen trotz Bugs und Minderfunktionalität von MySQL abgedeckt werden? Um es klar zu sagen: mein Herz hängt nicht an MySQL, weil für mich Datenbanken eigentlich generell nur notwendige Werkzeuge sind und kein Leidenschaftsthema für mich.
Was mich etwas irritiert ist Deine sehr überzeugte Haltung zu einem Thema, die ich doch in der Breite der allgemeinen Diskussion kaum wiederfinde, oder bin ich wirklich sooo uninformiert das ich nicht mitbekommen habe das inzwischen gilt das MySQL soviel Boden verloren hat das es überhaupt nicht mehr auf Augenhöhe zu PostgreSQL wäre? (und "Augenhöhe" heisst für mich zunächst nur "diskutable Alternative", so wie Diesel oder Benziner, wie Pepsi oder Coke ...)

sehr am Rande: aus sprachlicher Gewohnheit habe ich den Thread mit "MySQL" begonnen, wobei es eigentlich "MariaDB" sein wird. (ich weiß nicht ob das für Dich einen Unterschied macht)
 
oder bin ich wirklich sooo uninformiert das ich nicht mitbekommen habe das inzwischen gilt das MySQL soviel Boden verloren hat das es überhaupt nicht mehr auf Augenhöhe zu PostgreSQL wäre?

Ich denke ja.

Postgres hat MySQL und MariaDB vor einiger Zeit ziemlich abgehängt was moderne SQL Features angeht. Sowohl MySQL als auch MariaDB haben zwar wieder Boden gut gemacht, aber wirklich auf Augenhöhe sind sie immer noch nicht. Es sind weniger die "großen" Killerfeatures, aber die vielen "kleinere" Features die Postgres einfach flexibler machen. Qualitativ (=Anzahl Bugs) können sie beide nicht mithalten meiner Meinung nach. In diversen Foren stolpere immer wieder über MySQL/MariaDB Fragen die letztendlich Bugs sind wo ich nur den Kopf schütteln kann.

Klar ist das immer auch zu einem gewissen Grad auch eine subjektive Meinung. Wenn jetzt Produkt A genau ein Feature hat was ich sehr dringend benötige, dann interessiert es mich unter Umständen überhaupt nicht ob Produkt B vielleicht noch andere interessante und nützliche Features hat, wenn genau diese eine Kleinigkeit nicht vorhanden ist.

Die meisten Leute führen immer wieder die Nicht-Verfügbarkeit von Master-Master Replikation bei Postgres als Gegenargument an. Ich habe das in 30 Jahren Datenbankentwicklung noch nie benötigt, ist mir also wurscht (und ich habe den Eindruck dass es um die Stabilität und Robustheit der Lösung in MySQL nicht so richtig gut bestellt ist). Wenn man das aber wirklich super dringend braucht (oder meint zu brauchen) dann bleibt man halt dabei.

Kleine Anekdote am Rande: sehr, sehr lang war der Execution Plan von MySQL eigentlich ein Witz im Vergleich zu der Informationsdichte in Postgres, Oracle oder SQL Server. Seit einer Weile ist der Plan in MySQL ähnlich informativ wie in anderen Datenbanken - und sieht im Prinzip genauso aussieht wie der von Postgres. Da stand wohl der "große Bruder" Pate bei der Entwicklung ;)

Wenn es um GIS/Spatial Funktionalitäten gibt, ist PostGIS zur Zeit das Maß der Dinge (auch im Vergleich zu den kommerziellen Produkten wie Oracle oder SQL Server).

Du kannst Dir ja mal diese Liste oder diesen Vergleich ansehen.

Natürlich ist Postgres auch nicht perfekt und es gibt einige Ecken über die man sich wirklich ärgern kann - aber in der Summe aller Eigenschaften hat es die Nase trotzdem weit vorne.
 
Danke für den Vorschlag. Ich kann momentan nicht überblicken ob der nur mit PostgreSQL umsetzbar (möglicherweise auch nur im Sinne "vorteilhaft" umsetzbar) ist.
Ich fürchte das die Entscheidung für MySQL gefallen ist.



Gut, also die Entscheidung ist gefallen. Noch besser, Entscheidungen können auch revidiert werden. Man merkt ja an Deiner Fragestellung, dass Du mit Anspruch an die Sache gehst und Dir Gedanken machst. Das „nur mit Postgres“ an einer anderen Stelle Deines Beitrags kannst Du sicher streichen, aber das „vorteilhaft“ ist der spannende Punkt.

Mal ein kleiner Zukunftsentwurf: Was glaubst Du, wie diese Entscheidung „skaliert“? (um mal ein gern benutztes IT Wort etwas anders zu verwenden) Nicht wegen Performance oder Datenvolumen-was man auch gerne betrachten kann-, Du sitzt da jetzt an einem einzigen Problem. Wie viel Tage wirst Du noch daran sitzen? Der Vorschlag, Dir die MySQL Threads mal etwas durchzulesen, kam ja schon. Meine Prognose ist, es gibt dutzende, eher hunderte solcher Probleme bei einem mittelgroßen Projekt. Dass Du ganz am Anfang stehst und nicht gut abschätzen kannst, was da auf Dich zu kommt und was ein besserer Lösungsansatz sein kann, macht die Sache nicht leichter.

Nächste Frage: Wie weit bist Du mit dem Projekt, sagen wir mal, wie viel Tabellen, Trigger, Views, Stored Procedures? 50 Tabellen, 100 .. ?

Stell Dir vor, es kostet Dich 3 Tage, das Datenmodel auf Postgres anzupassen. Stell Dir außerdem vor, dass Du dabei oder folgend, wenn Du Postgres besser kennst, noch ein paar hässliche Ecken beseitigen kannst (auch im Client Code! Dort werden ja die meisten Probleme ausgebügelt), weil Du eine Handvoll sogenannter „Workarounds“ einfach entsorgen kannst. Nehmen wir noch 1 Tag für die Postgres Installation. Auch hier gibt es vielleicht Lernbedarf, das einfachste unter Linux, eine Zeile, dann ist es installiert und lokal nutzbar:

sudo apt -y install postgresql
Es gibt „aufwändigere“ Varianten, je nach Bedarf, 2 Configdateien, 2 Zeilen ändern, dann hat man Netzwerkzugriff bzw. Authentisierungsverfahren. Direkt das Postgres Repository einbinden, dann hat man unabhängig von der Distribution das neueste Postgres. Nehmen wir noch ein paar Tage für die Installation anderer Tools, umgewöhnen. Okay, der Umstellungsaufwand ist vollkommen geraten und hängt nicht nur von dem Istzustand ab, auch von der allgemeinen Erfahrung mit DB Entwicklung. Hast Du schon viel Programm Code in der DB?

Würde es einem MySQL Admin Probleme bereiten? Nun, ich kann es nicht sagen. Aber vielleicht will man sich weiter entwickeln, statt sich bloß Problem getrieben durch ein Projekt zu quälen. Ich arbeite seit > 10 Jahren nebenher mit Postgres. Es sind keine großen Projekte (DB) und es gibt wenig Last, keine wirklichen Herausforderungen für Postgres, das älteste läuft seit 8 Jahren produktiv in einer VM, eine wirklich kleine Installation. Keine nennenswerten, administrativen Maßnahmen. Von allen Problemen im Projekt war kein einziges ein Postgres Problem. Zum Vergleich, vor ca. einem Jahr haben wir ein Oracle System abgestellt, >10 Mio. Buchungsdatensätze, ein recht komplexes Datenmodell, dutzende Packages, entsprechend mehr Prozeduren und Funktionen (also ein System, das als wesentlichen Bestandteil auch Programmcode nutzt). Das würde ich heute mit Postgres machen, auch ohne Programmierung, niemals mit MySQL, eher würde ich kündigen.

Nun, man macht nicht mal eben eine Migration eines laufenden Projekts. Wenn man noch am Anfang ist, kann sich so was rechnen schnell rechnen, nicht nur in Euro, auch in Synapsen.
 
Meine Prognose ist, es gibt dutzende, eher hunderte solcher Probleme bei einem mittelgroßen Projekt.

Wenn das so ist ist mein Projekt ein Winzig-Projekt, denn es gibt keine Probleme und ich erwartete auch Keine.
Wahrscheinlich denken wir auch in völlig anderen Dimensionen, denn in meinem Projekt erwarte ich ganze 5000 Datensätze pro Jahr und ziemlich sicher werden kaum 20 Tabellen zusammenkommen.
Auch ist mein Blick auf MySQL oder PostgreSQL wohl ein völliger anderer als Deiner oder der anderer DB-Experten, für mich sind das Datenablagen und fast alles andere programmiere ich im Frontend.


Aber Du brauchst mich garnicht weiter zu argumentieren, weil ich bereits seit gestern entschlossen bin nächste Woche mit dem benannten Admin zu reden. Ich werde zu PostgreSQL wechseln, falls dieser Admin sich positiv dazu äußert, ich also erkennen kann das ich später zu PostgreSQL auf Unterstützung hoffen kann und nicht im Regen stehe.
Diese Entscheidung klingt jetzt etwas 'ad hoc' deswegen sei gesagt: Gerade weil es mir ziemlich egal ist ob MySQL oder PostgreSQL, ich aber andererseits mich nicht an ein Forum wende, um dann doch nicht auf den dort erteilten Rat zu hören, treffe ich diese Entscheidung. (böse gesagt: Von einer Vorteilhaftigkeit von PostgreSQL für mein Projekt bin ich nicht überzeugt, aber ich bin in jedem Falle überzeugt das PostgreSQL mir keine Nachteile bringen wird.)
 
Postgres hat MySQL und MariaDB vor einiger Zeit ziemlich abgehängt was moderne SQL Features angeht

Ok, ich werde diesen Gedanken im Kopf behalten und aufmerksam sein, wenn ich Informationen zu Postgres hat MySQL und MariaDB lese. Das heisst nicht dass mich Deinen Zeilen bereits überzeugen Dir zu glauben, aber es heisst ich bin bereit meine Annahmen zu revidieren wenn sie falsch sind.

Natürlich ist Postgres auch nicht perfekt und es gibt einige Ecken über die man sich wirklich ärgern kann - aber in der Summe aller Eigenschaften hat es die Nase trotzdem weit vorne.

Das heisst dann doch aber, das die Mehrzahl der Datenbankexperten (in Summe von Programmierern, Admins und Anwendern) keine Ahnung hat ODER hat auch beim Marktanteil Postgres inzwischen MySQL/MariaDB marginalisiert?

Entschuldige bitte diese überspitzte Formulierung, nur als Nichtexperte muss ich mich in Gesamtbetrachtung an irgendwas orientieren, in der Detailbetrachtung hingegen sind weder Features noch Bugs ein Argument, solange sie nicht den konkreten Anwendungsfall tangieren.
 
Aber Du brauchst mich garnicht weiter zu argumentieren
Gut! Für so eine Überlegung würde ich keine Erklärung erwarten. Und es geht nicht darum, Dich damit zu nerven. Ein Forum hat ja den Effekt, dass jeder hier lesen und seine Schlüsse ziehen kann.
Und ich bin mir sicher, dass Du nicht nur hier gute Hilfe zu Postgres findest. Selbst wenn es nur um die Nutzung als "dummes Datengrab" geht, was natürlich möglich ist. Wie gesagt, an der Stelle empfehle ich, die Möglichkeiten zu verstehen, die es auch ohne Programmierung gibt, reine Modellierung, Constraints, Indizierung, Views und so vielleicht etwas die Aufwände, Hürden und Laufzeiten in der Clientprogrammierung zu reduzieren.
"Ist ja nur ein kleines Projekt" finde ich nicht so ein gutes Argument, auf gutes Werkzeug zu verzichten.
 
Werbung:
beim Marktanteil Postgres inzwischen MySQL/MariaDB marginalisiert?

Das würde ich nicht sagen, MySQL ist groß geworden mit den vielen PHP & MySQL - Dingen im Web, im Massenhosting bekommst i.d.R. nur MySQL zur Auswahl. Aber PostgreSQL war in 4 Jahren 3 mal "Database of the year".
PostgreSQL is the DBMS of the Year 2020

Ich denke mal, das ist zum großen Teil schlicht Unwissen, daß dennoch viele zuerst an MySQL denken, wenn es um eine (neue) DB-Anwendung geht, leider.

Wenn Du von MySQL zu PG wechselst, wirst Du erst einmal kaum etwas ändern müssen. Allerdings hat PG eben viele Features, die MySQL nicht hat:

  • mehr Datentypen, z.B. ARRAY's, RANGE-Typen, geometrische Typen, Netwerk-typen, echte UUID, JSON/JSONB, ..., und du kannst neue Datentypen definieren
  • mehr Indexmöglichkeiten. BTREE hat auch MySQL, aber GIN, GiST, BRIN, HASH halt nicht. Dazu kommen funktionale und partielle Indexe.
  • bessere Suchmethoden, z.B. Bitmap Index Scan, Index-Only-Scan, es kann Abfragen auf mehreren Cores parallel ausführen etc.
  • sehr mächtige Programmiersprachen, mit denen Du Deine Business-Logig direkt in der DB ausführen kannst (macht z.B. Zalando so, mal als Randinfo)
  • sehr guter Planner/Optimizer, mit einem Kostenmodell zur Optimierung von Abfragen. Man kann eigene Statistiken definieren etc.

Mit anderen Worten: man kann mit MySQL-Wissen problemlos auch PostgreSQL nutzen, das sollte gar kein Problem sein. Nur nutzt man dann halt nur ein Bruchteil der Möglichkeiten.
Wer aber die Features von PostgreSQL erst einmal kennt und nutzt, wird bei MySQL einfach nur noch fluchen.
 
Zurück
Oben