Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sollten PHP-Entwickler die gespeicherten Prozeduren von MySQL verwenden?

Ob gespeicherte Prozeduren verwendet werden sollen oder nicht, ist eher eine religiöse oder politische Diskussion in einer Bar als nicht.
Was getan werden muss, ist, Ihre Anwendungsebenen klar zu definieren und diese Grenzen nicht zu überschreiten. Gespeicherte Prozeduren haben mehrere Vor- und Nachteile gegenüber Abfragen außerhalb der Datenbank.

Vorteil 1:Stored Procedures sind modular aufgebaut. Dies ist aus wartungstechnischer Sicht eine gute Sache. Wenn in Ihrer Anwendung Abfrageprobleme auftreten, werden Sie wahrscheinlich zustimmen, dass es viel einfacher ist, eine gespeicherte Prozedur zu beheben als eine eingebettete Abfrage, die in vielen Zeilen GUI-Code verborgen ist.

Vorteil 2:Stored Procedures sind abstimmbar. Indem Sie Prozeduren haben, die die Datenbankarbeit für Ihre Schnittstelle handhaben, beseitigen Sie die Notwendigkeit, den GUI-Quellcode zu ändern, um die Leistung einer Abfrage zu verbessern. An den gespeicherten Prozeduren können Änderungen vorgenommen werden – in Bezug auf Join-Methoden, unterschiedliche Tabellen usw. –, die für die Front-End-Schnittstelle transparent sind.

Vorteil 3:Gespeicherte Prozeduren abstrahieren oder trennen serverseitige Funktionen von der Clientseite. Es ist viel einfacher, eine GUI-Anwendung zu codieren, um eine Prozedur aufzurufen, als eine Abfrage durch den GUI-Code zu erstellen.

Vorteil 4:Gespeicherte Prozeduren werden normalerweise von Datenbankentwicklern/-administratoren geschrieben. Personen, die diese Rollen innehaben, sind in der Regel erfahrener im Schreiben effizienter Abfragen und SQL-Anweisungen. Dies gibt den GUI-Anwendungsentwicklern die Freiheit, ihre Fähigkeiten auf die funktionalen und grafischen Präsentationselemente der Anwendung anzuwenden. Wenn Ihre Mitarbeiter die Aufgaben ausführen, für die sie am besten geeignet sind, werden Sie letztendlich eine bessere Gesamtanwendung erstellen.

Angesichts all dessen gibt es mehrere Nachteile.

Nachteil 1:Anwendungen mit umfangreicher Geschäftslogik und -verarbeitung könnten den Server übermäßig belasten, wenn die Logik vollständig in gespeicherten Prozeduren implementiert wäre. Beispiele für diese Art der Verarbeitung umfassen Datenübertragungen, Datendurchquerungen, Datentransformationen und intensive Rechenoperationen. Sie sollten diese Art der Verarbeitung auf Geschäftsprozess- oder Datenzugriffslogikkomponenten verlagern, die eine besser skalierbare Ressource als Ihr Datenbankserver sind.

Nachteil 2:Speichern Sie nicht Ihre gesamte Geschäftslogik in gespeicherten Prozeduren. Die Wartung und Agilität Ihrer Anwendung wird zu einem Problem, wenn Sie die Geschäftslogik in der Sp-Sprache ändern müssen. Beispielsweise sollten ISV-Anwendungen, die mehrere RDBMS unterstützen, keine separaten gespeicherten Prozeduren für jedes System unterhalten müssen.

Nachteil 3:Das Schreiben und Verwalten gespeicherter Prozeduren ist meistens eine spezialisierte Fähigkeit, die nicht alle Entwickler besitzen. Diese Situation kann zu Engpässen im Zeitplan der Projektentwicklung führen.

Ich habe wahrscheinlich einige Vor- und Nachteile übersehen, fühlen Sie sich frei zu kommentieren.