Was passiert mit der Popularität von MySQL und PostgreSQL? Mitap Diskussion

Am 24. April haben wir die MySQL @ Scale- Online-Mitap zu Fragen der MySQL- Skalierbarkeit veranstaltet. Es nahmen Redner von Avito, Badoo und ECOMMPAY teil: Andrey Aksenov (Autor von Sphinx, Leiter der Suchinfrastruktur), Evgeny Kuzovlev (CIO ECOMMPAY), Vladimir Fedorkov (MySQL-Experte / DBA in ECOMMPAY) und Nikolai Korolev (MySQL-Experte / DBA in Badoo).

Mitap kam lange heraus, also beschlossen wir, es in Teilen zu veröffentlichen und am Ende zu beginnen - mit einer sehr interessanten Diskussion unserer Meinung nach über die Popularität von MySQL und PostgreSQL, die Gründe für die Popularität von PostgreSQL, ORM, Impedanzfehlanpassung, fraktale Indizes, Wut, Verleugnung, Verhandlung und das Einrichten von Auto-Vakuum und andere Probleme bei der Auswahl eines DBMS durch Gästebuchentwickler auf NodeJS. Beachtung! Es gibt kein sehr zensiertes Vokabular, eine Reihe falscher Verallgemeinerungen wurden ersetzt, und alle Zufälle sind zufällig und in keiner Weise beleidigend.

Alexey Rybak : Nehmen Sie MySQL gegen PostgreSQL, nicht so sehr nur einen Holivar, sondern eine ziemlich messbare und sichtbare Sache. Es gibt Analysen, ich habe nicht nur einen Indikator betrachtet. Jetzt erinnere ich mich an zwei Dinge in meinem Kopf. Wir haben eine Facebook-Gruppe zum Verwalten und Entwickeln großer Projekte. Es gibt mehrere tausend Menschen. Ich habe eine Umfrage zu PostgreSQL oder MySQL durchgeführt, einschließlich der Frage, wer Cloud- und Nicht-Cloud-Anwendungen hat, da dies auch ein so neues Thema ist, das in den letzten Jahren sehr heiß war.

Und es stellte sich heraus, dass Postgres MySQL (etwas) voraus ist, und für mich war es im Grunde eine Art neue Geschichte, weil es so aussah, als ob das Verhältnis anders sein sollte. Und es gibt Umfragen, die auf HighLoad-Konferenzen durchgeführt werden, sie wurden veröffentlicht. Ich habe keinen einfachen systematischen Vergleich von Jahr zu Jahr, aber es hat deutlich gezeigt, dass Postgres irgendwann in Bezug auf die Anzahl der Antworten auf die Frage "Was ist Ihre Hauptdatenbank?" MySQL eingeholt und überholt hat.

Ich hatte ein Gespräch mit Petya Zaitsev. Vor langer Zeit, vielleicht vor zwei Jahren, kam er nach Moskau. Dies sind im Grunde alle Gedanken von Petya. Die Gedanken sind so, dass erstens viel getan wurde, um verschiedene Arten von Managementlösungen oder Betreibern in die Cloud-Geschichte einzuführen. Und die anfängliche Lücke zwischen der Wahl von MySQL oder Postgres schien ausgeglichen zu sein, in dem Sinne, dass, wenn alles mit MySQL einfacher war, es dauerte und es funktionierte, Postgres zuerst viele Tänze mit Tamburinen haben musste, damit dieses Ding heilen würde . Und in der Cloud-Umgebung haben Sie etwas: Klicken Sie auf eine Schaltfläche - alles wurde angezeigt. Das heißt, einerseits wurde diese Lücke entfernt. Dann ist auch eine gewisse allgemeine Wahrnehmung in Bezug auf Lizenzen betroffen, proprietär, nicht proprietär, bla bla bla. Grob gesagt, wenn Sie es vollständig vereinfachen, wenn ich es nicht mit einem Knopf machen möchte, werde ich wählen, was freier ist, na ja,oder sie sagen, dass es kostenlos ist. In der Tat ist es nicht klar, aber dennoch. Was ist in einer ideologisch korrekteren Box verpackt. Dies ist eine Geschichte.

