Heim  >  Artikel  >  Datenbank  >  Fassen Sie einige MySQL-Fallstricke zusammen

Fassen Sie einige MySQL-Fallstricke zusammen

php中世界最好的语言
php中世界最好的语言Original
2018-03-23 17:06:161509Durchsuche

Dieses Mal bringe ich Ihnen eine Zusammenfassung einiger MySQL-Fallen bei der Verwendung von MySQL. Schauen wir uns die folgenden Fälle an. Die

MySQL

Installation ist einfach, schnell und funktionsreich. Darüber hinaus ist es auch ein Maßstab für die Open-Source-Bewegung. Seine großartigen Erfolge zeigen uns, dass ein erfolgreiches Unternehmen auf Open-Source-Code aufgebaut werden kann.

Allerdings hat jeder, der MySQL verwendet hat, mit der Faust auf den Monitor geschwenkt. Aber Sie können keine Technologie erfinden, die Tausende Zeilen Internetdaten pro Sekunde fehlerfrei speichern kann.

Zur Vorfreude auf diesen Sommer listen wir 8 Gründe auf, sich über Open-Source-

relationale Datenbanken zu beschweren. Die unten aufgeführten Gründe beschränken sich nicht nur auf MySQL, einige beziehen sich auch speziell auf relationale Datenbanken. Wenn wir relationale Datenbanken und MySQL nicht verstehen, werden wir immer im Denken der 1990er Jahre stecken bleiben. Wir müssen diese abreißen und dann wieder aufbauen. Oder wir greifen auf eine kürzlich populäre Datenbank zurück, die es noch nicht lange genug gibt, um eine Reihe von Gründen wie den folgenden zu rechtfertigen.

1. Tief verwurzelte Fehler

Jedes große Softwarepaket hat Fehler. Wenn Sie jedoch etwas tiefer graben, werden Sie feststellen, dass die mit MySQL verbundenen Fehler in sich geschlossen sind. Plötzlich müssen Sie aufpassen, denn NULL wird nicht auf die gleiche Weise angezeigt, Fremdschlüsseleinschränkungen funktionieren nicht so, wie Sie denken, und selbst die automatische Inkrementierung des Primärschlüssels geht schief.

Es gibt viele kleine Probleme, die nicht immer behoben werden können. Deshalb führen manche Leute eine Liste. Glücklicherweise unterhält MySQL ein sehr gutes Fehlermeldesystem, so dass wir Dinge erfahren, die wir uns nicht vorstellen können, und wissen, dass andere die gleiche Tortur durchmachen.

2. Inflexibilität relationaler Tabellen

Relationale Tabellen sind organisiert, und die Organisation ist gut – aber sie zwingt Programmierer dazu, einige Daten in eine Spalte zu kompilieren oder zu erzwingen ein definiertes Schema. Einer der Gründe, warum NoSQL immer beliebter wird, ist, dass es Programmierern genügend Flexibilität bietet, um die Nutzung von Datenbanken zu beschleunigen. Wenn eine Straßenadresse eine zusätzliche Zeile benötigt, können Sie diese problemlos in ein NoSQL-Dokument einfügen. Wenn Sie einen komplett neuen Datenblock hinzufügen möchten, egal was dieser enthält, kann das Dokumentmodell Ihre Daten auch unverändert übernehmen, ohne sie in das benötigte Datenformat ändern zu müssen.

Stellen Sie sich vor, Sie erstellen eine Tabelle mit allen Postleitzahlen im Ganzzahlformat. Diese Tabelle ist sehr effizient und die von ihr durchgesetzten Regeln sind sehr gut. Plötzlich hat jemand eine neunstellige Postleitzahl mit Bindestrichen hochgeladen. Oder vielleicht erhalten Sie einen Brief von einem Kunden aus Kanada mit einer Postleitzahl darauf.

Zu dieser Zeit herrschte alles im Chaos. Der Chef verlangt, dass die Website innerhalb weniger Stunden wieder betriebsbereit ist. Es bleibt jedoch keine Zeit, die Datenbank neu aufzubauen. Was können Programmierer tun? Vielleicht können Hacker genutzt werden, um die kanadische Postleitzahl vom digitalen Base64-Format in das Base-10-Format zu ändern? Oder eine Hilfstabelle mit Escape-Codes einrichten, um die tatsächliche Postleitzahl usw. anzugeben? Wer weiß? Hacker gibt es überall und sie sind gefährlich. Aber Sie haben keine Zeit, es herauszufinden.

