sql >> Databáze >  >> RDS >> Mysql

Měli by vývojáři PHP používat uložené procedury MySQL?

Zda použít uložené procedury nebo ne, je spíše náboženská nebo politická diskuse v baru než ne.
Co je třeba udělat, je jasně definovat vrstvy vaší aplikace a nepřekračovat tyto hranice. Uložené procedury mají několik výhod a nevýhod oproti provádění dotazů mimo databázi.

Výhoda 1:Uložené procedury jsou modulární. Z hlediska údržby je to dobrá věc. Když se ve vaší aplikaci objeví problém s dotazem, pravděpodobně budete souhlasit s tím, že je mnohem snazší odstraňovat problémy s uloženou procedurou než s vloženým dotazem pohřbeným v mnoha řádcích kódu GUI.

Výhoda 2:Uložené procedury jsou laditelné. Tím, že procedury, které zpracovávají databázi, fungují pro vaše rozhraní, eliminujete potřebu upravovat zdrojový kód grafického uživatelského rozhraní pro zlepšení výkonu dotazu. V uložených procedurách lze provádět změny – pokud jde o metody spojení, různé tabulky atd. – které jsou pro rozhraní front-end transparentní.

Výhoda 3:Uložené procedury abstraktní nebo oddělené funkce na straně serveru od strany klienta. Je mnohem snazší kódovat GUI aplikaci pro volání procedury než vytvářet dotaz pomocí GUI kódu.

Výhoda 4:Uložené procedury obvykle píší vývojáři/administrátoři databází. Osoby zastávající tyto role jsou obvykle zkušenější v psaní efektivních dotazů a příkazů SQL. To umožňuje vývojářům GUI aplikací využít jejich dovednosti na funkčních a grafických prezentačních částech aplikace. Pokud necháte své lidi vykonávat úkoly, pro které se nejlépe hodí, pak nakonec vytvoříte lepší celkovou aplikaci.

Vzhledem k tomu všemu existuje několik nevýhod.

Nevýhoda 1:Aplikace, které zahrnují rozsáhlou obchodní logiku a zpracování, by mohly způsobit nadměrné zatížení serveru, pokud by byla logika implementována výhradně v uložených procedurách. Příklady tohoto typu zpracování zahrnují datové přenosy, procházení dat, transformace dat a intenzivní výpočetní operace. Tento typ zpracování byste měli přesunout do komponent obchodního procesu nebo logiky přístupu k datům, které jsou škálovatelnějším zdrojem než váš databázový server.

Nevýhoda 2:Nevkládejte veškerou svou obchodní logiku do uložených procedur. Údržba a agilita vaší aplikace se stává problémem, když musíte upravit obchodní logiku v jazyce Sp. Například aplikace ISV, které podporují více RDBMS, by neměly mít potřebu udržovat samostatné uložené procedury pro každý systém.

Nevýhoda 3:Psaní a údržba uložených procedur je nejčastěji specializovaná sada dovedností, kterou ne všichni vývojáři mají. Tato situace může představovat překážky v harmonogramu vývoje projektu.

Pravděpodobně jsem přehlédl nějaké výhody a nevýhody, neváhejte se vyjádřit.



  1. Soubor MySql mysql.h nebyl nalezen ve VS2008 C++ <Otázka pro začátečníky>

  2. Změna portu serveru postgres kontejnerů v Docker Compose

  3. Jak se připojit k instanci SQL Server pomocí ověřování Windows nebo ověřování SQL Server - SQL Server / Výukový program T-SQL, část 3

  4. MySQL:OMEZIT procentem počtu záznamů?