Und die zweite Geschichte ist, dass es speziell für Russland ist, da ich mich schließlich auf die Daten verlasse, nicht auf die Welt, sondern auf die russische. Vielleicht ist die Geschichte in der Welt etwas anders. Es gab eine solche Geschichte, dass sich die Postkongressoren irgendwann ziemlich stark vereinigten und sehr viel PR machten. Und sie haben Arbeitsgruppen und Konferenzen gegründet, und seit einigen Jahren gibt es ein Unternehmen, das tatsächlich die russische Unternehmenslösung herstellt.

Was denken Sie, ist in Russland und in der Welt diese Neuausrichtung zwischen MySQL und Postgres, und wenn ja, aus welchen Gründen, wie viele der von mir angegebenen Gründe sind rational, vernünftig, vielleicht gibt es andere Ursachen?

Evgeny Kuzovlev: Um ehrlich zu sein, hätte ich nie gedacht, dass die Cloud alle Unterschiede auszugleichen scheint, wahrscheinlich weil ich alles vor Ort habe. Für mich sind Wolken Dinge, die, sagen wir, etwas auf dem Amazonas, lassen Sie es uns schnell bevölkern, dann sind es Wolken für mich. Daher habe ich von dieser Seite irgendwie nie darüber nachgedacht. Aber hier wird tatsächlich die Komplexität reduziert.

Früher, bedingt vor ungefähr acht Jahren, war es notwendig, dass Postgres so viel mit einem Tamburin tanzte, dass Mutter im Moment nicht trauert, damit Postgres nur für Sie arbeiten konnte. Und Sie haben MySQL sofort einsatzbereit gemacht und es hat bei Ihnen funktioniert. Vielleicht nicht acht, vielleicht vor 10-12 Jahren. In der Tat wurde diese Komplexität in Postgres stark reduziert, und der Punkt eines solchen Eintrags ist betriebsbereit und entwicklungsbedingt. Er wurde in irgendeiner Weise mit MySQL verglichen.

Aber ich zum Beispiel für uns selbst, wir haben ein solches Problem gelöst, ich habe versucht, mich zu nähern, und ich versuche, mich so weit wie möglich zu nähern. Als wir DWH starteten, mussten wir die Engine für die denormalisierte Tabelle auswählen. Gleichzeitig gibt es dort keine Analyse, die Analyse befindet sich auf einer etwas anderen Ebene. Es ist nur reine Lagerung. Ein revolutionäres DBMS wurde benötigt, um jeweils eine Analyse des Datenvergleichs bereitzustellen.

Und wir haben uns dieser Frage MySQL oder Postgres genähert, und trotz der Tatsache, dass die operativen Ressourcen ziemlich hochqualifiziert sind, haben wir uns entschieden. Und ich hatte zum Beispiel den Eindruck, dass Postgres ein Akademiker ist. Wie im Lehrbuch geschrieben, wird es funktionieren. Und MySQL, es ist irgendwie ziemlich leicht und mit ein paar Hacks. Gleichzeitig funktionieren diese Hacks in 99% der Fälle. Und egal wie viele Postgres-Leute in realen Situationen, die 99% der tatsächlichen Nutzung von Datenbanken abdecken, synthetische Benchmarks geben, MySQL überzeugt normale Benutzer.

Und das Plus, verdammt noch mal, es ist nur ein riesiges Plus von MySQL, dass es kein automatisches Vakuum hat. Weil das Einrichten dieses Dings in Postgres nicht jeder kann. Und sobald Benutzer ...

Vladimir Fedorkov: Klingt gemein (in Bezug auf Ingenieure - ca. AR ).

Evgeny Kuzovlev: Und sobald Benutzer in das automatische Vakuum geraten, treten die wildesten Probleme auf. Das heißt, einfach so, um eine 60-prozentige Verschlechterung des Systems zu erreichen, das ist für Sie selbst ...

Alexei Rybak: Nein, ich bin nur mit Trumpfkarten reingegangen.

Evgeny Kuzovlev: Nun, es tut mir leid. Sofort wie auf einem Tisch ausgelegt. Ich weiß natürlich, dass wir Postgres haben. Wir haben viel davon. Wir haben Probleme mit dem automatischen Vakuum, Gott sei Dank, nein. Aber in meiner Karriere habe ich all diese Fälle durchlaufen - Ärger, Verleugnung, Verhandlung und Einstellung des automatischen Vakuums. Aber das ist so eine schmerzhafte Empfindung, ich werde es dir sagen. MySQL verursacht nicht so viele Schmerzen.

Gleichzeitig bin ich wild wütend, weil ich in MySQL keine Gelegenheit habe ... Ich möchte, aber hier habe ich einen B-Tree-Index und das wars. Und obwohl du knackst! Ich weiß nicht, ich kann nicht einfach bauen ...

Alexey Rybak: Es gibt Hash-Indizes.

Evgeny Kuzovlev: Ja. Vergleichen wir jedoch die Anzahl der Indizes in MySQL und die Anzahl der Indizes in Postgres. Das ist unvergleichlich. Gleiches gilt für Tischmotoren. Bei MySQL haben wir eine Tabellen-Engine, Sie wollen, ich weiß nicht, Sie werden TokuDB nehmen, und Sie werden in einem Prozent der Fälle Spaß haben und in 99% der Fälle verstehen Sie nicht, warum Sie es genommen haben ...

Andrey Aksyonov: Schmieren mit Fraktalen.

Alexey Rybak:Warten Sie, mit den Motoren ist dies auch ein Scherz. Früher, als es erfunden wurde, schien es eine coole Sache zu sein. Tatsächlich hat aber nichts wirklich Wurzeln geschlagen.

Andrey Aksyonov: Warum hat es keine Wurzeln geschlagen? InnoDB hat Wurzeln geschlagen.

Alexey Rybak: Nein, ich meine, außer InnoDB. Das heißt, InnoDB ist nur ein Standard geworden. Und all die anderen Geschichten mit Säulenstücken, mit einigen spezifischeren Stücken wie Toku. Sie haben Recht, ich weiß nicht einmal, wo dieser Prozentsatz liegt. Das heißt, die Motoren erwiesen sich als so zweifelhaft.

Evgeny Kuzovlev: Wissen Sie, die menschliche Psychologie ist es so, dass manchmal die Möglichkeit der Wahl wichtiger ist als die Wahl selbst. MySQL gibt es.

Alexei Rybak: Die Leute wählen MySQL nicht gegen Postgres, weil es verschiedene Engines gibt. Ich denke das ist der letzte ...

Vladimir Fedorkov: Wenn Leute MySQL gegen Postgres wählen und mindestens jemand in der Firma ist, der hinter Postgres steht, wird er ausgewählt, weil es eine Religion ist.

Alexey Rybak: MySQL ist auch eine Religion.

Vladimir Fedorkov: Nein, auf keinen Fall.

Andrey Aksyonov:Niemand warf einen anderen wichtigen Punkt, genannt "Kontingent ist gewachsen". Die Anforderungen sind natürlich in einer bestimmten Schicht gewachsen. Die erste Frage ist, warum der Prozentsatz von Postgres wächst, der Prozentsatz dieser elenden Fälschung namens MySQL stetig abnimmt. Und am Ende natürlich. Im Prinzip ist der Planet derselbe, die Dinosaurier werden mit Füßen treten und MongoDB wird alle besiegen, aber es ist in der Zukunft, aber die Webskala ist immer noch wichtig, da sich die Anforderungen, die die Anwendungen stellen, zeitlich ändern - einmal und zu einem bestimmten Zeitpunkt Postgres gereift, für seinen Teil, und eine Reihe von Anforderungen von Entwicklern ihrerseits gereift.

Alexej Rybak: . Hören sie , ich glaube es nicht, mir verzeihen sie mir, speziell lasst uns ...

Andrey Aksyonov: . speziell Komm Blick 1995 ...

Alexey Rybak:Die Firmen, die ursprünglich Webscale-Produkte auf den Markt gebracht haben, die für die gleichen Typen entwickelt wurden ... Gott, ist mir aus dem Kopf gegangen! Gerade genannt ... Nun, hier ist, wer alle besiegen wird ...

Andrey Aksyonov: Mongo wird gewinnen.

Alexey Rybak: Mongo, ja, ja, ja, sorry, ja. Mongo hatte also zunächst zwei Dinge. Erstens, der Objektspeicher, denken Sie nicht, kurz ORM, schreiben Sie einfach, speichern Sie und brauchen Sie nichts, SQL muss nicht wissen, kurz gesagt, das ist alles. Dies führte einige Jungs, ihre Anforderungen haben sich nicht geändert, sie sind einfach: Ja, aber es war möglich, SQL konnte nicht gelehrt werden, wow! Wie cool! Er sagte einfach: Rette das Objekt und er hat mich irgendwo gelassen, Klasse! Das ist das erste.

Zweitens was? Denken Sie nicht an Fehlertoleranz, wir können dies zunächst in mehreren DCs usw. tun. Zuerst war es Marketing-Bullshit. Dann haben sie etwas verdreht, und im Prinzip, so wie ich es verstehe, in den neuesten Versionen jetzt (es funktioniert und) viel, wo Mongo wirklich in großen Installationen verwendet wird.

Ich meine, dies ist ein gutes Beispiel, wenn Sie in den Markt eintreten, einen anderen Markt, nachdem Sie diese beiden Möglichkeiten gespürt haben, zum einen die Menschen, die im Programmierparadigma in Objektsprachen aufgewachsen sind, im Allgemeinen diese Impedanzfehlanpassung. Dies ist eine grundlegende Geschichte. Es ist für sie einfacher, Tools zu verwenden, die sagen: "Rette mich einfach". Ich werde alles für dich tun. Und zur gleichen Zeit, aus der Box, solche Dinge mit der Warteschlange verbunden, und etwas anderes.
Hier würde ich verstehen, trotz der Tatsache, dass ich noch einmal sage, du Troll, du hast es als eine Art hyperbolisierten, relativ gesehen Fall, eine Art Fiktion eingerichtet. Trotzdem sagt er in diesem Fall genau, dass man mit einem solchen Produkt ausgehen, eine solche Nische finden kann, und er wird hochfliegen, mit Füßen treten, in die Luft jagen. Ich verstehe nicht, was Postgres vorgeschlagen hat oder wie sie sich geändert haben und welche Anforderungen Postgres nach Ihrer Logik plötzlich so attraktiv geworden ist.

Andrey Aksyonov: Ich wiederhole noch einmal. Sprossen auf beiden Seiten; Postgres bei bestimmten Parametern einerseits und Entwickler bei bestimmten Parametern andererseits. Noch einmal 1995. Sie sind Entwickler. Sie sitzen in B ... ( Atyrau ), verdienen 15 Dollar, und das ist ein Jahr. Und du schreibst c ***** ( wertlos) Gästebuch in Perl. Und dann starten Sie den Auswahlprozess - welche Datenbank Sie auswählen sollen. Überraschenderweise existieren sowohl MySQL als auch Postgres bereits. Und wenn nicht, dann werden sie 1996 erscheinen. Aber Sie, s *** (weiblich aus der Hundefamilie) , der Entwickler des Gästebuchs über Perl in B ... ( Syzran )! Sie haben eine Aufgabe dieser Größenordnung, Sie lösen sie.

Der einzige Maßstab, an den Sie denken können, ist, wie viele "pro Kreis" -Anfragen pro Sekunde Sie saugen werden. Und „im Kreis“ der Anfragen pro Sekunde in diesem Moment zieht Postgres viereinhalb Mal weniger ein. Einfach so, nur weil du verdammt bist. Danach sehen Sie: Nun ja, aber in Postgres-Transaktionen und in MySQL 3.23 MyISAM. Aber um ehrlich zu sein, die Transaktionen für mein Gästebuch sind für mich (überhaupt) n ****Nicht benötigt. Wählen Sie nachdrücklich MySQL.

Jetzt ist ein wenig Zeit vergangen, 25 Jahre. Im Prinzip leben Sie immer noch in B ... ( Tuymazy ), Sie schreiben nicht mehr in Perl, aber in NodeJS wurde Ihr Gehalt indexiert, weil es nur Dollar-Inflation ist, und jetzt sind es 15 Dollar, multipliziert mit Inflation, - 45, und das ist ein Monat. Sie haben die gleichen Probleme plus 100.500 Pakete in NodeJS. Und diese 100500 NodeJS-Pakete müssen ihren gesamten Status irgendwo speichern, komplexe Anforderungen an den Paketmanager und so weiter.

Und dann haben Sie plötzlich Ihre Anforderungen, die Sie in die Datenbank beißen, ein wenig gewachsen. Zum Beispiel können Sie aus irgendeinem Grund nicht leben und möchten nicht ohne Transaktionen leben. Was für ein erstaunlicher Zufall! Sie benötigen noch Joins. Hier sind einige seltsame Indizes, über die man nachdenken muss, und nicht nur ein automatischer B-Baum, wie zum Beispiel: Oh, verdammt! Aber es wäre schön, einen geografischen Index, einen R-Baum oder, sagen wir, Gott schütze uns, fraktale Bäume zu haben.

Dies hat die Anforderungen der Entwickler mal geändert. Und auf der anderen Seite Postgres, der in den Jahren der Alten auf einfache "Kreise" ( Anfragen) natürlich einfach bezaubernd langsamer wurde), die dumm waren und von allen gebraucht wurden, verbesserte er sich seinerseits in den letzten 25 Jahren erheblich. Und so trafen sie sich plötzlich und immer mehr Menschen sind überrascht, das zu finden, op! Sie sehen! Aber Postgres ist nicht so schlimm, es stellt sich heraus! Und es ist etwas besser für meine Anforderungen. Meine Hypothese ist genau so, dass sie grob gesagt zu Beginn von MySQL ...

Alexey Rybak: Hören Sie, aber ich verstehe nicht, wo es besser ist? Was ist besser? Ich verstehe, dass sie in etwas gleich sind, aber was besser ist, verstehe ich nicht.

Andrey Aksyonov: Also sind sie beide schlimmer.

Alexey Rybak: Als Mongo?

Andrey Aksyonov:Natürlich in Anführungszeichen "Mongo". Dies ist jedoch ein Thema für eine ganz separate Konversation und einen ganz separaten Konversationsthread mit dem Titel "Wo ist die glänzende Zukunft?".

Vladimir Fedorkov: Es gibt keine glänzende Zukunft. Die Datenbank ist böse. Sobald Sie eine Datenbank auswählen, unterschreiben Sie selbst ein Todesurteil. Verwenden Sie keine Datenbanken. Dateien schreiben.

Alexey Rybak: / dev / null! Schreiben Sie an / dev / null, Freunde, dev / null ist eine Web-Skala.

Andrey Aksyonov: Ja. Okay, Sie können im Prinzip auch auf / dev / null stoßen, was die Leistung betrifft.

Alexey Rybak: Okay, Freunde. Jeder ist wahrscheinlich sehr müde. Wir haben mehr als zwei Stunden gesprochen.

Andrey Aksyonov: Aber wirklich interessante Fragen wurden nicht aufgeworfen.

Nikolay Korolev:Gerade gestartet.

Alexey Rybak: Ernsthaft? Möchtest du weiter machen?

Andrey Aksyonov: Ich habe auch keinen Whisky eingegossen.

Alexey Rybak: Aber das ist eine große Frage, warum Sie es nicht getan haben.

Andrei Aksyonov: Ich habe mich natürlich nicht vorbereitet ...

Vladimir Fedorkov: Also sagten sie, dass Rundfunk, Rundfunk, nichts unmöglich ist, man kann nicht schwören, man kann nicht plumpsen.

Alexey Rybak: Ah! Freunde! Alle, die die Sendung gesehen haben, vielen Dank, dass Sie bei uns sind. Wir beginnen den inoffiziellen Teil, wo er sich ausschaltet ... Jetzt ... entferne ich den Live-Stream. Vielen Dank an alle, danke an unsere Gäste - Vladimir, Andrey, Eugene, Nikolai. Stream off, auf Wiedersehen, bis später.

(Ende der Aufnahme)

Die vollständige Aufzeichnung des Mitaps kann auf Youtube eingesehen werden:



In naher Zukunft werden wir auch andere Teile zur Infrastruktur, zu Skalierungs- / Fehlertoleranzmustern und zum Status des MySQL-Ökosystems veröffentlichen.

Wenn Ihnen dieses Format gefällt, dann wird es diesen Freitag eine weitere Rallye geben, die sich der Containerinfrastruktur widmet. Es gibt noch Plätze dafür . Teilnehmer: Evgeny Potapov (CEO von ITSumma), Dmitry Stolyarov (CTO Flant), Denis Remchukov (alias Eric Oldmann, COO argotech.io, Ex-RAO UES von Russland), Andrey Fedorovsky (CTO News360.com) und Ivan Kruglov ( Systemingenieur , ex - Booking.com). Lassen Sie uns über die Tools, Probleme und Perspektiven von Containern und Kubernetes in einer modernen Infrastruktur sprechen.

Wir haben auch die erwähnte Facebook-Gruppe "Management und Entwicklung großer IT-Projekte" , den @ feedmeto- Kanal mit interessanten Veröffentlichungen aus (meist ausländischen) Technologie-Blogs von Unternehmen und den Autoren-Kanal @rybakalexey über Entwicklungsmanagement in Lebensmittelunternehmen.

All Articles