Die Assoziationsregeln von MySQL sorgen dafür, dass jeder ehrlich und vorsichtig ist, aber sie zwingen uns, die Mühe zu vermeiden, verletzlich und betrügerisch zu sein.

3. JOINGemeinsame Abfrage

Es war einmal eine große Innovation in der Geschichte der Informatik. Der getrennte Tisch hat nicht nur eine einfache Struktur, sondern vereinfacht auch die Verwendung. Für die Abfrage ist jedoch die Verwendung einer Join-Anweisung erforderlich.

SQL stürzt Entwickler durch komplexe Abfragen, die durch eine Reihe von Verknüpfungen erstellt werden, in den Abgrund der Verwirrung und Verzweiflung. Darüber hinaus muss die Speicher-Engine die Join-Anweisung effizient und optimal analysieren. Entwickler müssen sich den Kopf zerbrechen, um Abfrageanweisungen zu schreiben, und die Datenbank analysiert sie dann.

Aus diesem Grund verzichten viele Entwickler, die sich auf die Laufgeschwindigkeit konzentrieren, auf Datenuntertabellen und verwenden stattdessen nicht standardmäßige Datentabellen. Unterscheiden Sie nicht zwischen Datenentitäten und speichern Sie alle Daten in einer großen Tabelle, um komplexe Abfragen zu vermeiden. Das geht wirklich schnell und dem Server geht nicht der Speicher aus.

Speicherplatz ist heutzutage günstig. 8-TB-Festplatten sind bereits im Angebot, größere sind bald erhältlich. Wir müssen uns nicht länger den Kopf zerbrechen, um Join zu nutzen.

4. Zweigverwirrung

Ja, ein solider, gut unterstützter MySQL-Fork kann Wettbewerb und Auswahl bringen, aber auch Verwirrung und Verwirrung stiften. Erschwerend kommt hinzu, dass es einen MySQL-Zweig namens MariaDB gibt, der von Monty Widenius verwaltet wird. Er ist auch am Schreiben von MySQL beteiligt. Ist MariaDB also wirklich unabhängig und unserer Unterstützung würdig? Oder ist es MySQL? Sollten wir beim Kerncode bleiben, der von der Organisation betrieben wird, die die ursprüngliche MySQL-Datenbank erstellt hat? Oder sollten wir uns den oft coolen Überläufern anschließen, die als schlauer gelten?

Und wie erhalten wir Informationen zur Kompatibilität? Einerseits sind wir davon überzeugt, dass MariaDB und MySQL sehr ähnlich sind. Andererseits müssen wir glauben, dass es einen Unterschied gibt – warum streiten sich sonst alle darüber? Vielleicht funktionieren sie in beiden Lagern gleich, was die Leistung und den Umfang unserer Abfrage betrifft? Aber vielleicht sind sie anders – oder werden in Zukunft anders sein.

5. Verwirrung bei der Speicher-Engine

MySQL besteht de facto nicht aus mehreren Datenbanken, und die meisten ihrer Details werden von einer einheitlichen Oberfläche abgedeckt Abdeckung. Am Anfang gab es eine MyISAM-Engine, die zwar schnell, aber hinsichtlich der Konsistenz nicht vollständig war. Manchmal ist es gut, wenn Sie Geschwindigkeit brauchen und inkonsistente Ergebnisse akzeptieren können.

Als die Leute mehr brauchten, erschien InnoDB mit vollständiger Transaktionsunterstützung. Aber das reicht nicht aus. Jetzt stehen möglicherweise 20 Speicher-Engines zur Auswahl – genug, um einen Datenbankadministrator in den Wahnsinn zu treiben. Natürlich gibt es Zeiten, in denen es schön ist, zwischen verschiedenen Speicher-Engines zu wechseln, ohne Ihr SQL neu schreiben zu müssen, aber nach dem Wechsel herrscht immer Chaos. Soll ich MyISAM oder innoDB als Engine für diese Tabelle wählen? Werden die Daten, die ich ausgeben möchte, alternativ im CSV-Format vorliegen?

