Of je Stored Procedures wel of niet moet gebruiken, is meer een religieuze of politieke discussie in een bar dan niet.
Wat moet gebeuren, is je applicatielagen duidelijk definiëren en niet over die grenzen stappen. Opgeslagen procedures hebben verschillende voor- en nadelen ten opzichte van het uitvoeren van query's buiten de database.
Voordeel 1:Opgeslagen procedures zijn modulair. Dit is een goede zaak vanuit het oogpunt van onderhoud. Als er zich problemen voordoen met query's in uw toepassing, bent u het er waarschijnlijk mee eens dat het veel gemakkelijker is om problemen met een opgeslagen procedure op te lossen dan een ingesloten query die is begraven in vele regels GUI-code.
Voordeel 2:Opgeslagen procedures zijn afstembaar. Door procedures te hebben die het databasewerk voor uw interface afhandelen, elimineert u de noodzaak om de GUI-broncode aan te passen om de prestaties van een query te verbeteren. Er kunnen wijzigingen worden aangebracht in de opgeslagen procedures - in termen van join-methoden, verschillende tabellen, enz. - die transparant zijn voor de front-end-interface.
Voordeel 3:Opgeslagen procedures abstraheren of scheiden server-side functies van de client-side. Het is veel gemakkelijker om een GUI-toepassing te coderen om een procedure aan te roepen dan om een query op te bouwen via de GUI-code.
Voordeel 4:Opgeslagen procedures worden meestal geschreven door databaseontwikkelaars/beheerders. Personen met deze rollen zijn doorgaans meer ervaren in het schrijven van efficiënte queries en SQL-statements. Dit geeft de ontwikkelaars van GUI-applicaties de vrijheid om hun vaardigheden te gebruiken op de functionele en grafische presentatiestukken van de applicatie. Als u uw mensen de taken laat uitvoeren waarvoor zij het meest geschikt zijn, levert u uiteindelijk een betere algehele applicatie op.
Met dat in gedachten zijn er verschillende nadelen.
Nadeel 1:Toepassingen die uitgebreide bedrijfslogica en verwerking vereisen, kunnen de server overmatig belasten als de logica volledig in opgeslagen procedures zou worden geïmplementeerd. Voorbeelden van dit type verwerking zijn onder meer dataoverdracht, datatraversals, datatransformaties en intensieve rekenbewerkingen. U moet dit type verwerking verplaatsen naar logische componenten voor bedrijfsprocessen of gegevenstoegang, die een meer schaalbare bron zijn dan uw databaseserver.
Nadeel 2:stop niet al uw bedrijfslogica in opgeslagen procedures. Onderhoud en de wendbaarheid van uw applicatie wordt een probleem wanneer u bedrijfslogica in Sp-taal moet wijzigen. ISV-toepassingen die meerdere RDBMS ondersteunen, hoeven bijvoorbeeld geen afzonderlijke opgeslagen procedures voor elk systeem te onderhouden.
Nadeel 3:Het schrijven en onderhouden van opgeslagen procedures is meestal een gespecialiseerde vaardigheden die niet alle ontwikkelaars bezitten. Deze situatie kan leiden tot knelpunten in het projectontwikkelingsschema.
Ik heb waarschijnlijk een aantal voor- en nadelen gemist, voel je vrij om commentaar te geven.