Frage

Ich arbeite an einer Webanwendung mit Python (Django) und möchte wissen, ob MySQL oder PostgreSQL für die Bereitstellung in der Produktion besser geeignet sind.

In Eins Podcast Joel sagte, dass er einige Probleme mit MySQL habe und die Daten nicht konsistent seien.

Ich würde gerne wissen, ob jemand solche Probleme hatte.Auch wenn es um die Leistung geht, die sich leicht optimieren lässt?

War es hilfreich?

Lösung

Ein Hinweis für zukünftige Leser: Der folgende Text wurde zuletzt im August 2008 bearbeitet.Das ist zum Zeitpunkt dieser Bearbeitung fast 5 Jahre her.Software kann sich von Version zu Version schnell ändern. Bevor Sie sich also anhand der folgenden Ratschläge für ein DBMS entscheiden, sollten Sie einige Nachforschungen anstellen, um festzustellen, ob es immer noch korrekt ist.


Besser?

MySQL wird weitaus häufiger von Webhostern bereitgestellt.

PostgreSQL ist ein viel ausgereifteres Produkt.

Es gibt In dieser Diskussion geht es um Ihre „bessere“ Frage

Anscheinend, laut diese Webseite, MySQL ist schnell, wenn die gleichzeitigen Zugriffsebenen niedrig sind und viel mehr Lese- als Schreibvorgänge stattfinden.Andererseits weist es eine geringe Skalierbarkeit bei steigender Last und steigenden Schreib-/Leseverhältnissen auf.PostgreSQL ist bei niedrigen Parallelitätsniveaus relativ langsam, skaliert aber gut mit steigenden Lastniveaus und bietet gleichzeitig genügend Isolation zwischen gleichzeitigen Zugriffen, um Verlangsamungen bei hohen Schreib-/Leseverhältnissen zu vermeiden.Es wird weiterhin auf eine Reihe von Leistungsvergleichen verwiesen, da diese Dinge sehr ...empfindlich gegenüber Bedingungen.

Wenn Ihr Entscheidungsfaktor also ist: „Welche ist schneller?„Dann lautet die Antwort: „Es kommt darauf an.“ Wenn es wirklich wichtig ist, testen Sie Ihre Bewerbung mit beiden.„Und wenn es Ihnen wirklich, wirklich wichtig ist, nehmen Sie zwei Datenbankadministratoren (einen, der auf jede Datenbank spezialisiert ist) und bitten Sie sie, den Mist aus den Datenbanken zu optimieren, und wählen dann aus.Es ist erstaunlich, wie teuer Gut Datenbankadministratoren sind;Und sie sind jeden Cent wert.

Wenn es darauf ankommt.

Was wahrscheinlich nicht der Fall ist. Wählen Sie also einfach die Datenbank aus, deren Klang Ihnen gefällt, und legen Sie los.Eine bessere Leistung kann mit mehr RAM und CPU, einem angemesseneren Datenbankdesign, cleveren Tricks mit gespeicherten Prozeduren und so weiter erkauft werden – und all das ist für Random-Website-X billiger und einfacher, als sich den Kopf darüber zu zerbrechen, welches man auswählen soll: MySQL oder PostgreSQL und spezielles Tuning von teuren DBAs.


Joel sagte in diesem Podcast auch, dass dieser Kommentar zurückkommen würde, um ihn zu beißen, weil die Leute sagen würden, dass MySQL ein Stück Mist sei – Joel konnte keinen bekommen count der Reihen zurück.Der Plural von Anekdote ist keine Daten. Er sagte:

MySQL ist die einzige Datenbank, für die ich jemals in meiner Karriere programmiert habe und die Datenintegritätsprobleme hatte, bei denen man Abfragen durchführte und unsinnige Antworten zurückbekam, die falsch waren.

und er sagte auch:

Es ist nur eine Anekdote.Und das ist eines der Dinge, die mich am Bloggen oder einfach am Internet im Allgemeinen frustrieren.[...] Es gibt einfach eine seltsame Tendenz, aus Anekdoten Wahrheiten zu machen, und als Blogger fange ich tatsächlich an, mich ein wenig schuldig zu fühlen

Andere Tipps

Manche sagen, MySQL sei einfach und schnell.

Schnell – Wenn Sie die standardmäßige MyIsam-Speicher-Engine verwenden, ist sie schnell.Es verfügt über nahezu keine seriöse Datenbankfunktion, ist aber schnell.Wenn ich sarkastisch wäre, würde ich sagen, dass ein Grep auf einer Flatfile auch schnell ist.Komischerweise ist es gar nicht so weit davon entfernt, wie MyIsam Daten speichert.Erwarten Sie dort also keine relationalen Datenbankfunktionen.Nicht einmal auf Integritätsbeschränkungen verweisen.

Ganz einfach: Nehmen wir an, Sie möchten eine angemessene Teilmenge der echten Datenbankfunktionen.Einige Dinge wie Integritätsbeschränkungen, Trigger, Transaktionsisolation, Funktionsindizes vielleicht?Sie müssen also natürlich auf die MyIsam-Engine verzichten und eine der drei wichtigsten Speicher-Engines auswählen.Die von verschiedenen Anbietern entwickelt wurden und jeweils eine bestimmte Konfiguration/ein bestimmtes Verhalten aufweisen.

Kasse eine Übersicht über die Speicher-Engines, und wenn Sie keine Kopfschmerzen bekommen, stimme ich zu, dass MySql aus Ihrer Sicht einfach ist.

Anhand dieser Fakten möchte ich Ihnen eine Meinung über diejenigen bilden, die sagen, MySql sei schnell und einfach.

Wenn Sie mehr skalieren, Zeit sparen, weniger seltsame Fehler suchen müssen, einen einfacheren Anwendungscode haben und mehr Zeit damit verbringen möchten, Ihr Unternehmen zu optimieren, anstatt sich mit Ihrer Datenbank herumzuschlagen, dann ist Postgresql die Open-Source-Lösung Ihrer Wahl.

Ich habe Django nicht verwendet, aber ich habe sowohl MySQL als auch PostgreSQL verwendet.Wenn Sie Ihre Datenbank nur als Back-End für Django verwenden, spielt das keine große Rolle, da dadurch die meisten Unterschiede abstrahiert werden.PostgreSQL ist etwas skalierbarer (es stößt bei steigender Datengröße/Client-Anzahl nicht so schnell an die Wand wie MySQL).

Der wirkliche Unterschied kommt dann zum Vorschein, wenn Sie ein neues System einführen.Dann würde ich PostgreSQL zweifellos empfehlen, da es über viel mehr Funktionen verfügt, die Ihren DB-Layer viel anpassbarer machen, sodass Sie ihn an alle Ihre Anforderungen anpassen können.

Ich habe mich erst viele Monate später gemeldet.

Die geografischen Möglichkeiten der beiden Datenbanken sind sehr, sehr unterschiedlich.PostgreSQL verfügt über die außergewöhnliche PostGIS-Erweiterung.Im Vergleich dazu ist die geografische Funktionalität von MySQL praktisch gleich Null.

Wenn Ihr Webdienst über eine Standortkomponente verfügt, wählen Sie PostgreSQL.

Obwohl es etwas veraltet ist, lohnt es sich, es zu lesen MySQL-Fallstricke Seite.Viele der dort aufgeführten Punkte sind meines Wissens nach immer noch wahr.

Ich verwende PostgreSQL.

Ich nutze beide ausgiebig.Meine Wahl für ein bestimmtes Projekt läuft auf Folgendes hinaus:

  • Lizenzierung – Werden Sie Ihre App vertreiben (IANAL)?
  • Vorhandene Infrastruktur und Wissensdatenbank
  • Beliebig spezielle Soße du musst haben.

Von spezielle Soße Ich mag Dinge wie:

  • einfache/günstige Replikation = MySQL
  • Riesige Datensatzprobleme mit kleinen Ergebnissen = PostgreSQL.Nutzen Sie die Spracherweiterungen und verfügen Sie über sehr effiziente Datenoperationen.(PL/Python, PL/TCL, PL/Perl usw.)
  • Schnittstelle zu R Statistical Libraries = PostgreSQL PL/R Verfügbar in Debian/Ubuntu

Nun, ich glaube nicht, dass Sie in irgendetwas früherer Entwicklung (Build, Staging, Produktion) eine andere Datenbankmarke verwenden sollten, da Ihnen das wieder auf die Nerven gehen wird.

Soweit ich weiß, ist PostgreSQL eine „korrektere“ Datenbankimplementierung, während mySQl weniger korrekt (weniger konform), aber schneller ist.

Wenn Sie also praktisch eine CRUD-Anwendung schreiben, ist MySQL die richtige Wahl.Wenn Sie bestimmte Funktionen aus Ihrer Datenbank benötigen (wenn Sie sich nicht sicher sind, dann ist dies nicht der Fall), sollten Sie sich PostgreSQL ansehen.

Wenn Sie eine Anwendung schreiben, die möglicherweise häufig auf verschiedenen Servern verteilt ist, hat MySQL aufgrund der Portabilität einen großen Stellenwert gegenüber PostgreSQL.PostgreSQL ist auf weniger zufriedenstellenden Webhosts schwer zu finden, obwohl es einige gibt.In den meisten Belangen ist PostgreSQL langsamer als MySQL, insbesondere wenn es letztendlich um die Feinabstimmung geht.Alles in allem würde ich sagen, dass Sie PostgreSQL für kurze Zeit ausprobieren sollten, damit Sie es nicht völlig vermeiden, und dann ein Urteil fällen.

Danke schön.Ich habe Django mit MySQL verwendet und es ist in Ordnung.Wählen Sie Ihre Datenbank anhand der von Ihnen benötigten Funktionen aus.MySQL und Postgres sind schwer zu vergleichen.Vergleichen Sie Postgress besser mit SQL Server.

@WolfmanDragon

PostgreSQL bietet (wenig) Unterstützung für Objekte, ist aber von Natur aus eine relationale Datenbank.Von seinem Über Seite:

PostgreSQL ist eine leistungsstarke Open Source-Lösung relational Datenbanksystem.

MySQL ist ein Relationales Datenbank Management System während PostgreSQL ein ist Objekt-Relationales Datenbank Management System.PostgreSQL eignet sich gut für C++- oder Java-Entwickler, da es uns mehr Kontrolle darüber gibt, wie Abfragen geschrieben werden.ORDBMS stellt uns auch Objekte und benutzerdefinierte Typen zur Verfügung.Die SQL-Abfragen selbst sind viel näher an den ISO-Standards als MySQL.
Benötigen Sie ein ORDBMS oder ein RDBMS?Das wird Ihre Frage besser beantworten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top