6. Gewinnmotiv

Obwohl MySQL ein erfolgreiches Open-Source-Produkt ist, ist es immer noch ein Geschäft voller Profis, die darauf angewiesen sind, bezahlte Entwickler zu bekommen. Während die meisten Benutzer weiterhin das beste Erlebnis genießen, das Open-Source-Lizenzen bieten, besteht kein Zweifel daran, dass dieses Unternehmen immer noch Schwierigkeiten hat, genug Geld zu verdienen, um den Betrieb aufrechtzuerhalten. Dies führt zu einer seltsamen Aufteilung des freien Codes zwischen „Community Editions“ und Vollprodukten, die an Unternehmen verkauft werden.
Sollten Sie bezahlen? Wie viel Geld verdienst du hier? Ist es fair, mit einer Community-Version zu arbeiten? Sind die zusätzlichen Funktionen in der Enterprise-Version nur eine Spielerei, um uns dazu zu verleiten, mehr zu bezahlen? Dies zeigt zumindest, dass es sich um eine weitere Reihe von Fragen handelt, die beantwortet werden müssen. Welche Version soll ich wählen? Unter welcher Lizenz? Welchen Funktionsumfang soll ich nutzen?

7. Fehlende native JSON-Unterstützung

Wenn man sich das Alter von MySQL anschaut, ist es am besten, es zu installieren, und dann wird einem klar, dass man weitere Treiber hinzufügen muss damit es funktioniert. Es ist verfügbar. MySQL kommuniziert normalerweise über Port 3306 und gibt typischerweise formatierte Daten aus, die es nur schwer verstehen kann. Wenn Sie möchten, dass Ihr Code mit ihm kommuniziert, müssen Sie eine weitere Codeebene hinzufügen, die die Sprache von MySQL in etwas Nützliches übersetzt. Der Code für diese Ebenen wird als Bibliothek verteilt, was häufig den Erwerb einer kommerziellen Lizenz erfordert.

Moderne Datenspeicherschichten kommunizieren oft direkt in JSON. Obwohl MySQL und MariaDB jetzt über die Möglichkeit verfügen, den JSON-Teil von SQL zu analysieren, ist dies bei weitem nicht gut genug, und native JSON-Schnittstellen sind in CouchDB, MongoDB oder einem der neuesten Tools bereits weit verbreitet.

8. Der Aufstieg von Closed-Source- und proprietären Modulen

Habe ich erwähnt, dass MySQL Open Source ist? Es handelt sich, abgesehen von einigen neueren, nicht-Open-Source-Codes und proprietären Modulen, um den „Open-Source-Kern“. Programmierer müssen essen und Oracle muss die Früchte seiner harten Arbeit gegen Geld eintauschen. Dies ist eine der Realitäten des Geschäftslebens. Es ist nicht wie in Krankenhäusern, wo man mit MySQL kostenlose medizinische Versorgung erhält. Es ist nicht wie bei den Landwirten, die MySQL verwenden, um Lebensmittel zu verschenken.

Es ist ein bisschen unfair, von MySQL zu verlangen, dass es sich immer an einen sehr hohen Standard hält, denn Open-Source-Erfolg kann eine Falle sein. Das liegt nur daran, dass es von Anfang an kostenlos sein kann, aber das bedeutet nicht, dass es immer so sein kann. Wenn Unternehmen viele neue Funktionen wünschen, müssen sie diese auf die eine oder andere Weise bezahlen. Manchmal ist es günstiger, Oracle zu bezahlen, als den Code selbst zu schreiben. Manchmal ist kommerzieller, nicht offener Quellcode sinnvoll. Die Fakten sprechen für sich.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website !

Empfohlene Lektüre:

Vue macht Bilderkarussell

JS erhält den Wert im ersten Element im Auswahl-Dropdown-Feld

So gehen Sie mit einem Fehler bei der Installation von Electron um

Das obige ist der detaillierte Inhalt vonFassen Sie einige MySQL-Fallstricke zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn