Ich habe das letzte Jahr damit verbracht, mich mit MySQL wirklich vertraut zu machen, aber aufgrund der zunehmenden Tendenz und des Wunsches, meine Web-Apps mit Heroku zu homogenisieren, möchte ich stattdessen PostgreSQL für meine Web-Apps verwenden. Es gibt da draußen Ressourcen zum Erlernen von PostgreSQL, aber ich möchte nicht, dass mir Datenbankkonzepte von Grund auf neu erklärt werden, und ich möchte nicht all die Dinge neu lernen müssen, die ziemlich gleich sind.
Was sind die kritischen Unterschiede, die ich zwischen MySQL und PostgreSQL verstehen muss - syntaktisch und konzeptionell -, die mich täglich betreffen werden?
Antworten:
Es hängt etwas davon ab, wie Sie die Datenbank verwenden. Wenn Sie ein ORM verwenden, werden Sie möglicherweise überhaupt keine Probleme bemerken.
Ich habe eine Anwendung auf Postgresql umgestellt (für die Bereitstellung in Heroku), aber erst nachdem ich Situationen entdeckt hatte, in denen das von Rails erstellte SQL unter SQLite einwandfrei funktionierte, nicht jedoch unter Postgresql. Die Probleme wurden immer dann verursacht, wenn Joins denselben Spaltennamen in mehreren Tabellen abfragten. SQLite war das egal, aber Postgresql wollte den angegebenen Beziehungsnamen, wenn er in der 'where'-Klausel enthalten war.
Obwohl ich sowohl mit MySQL als auch mit Postgresql gearbeitet habe, bin ich mir keiner grundlegenden konzeptionellen Unterschiede zwischen ihnen sicher. Sie sind beide ziemlich solide Client-Server-Datenbanken, obwohl PG einen besseren Ruf zu generieren scheint.
Es gibt jedoch definitiv einige kritische syntaktische Unterschiede zwischen MySQL und Postgresql. Ich habe hier einen anständigen Leitfaden gefunden: http://en.wikibooks.org/wiki/Converting_MySQL_to_PostgreSQL
quelle
Das größte ist, wofür die Datenbank da ist. MySQL ist im Wesentlichen als Informationsspeicher für Ihre Anwendung konzipiert. PostgreSQL soll eine Informationsmanagementlösung für mehrere Anwendungen bieten, die auf dieselben Daten zugreifen. Dieser Unterschied kommt auf viele verschiedene Arten zum Ausdruck. Mit MySQL können Anwendungen beispielsweise ihren eigenen sql_mode festlegen, der sich darauf auswirkt, welche Daten als gültig angesehen werden. PostgreSQL hat keine solche Option. Infolgedessen wird in MySQL dringend empfohlen, SQL als anwendungsprivate API zu betrachten, während es sich bei PostgreSQL um eine API handelt, die sicher von Anwendungen gemeinsam genutzt werden kann. Dies führt zu vielen kleinen Unterschieden. MySQL ist wahrscheinlich einfacher zu portieren, aber PostgreSQL ist wahrscheinlich einfacher, eine Datenumgebung zu portieren ....
Folgendes kann hilfreich sein: http://ledgersmbdev.blogspot.com/2012/09/or-modelling-interlude-postgresql-vs.html
quelle