[SQL] Query in database/Nut van Stored Procedures*

Pagina: 1
Acties:
  • 538 views sinds 30-01-2008
  • Reageer

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 16:02

Erhnam

het Hardware-Hondje :]

Topicstarter
Sinds een poosje ben ik bezig met ASP.Net en Sql en nu hoorde ik iemand zeggen: "van dat los je dan toch op door je sql-query in je database te zetten?" Dit vind ik wel een interessant onderwerp en ik ik ging meteen op zoek.. maar eigenlijk zonder resultaat.. Ik vroeg mij daarom het volgende af:

- Wat zijn de voordelen/extra mogelijkheden van je sql-query in de database te zetten, boven het van in je pagina ?

- Heeft deze techniek ook een speciale naam of term? Zodat ik er wat meer informatie over kan vinden.. Zoeken op 'Query into database' geeft niet echt een uitkomst.

- Hoe werkt dit precies ? Misschien kunnen mensen mij wat voorbeelden geven of hoe ik hier op moet zoeken ?

http://www.xbmcfreak.nl/


  • Peetman
  • Registratie: Oktober 2001
  • Laatst online: 14:57

Peetman

Tjah....

Als je de query in je database zet kan je deze vanuit elke pagina aanroepen -> kan copy-paste werk schelen.
Naam is volgens mij stored procedures, of gewoon query's in access.

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 17-04 23:50

Greyfox

MSX rulez

Ik denk ook dat diegene Stored Procedures of wellicht User defined functions bedoelde.

MSX 2 rulez more


  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Volgens mij heb jij het over Stored Procedures. Hierbij definieer je in de database een stuk SQL dat je van buiten kunt aanroepen met een naam en eventueel parameters. Voordeel hiervan is dat de database de query 'kent' en dus in staat is om goed te cachen.

With the light in our eyes, it's hard to see.


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 04-02 22:19

Goodielover

Only The Best is Good Enough.

Niet alleen dat maar je schermt de database complexiteit af van je UI. En de text over het (inter)net(werk) is kleiner en dus sneller.

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
Dat zijn idd Stored Procedures waar je het over hebt.

De voordelen:
- Door stored procedures te gebruiken, maak je gebruik van de kracht van het DBMS. Een SP is/kan sneller zijn dan een gewone query.
- Mbhv SP's kan je bijhorende SQL statements groeperen (bv. 3 queries die altijd samen moeten uitgevoerd worden, in 1 SP). Hierdoor heb je een betere performance aangezien je maar 1x naar de databank moet connecteren voor de 3 statements uit te voeren
- Security: Je kunt een betere security toepassen. Je geeft de gebruikers vrijwel geen rechten op de databank. De enige rechten die je geeft aan de gebruikers is het uitvoeren van SP's.
- Indien er aanpassingen moeten gebeuren aan het datamodel, hoef je enkel de SP's aan te passen. Indien je geen gebruik maakt van SP's, dan moet je al uw programma's overlopen en gaan kijken welke queries je moet aanpassen + uw programma's opnieuw compileren.

https://fgheysels.github.io/


Verwijderd

Nadeel van SP's is dat je business logica buiten je programma code haalt.

  • watzie
  • Registratie: Juni 2001
  • Laatst online: 21-04 07:06
Verwijderd schreef op 22 november 2002 @ 07:55:
Nadeel van SP's is dat je business logica buiten je programma code haalt.
Da's natuurlijk je reinste flauwekul. Het is maar net wat je erin zet... de sp zou normaliter onder de noemer 'data logica' vallen. Bovendien worden sp's hier in de zin van query gebruikt daar kun je dus van alles mee doen.

Bijkomend voordeel van queries (danwel business/data logica) als sp opslaan is dat je het daardoor juist NIET in je applicatie vastlegt. Dus geen nieuwe build hoeven maken van de verschillende apps die er gebruik van maken als je iets wilt veranderen: alleen de sp veranderen en tada alle apps die hem gebruiken zijn aangepast. Zeer aan te raden dus.

Verwijderd

watzie schreef op 22 november 2002 @ 08:02:
[...]
Da's natuurlijk je reinste flauwekul. Het is maar net wat je erin zet... de sp zou normaliter onder de noemer 'data logica' vallen. Bovendien worden sp's hier in de zin van query gebruikt daar kun je dus van alles mee doen.
Natuurlijk is het afhankelijk waarvoor je het gebruikt. En daar geef je ook precies aan wat ik wil aanduiden: Stored Procedures zijn niet alleen zegeningen. Er zijn situaties waarbij stored procedures een nadeel hebben. Om dat 'reinste flauwekul' te noemen vind ik wel wat kort door de bocht.
Bijkomend voordeel van queries (danwel business/data logica) als sp opslaan is dat je het daardoor juist NIET in je applicatie vastlegt. Dus geen nieuwe build hoeven maken van de verschillende apps die er gebruik van maken als je iets wilt veranderen: alleen de sp veranderen en tada alle apps die hem gebruiken zijn aangepast. Zeer aan te raden dus.
Hierbij ga je ervan uit dat je de database obstractie in de database wil leggen. Natuurlijk kan je net zo goed een abstractie op een ander nivo leggen, bijv. een web service die de database aanroept. In dit geval hoef je ook niet je applicaties te herbouwen, maar slechts de code van de webservice aan te passen.

Mijn bewering is dus dat er situaties zijn waarin Stored Procedures nadelen hebben. Zo programmeer je in een nieuwe taal (en iedere nieuwe taal binnen een project voegt complexiteit toe), moet je een nieuwe tool hebben (SQL Enterprise Manager o.i.d.), kan je deze niet geintergreerd debuggen met je ontwikkelomgeving (zoals Visual Studio.Net), etc.

Zo heb ik ook enkele keren in projecten gezien dat programmeurs allerlei problemen hadden met gebruik maken van stored procedures zonder te weten wat daarin gebeurde, en waarin een aangepaste stored procedure of zelfts een stukje code met SQL daarin een betere oplossing was geweest. Natuurlijk kan je beweren dat dit 'slechte programmeurs' waren, maar feit is: daar zijn er een heleboel van. Sowieso beperken programmeurs zich vaakt tot wat zij wel weten, en SP's kunnen daardoor tot problemen leiden.

Overigens, met de opkomst van .Net is Microsoft heel erg krachtig bezig om het gebruik van Stored Procedures te promoten. In veel punten ben ik het daar wel mee eens, maar soms ook niet, en lijkt het erop dat de performance nadelen die .Net is sommige situaties met zich meebrengt moeten worden gecompenseerd door maar zoveel mogelijk gebruik te maken van Stored Procures.

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
Verwijderd schreef op 22 November 2002 @ 08:34:

Zo programmeer je in een nieuwe taal (en iedere nieuwe taal binnen een project voegt complexiteit toe), moet je een nieuwe tool hebben (SQL Enterprise Manager o.i.d.), kan je deze niet geintergreerd debuggen met je ontwikkelomgeving (zoals Visual Studio.Net), etc.
Het zou de bedoeling zijn dat in latere versies van .NET en SQL Server je ook Stored Procedures in C# kunt programmeren. :Y)
Zo heb ik ook enkele keren in projecten gezien dat programmeurs allerlei problemen hadden met gebruik maken van stored procedures zonder te weten wat daarin gebeurde, en waarin een aangepaste stored procedure of zelfts een stukje code met SQL daarin een betere oplossing was geweest.
Wat je met een gewone SQL query kan schrijven, kan je ook in een SP stoppen.
Ik zie in dat geval dus geen extra voordeel van een gewone sql query tov een SP.
SP zijn meestal performanter dan gewone in-code queries.
Natuurlijk kan je beweren dat dit 'slechte programmeurs' waren, maar feit is: daar zijn er een heleboel van.
Een programmeur die niet weet wat hij doet is idd een slechte programmeur. ;)
Overigens, met de opkomst van .Net is Microsoft heel erg krachtig bezig om het gebruik van Stored Procedures te promoten. In veel punten ben ik het daar wel mee eens, maar soms ook niet, en lijkt het erop dat de performance nadelen die .Net is sommige situaties met zich meebrengt moeten worden gecompenseerd door maar zoveel mogelijk gebruik te maken van Stored Procures.


IMHO moet je in alle situaties zoveel mogelijk gebruik maken van SP's.... Zie de reeds door mij aangehaalde puntjes. :)

https://fgheysels.github.io/


Verwijderd

Het zou de bedoeling zijn dat in latere versies van .NET en SQL Server je ook Stored Procedures in C# kunt programmeren.
Zodra je vanuit je IDE (zoals Visual Studio.Net) in een bekende taal (zoals C#) SP kan ontwikkelen en debuggen, dan vallen alle bezwaren weg wat mij betreft.

Tot die tijd is het altijd gebruiken van stored procedures een technisch ideaal wat in praktijksituaties echter nogal eens tot problemen zal leiden, IMHO natuurlijk. ;)

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 04-02 22:19

Goodielover

Only The Best is Good Enough.

Een goede ontwikkelaar is een goed analyticus. De taal is minder van belang.
Het concept van de taal daarentgen is zeer van belang.
Het weghalen van business logica uit je UI is een trent die enorm in is.
Voor mij is een stored procedure of een RPC (naar een in C++/SQL-programma) conceptueel gelijk.

Een SP is net zo zeer een onderdeel van de applicatie als de UI. Dus de business logica verdwijnt niet uit je applicatie, maar alleen uit de UI en dat is met het realiseren van multi channel architecturen ook maar goed. Dan kan het in ieder gval niet zo zijn, dat je onbewust via een callcenter meer kan dan via een web site, omdat ze andere business logica gebruiken.

  • Morpheus_at_work
  • Registratie: December 2000
  • Nu online
is het misschien handig het grote [SQL] Stored Procedures topic te beginnen want loop soms tegen wat kleine dingen aan

iets met lenzen


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
Morpheus_at_work schreef op 22 november 2002 @ 11:02:
is het misschien handig het grote [SQL] Stored Procedures topic te beginnen want loop soms tegen wat kleine dingen aan


Grote topics zijn meestal niet handig nee.... :+ Die leiden gewoon tot onoverzichtelijkheid en op den duur gaat iedereen maar door elkaar blaten zonder dat men nog weet waar het precies over gaat.
* whoami is geen voorstander van 'grote algemene' topics in P&W

https://fgheysels.github.io/


  • Morpheus_at_work
  • Registratie: December 2000
  • Nu online
stel ik wil dit doen , dan krijg ik de error incorrect syntax near '@lines'

CREATE PROCEDURE [DBO].[sp_advertenties]
( @Lines int)
AS
SELECT TOP @Lines From Advertenties
GO

iets met lenzen


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
Morpheus_at_work schreef op 22 november 2002 @ 11:18:
stel ik wil dit doen , dan krijg ik de error incorrect syntax near '@lines'

CREATE PROCEDURE [DBO].[sp_advertenties]
( @Lines int)
AS
SELECT TOP @Lines From Advertenties
GO


Waarom open je daar geen nieuw topic voor? :/
Trouwens, waarom gebruik je die [ ] ?

code:
1
2
3
4
5
CREATE PROCEDURE sp_advertenties ( @lines INTEGER )
AS
BEGIN
  SELECT TOP @lines from advertenties
END

https://fgheysels.github.io/


Verwijderd

Goodielover schreef op 22 November 2002 @ 10:17:
Een goede ontwikkelaar is een goed analyticus. De taal is minder van belang.
Het concept van de taal daarentgen is zeer van belang.
Het weghalen van business logica uit je UI is een trent die enorm in is.
Voor mij is een stored procedure of een RPC (naar een in C++/SQL-programma) conceptueel gelijk.

Een SP is net zo zeer een onderdeel van de applicatie als de UI. Dus de business logica verdwijnt niet uit je applicatie, maar alleen uit de UI en dat is met het realiseren van multi channel architecturen ook maar goed. Dan kan het in ieder gval niet zo zijn, dat je onbewust via een callcenter meer kan dan via een web site, omdat ze andere business logica gebruiken.
Mijn stelling blijft: software ontwikkelen in 2 verschillende talen en 2 verschillende ontwikkelomgevingen is complexer dan software ontwikkelen in 1 taal en 1 omgeving. Door SPs te gebruiken introduceer je die extra complexiteit.

Ik zeg niets ten nadele van n-tier applicaties. Ik zeg ook niet dat SPs geen onderdeel van de applicatie zijn (ik zeg namelijk dat ze niet in de source code van het programma staan, maar in een andere omgeving, nl. je database manager). Ik zeg niet dat het gebruik van SPs slecht is. Ik zeg alleen dat er nadelen aan kleven, die niet onoverkomelijk zijn, of het gebruik van SPs zouden moeten tegenhouden. Ik zeg alleen dat de complicerende factor van SPs een nadeel is waar rekening mee gehouden moet worden.

In een ideale wereld is iedere een ontwikkeltaal slechts een dialect, en zou dat na een korte leercurve geen probleem meer moeten opleveren. In een ideale wereld zou het schrijven van code in een texteditor, compileren van een commandline, managenen van de database met een text only interface, debuggen met een aparte tool, etc, helemaal geen probleem moeten zijn. In een ideale wereld zijn er ook geen slechte programmeurs. In een ideale wereld hebben programma's geen bugs, want als je eenmaal iets geleerd hebt, waarom zou je het dan nog fout doen? Realiteit is echter anders. Iedere complicerende factor verhoogt de kans op fouten, en daar moet rekening mee gehouden worden.

Kortom: weerleg het feit dat een 2de taal en ontwikkelomgeving een complicerende factor is met een goed verhaal, of erken dat het gebruik van SPs een complicerende factor is.

/me denkt dat hij misschien te veel als een QA / Project Manager kijkt naar dit argument, waar anderen alleen naar de puur technische kant kijken.

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
[nohtml]
Verwijderd schreef op 22 November 2002 @ 11:25:
[...]

Mijn stelling blijft: software ontwikkelen in 2 verschillende talen en 2 verschillende ontwikkelomgevingen is complexer dan software ontwikkelen in 1 taal en 1 omgeving. Door SPs te gebruiken introduceer je die extra complexiteit.
Eigenlijk niet. Door SP's te gebruiken maak je een scheiding tussen je code en de database-logic. Hierdoor verminderd de complexiteit juist.
Ik vind dat gebruik maken van 2 verschillende talen het geheel niet gecompliceerder maakt. De quote 'The right tool for the right job' is hier zeker van toepassing.
Als jij je code volpropt met sql-query statements, dan komt dat jouw code niet ten goede, en wordt die code daar trouwens moeilijker aanpasbaar door.
Als je trouwens de exe dan door een hex-editor haalt, dan kan je gewoon alle queries zien staan.
Ik zeg alleen dat er nadelen aan kleven, die niet onoverkomelijk zijn, of het gebruik van SPs zouden moeten tegenhouden. Ik zeg alleen dat de complicerende factor van SPs een nadeel is waar rekening mee gehouden moet worden.
Alles heeft zijn voor- en nadelen. Alleen vind ik dat de 'nadelen' in dit geval zeker niet opwegen tegen de voordelen.
SP's zorgen er imho dus niet voor dat er meer complexiteit gecreeërd wordt. Integendeel zelfs.
In een ideale wereld is....
Een ideale wereld is een utopie.
Kortom: weerleg het feit dat een 2de taal en ontwikkelomgeving een complicerende factor is met een goed verhaal, of erken dat het gebruik van SPs een complicerende factor is.
waarom zou een 2de taal een complicerende factor zijn? Zoals ik al eerder aanhaalde, maak gebruik van de juiste taal/tool.
Als jij een nagel in een plank hout wilt kloppen, ga je toch ook gebruik maken van een hamer en niet van een zaag of schroevendraaier?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
Trouwens, als jij zegt dat het gebruiken van SP's extra complexiteit levert, dan zorgt het gebruik van SQL queries in je code ook extra complexiteit. SQL is nl. ook een extra taal.

Wat is een SP meer dan SQL queries met eventueel wat extra taal-elementen waarmee je de program flow kan controleren?
Trouwens, stel je hebt volgende situatie:

- Je haalt een waarde op uit de db.
- Is die waarde A, doe dan query 1, is die waarde B, doe dan query 2.

Als je dit niet met SP's doet, moet je 2x naar de dbms gaan. Mbhv een SP kan je dat allemaal in 1 SP stoppen, waardoor je maar 1x naar de DB moet gaan. Hierdoor verminderd de complexiteit van je code, verhoogt de performance en zorg je voor een betere security.

https://fgheysels.github.io/


Verwijderd

whoami schreef op 22 November 2002 @ 11:35:
[nohtml]
[...]
Eigenlijk niet. Door SP's te gebruiken maak je een scheiding tussen je code en de database-logic. Hierdoor verminderd de complexiteit juist.
Het maken van scheiding tussen verschillende soorten code is binnen een ontwikkeltaal/-omgeving vaak goed mogelijk. Denk aan functies of classes. Daar heb je niet specifiek SPs voor nodig
Ik vind dat gebruik maken van 2 verschillende talen het geheel niet gecompliceerder maakt. De quote 'The right tool for the right job' is hier zeker van toepassing.
Hier zit een kern van waarheid in. In sommige situaties is code dat in een ontwikkelomgeving 100 regels zou kosten in een SP in 20 regels op te lossen.
Als jij je code volpropt met sql-query statements, dan komt dat jouw code niet ten goede, en wordt die code daar trouwens moeilijker aanpasbaar door.
Dat zie ik niet. Waarom zou mijn code moeilijker aanpasbaar worden? Mijns inziens is het juist makkelijk om zowel mijn SQL code als mijn andere code in 1 omgeving en 1 taal te bewerken. Natuurlijk moet je in de code een juiste scheiding aanbrengen, maar het verschil in onderhoudbaarheid tussen een functie waarin je een SP aanroept of een SQL query uitvoert zie ik niet. Nadeel voor het aanpassen van een SP is juist dat je een andere ontwikkelomgeving moet openen om dat te doen.
Als je trouwens de exe dan door een hex-editor haalt, dan kan je gewoon alle queries zien staan.
En wat is daar erg aan?
Alles heeft zijn voor- en nadelen. Alleen vind ik dat de 'nadelen' in dit geval zeker niet opwegen tegen de voordelen.
Voor de 3e of 4e keer: ik zeg niet dat er geen voordelen zijn, sterker nog, daarin ben ik het met de eerdere opmerkingen eens. Ik zeg alleen dat er een nadeel is, wat je niet zou moeten tegenhouden, maar waar je wel rekening mee moet houden.
[...]
waarom zou een 2de taal een complicerende factor zijn? Zoals ik al eerder aanhaalde, maak gebruik van de juiste taal/tool.
Jij hebt ongetwijfeld weleens in ASP met VBScript geprogrammeerd, en vervolgens ook wat JavaScript functies in de pagina gezet. Plots zet je Dim in je JavaScript, en vergeet je de puntkomma's, of andersom bij VBScript. Ergo: je moet nadenken over welke taal je gebruikt, en switchen levert problemen op. Met Stored Procedures moet je dan ook de hele tijd heen en weer switchen tussen editors.

Ook is het moeilijker overzicht te krijgen in wat voor functionaliteit je al ontwikkeld hebt. Ik weet niet of je veel ervaring hebt in het werken met teams van ontwikkelaars, maar in dat geval zie je vaak dat er bijvoorbeeld dubbele stored procedures worden gemaakt omdat niet duidelijk is wat welke stored procedure doet, of dat stored procedures worden aangepast voor doeleinden waarvoor ze niet bedoeld zijn. Op het eerste gezicht lijkt dat 'stom', maar dat gebeurt gewoon.
Als jij een nagel in een plank hout wilt kloppen, ga je toch ook gebruik maken van een hamer en niet van een zaag of schroevendraaier?
'The right tool for the job' gaat deels op, maar dit is een oversimplificatie. Tools zoals een hamer of een zaag hebben geen leercurve en zijn makkelijk conceptueel van elkaar te scheiden. Niemand zal een hamer voor een zaag zien en andersom.
whoami schreef op 22 november 2002 @ 11:52:
Trouwens, als jij zegt dat het gebruiken van SP's extra complexiteit levert, dan zorgt het gebruik van SQL queries in je code ook extra complexiteit. SQL is nl. ook een extra taal.

Wat is een SP meer dan SQL queries met eventueel wat extra taal-elementen waarmee je de program flow kan controleren?
Trouwens, stel je hebt volgende situatie:

- Je haalt een waarde op uit de db.
- Is die waarde A, doe dan query 1, is die waarde B, doe dan query 2.

Als je dit niet met SP's doet, moet je 2x naar de dbms gaan. Mbhv een SP kan je dat allemaal in 1 SP stoppen, waardoor je maar 1x naar de DB moet gaan. Hierdoor verminderd de complexiteit van je code, verhoogt de performance en zorg je voor een betere security.
SQL is inderdaad ook een extra taal en dus een complicerende factor. Om SQL kan je vaak niet heen, waar je dat met SP's wel kan. En de control flow elementen zijn inderdaad het enige 'extra' voor SP. En ook je argumenten over security en performance spreek ik niet tegen.

Mijn advies: lees nogmaals het dik gedrukte deel hierboven, dan laat ik het verder hierbij voor deze discussie, want ik ben alleen maar mijn argumenten aan het herhalen en uitbreiden, en jij ook. ;)

[ Voor 17% gewijzigd door Verwijderd op 22-11-2002 12:07 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
Verwijderd schreef op 22 November 2002 @ 12:00:
[...]

Het maken van scheiding tussen verschillende soorten code is binnen een ontwikkeltaal/-omgeving vaak goed mogelijk. Denk aan functies of classes. Daar heb je niet specifiek SPs voor nodig
SP's kun je niet vergelijken met functies of classes. Een SP gaat enkel bewerkingen doen op een databank.
Hier zit een kern van waarheid in. In sommige situaties is code dat in een ontwikkelomgeving 100 regels zou kosten in een SP in 20 regels op te lossen.
+ dat het performanter zal zijn.
Dat zie ik niet. Waarom zou mijn code moeilijker aanpasbaar worden?
Omdat jij, als je datamodel verander, al jouw source-files zult moeten overlopen, alle sql-statements zult moeten controleren en eventueel aanpassen en al je programma's opnieuw moet compileren.
Als je gebruik maakt van SP's, pas je gewoon je SP's aan en that's it.
Mijns inziens is het juist makkelijk om zowel mijn SQL code als mijn andere code in 1 omgeving en 1 taal te bewerken.
Maar SQL is een andere taal dan de taal waarin je jouw business logic schrijft. Trouwens, de manier om een SP aan te roepen of om een plain sql-query uit te voeren is identiek.
Nadeel voor het aanpassen van een SP is juist dat je een andere ontwikkelomgeving moet openen om dat te doen.
't Is maar wat jij een nadeel vind en of je bereid bent om eventuele opofferingen te maken om gebruik te kunnen maken van bepaalde voordelen die minstens opwegen tegen die nadelen.
En wat is daar erg aan?
Zoals ik eerder al zei: security.
Je wilt niet dat de tabelnamen van jouw databank bekend zijn. Het uitvoeren van SQL queries in je code implliceert ook dat de gebruiker het recht moet hebben om queries uit te voeren. Als hij toegang heeft tot de databank kan hij, als hij de tabelnamen weet dus gewoon willekeurige queries gaan uitvoeren en/of data gaan manipuleren.
Doe je het met SP's, dan hoef je de gebruiker enkel het recht te geven om SP's uit te voeren. De queries die mogen uitgevoerd worden liggen vast in die SP's.
Voor de 3e of 4e keer: ik zeg niet dat er geen voordelen zijn, sterker nog, daarin ben ik het met de eerdere opmerkingen eens. Ik zeg alleen dat er een nadeel is, wat je niet zou moeten tegenhouden, maar waar je wel rekening mee moet houden.
Dat weet ik wel. :)
Jij hebt ongetwijfeld weleens in ASP met VBScript geprogrammeerd, en vervolgens ook wat JavaScript functies in de pagina gezet. Plots zet je Dim in je JavaScript, en vergeet je de puntkomma's, of andersom bij VBScript. Ergo: je moet nadenken over welke taal je gebruikt, en switchen levert problemen op.
Tja, dat is een miniem probleem. Je compiler zal je wel zeggen dat iets niet kan, en dan moet je euro wel vallen. Je moet er gewoon met je gedachten blijblijven.
Als je weet dat je met T-SQL bezig bent, dan zal je wel geen C# / pascal / C++ code ertussen schrijven.
Met Stored Procedures moet je dan ook de hele tijd heen en weer switchen tussen editors.
Tja, als jij een document typed en een spreadsheet hebt, moet je ook wel eens switchen.
Ook is het moeilijker overzicht te krijgen in wat voor functionaliteit je al ontwikkeld hebt. Ik weet niet of je veel ervaring hebt in het werken met teams van ontwikkelaars, maar in dat geval zie je vaak dat er bijvoorbeeld dubbele stored procedures worden gemaakt omdat niet duidelijk is wat welke stored procedure doet, of dat stored procedures worden aangepast voor doeleinden waarvoor ze niet bedoeld zijn. Op het eerste gezicht lijkt dat 'stom', maar dat gebeurt gewoon.
Dat is stom idd.
Er moet gewoon voldoende communicatie zijn tussen de verschillende teams en ontwikkelaars. Er moeten duidelijke afspraken zijn wie wat doet en er moeten consistente naming-conventions zijn. Dan kun je al zo'n dingen vermijden.
Als je trouwens een SP schrijft en die blijkt fout te zijn, dan moet je maar 1 SP aan passen. Schrijf je een query die bepaalde data ophaalt en gebruik je die als plain SQL in je code, dan mag je al jouw code gaan overlopen en gaan zoeken of hij juist is of niet. (Trouwens, geen gebruik maken van SP's zorgt er ook voor dat code gedupliceerd wordt).
'The right tool for the job' gaat deels op, maar dit is een oversimplificatie. Tools zoals een hamer of een zaag hebben geen leercurve en zijn makkelijk conceptueel van elkaar te scheiden. Niemand zal een hamer voor een zaag zien en andersom.
Het is idd misschien wel wat simpel, maar to the point.
Mijn advies: lees nogmaals het dik gedrukte deel hierboven, dan laat ik het verder hierbij voor deze discussie, want ik ben alleen maar mijn argumenten aan het herhalen en uitbreiden, en jij ook. ;)

Ik wil je gewoon doen inzien dat het nadeel dat jij vernoemt eigenlijk geen nadeel mag zijn, en men wel eens verder moet kijken naar wat mogelijk is.
Ik gebruikte vroeger ook nauwelijks/geen SP's, maar ben nu volledig 'bekeerd'.
Verder snap ik jouw punt wel hoor. ;)

https://fgheysels.github.io/


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 04-02 22:19

Goodielover

Only The Best is Good Enough.

Wellicht dat de grootte van het te ontwikkelen systeem er ook nog toe doet.
Ik ben PL geweest van een project waar 4 database mensen en 4 GUI mensen een systeem moesten ontwikkelen. Ieder hoefde dus maar 1 omgeving te kennen. De GUI-mensen hoefden dus zelfs geen SQL te kennen. Zij hoefden zich alleen zorgen te maken over de interactie met de gebruiker. De mensen die met PL-SQL de SP's en de tabellen maakten, konden bij gelijkblijvende externe functionaliteit gemakkelijk zich op performance en functionaliteit richten. Dit ging echt perfect.
GUI mensen zijn namelijk niet per se ook database mensen. Zie bijvoorbeeld al het OO-concept en het relationele concept als twee omgevingen die je goed moet snappen.

Bij een klein project dat je in je eentje doet kan ik me voorstellen dat je gewoon alles in de zelfde omgeving doet. Dan wegen de bewaren van MrX ook wat zwaarder.

[ Voor 11% gewijzigd door Goodielover op 22-11-2002 14:54 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
Titel ff gemod. :Y)

https://fgheysels.github.io/


Verwijderd

sp's worden gecompileerd, wat dus performanvce winst oplevert, zolang de indexen nog goed zijn...

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
En indexen kun je updaten. :Y)

https://fgheysels.github.io/


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 04-02 22:19

Goodielover

Only The Best is Good Enough.

Verwijderd schreef op 22 november 2002 @ 16:39:
sp's worden gecompileerd, wat dus performanvce winst oplevert, zolang de indexen nog goed zijn...
[mod-mode]
Jammer dat dit al gezegd was, of had je dat nog niet gezien?
[/mod-mode]

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 17:05
Eigenlijk heb je dus gewoon een editor nodig die de query's laat zien als je aan het coden bent, en ze vervangt door verwijzingen als je compiled?

  • tijn
  • Registratie: Februari 2000
  • Laatst online: 22-03 21:36
Nadeel van SP's is dat je business logica buiten je programma code haalt.
Ik vind dit ook wel een punt van aandacht. Je ziet wel eens dat ontwikkelaars met een grote liefde voor databases zo veel mogelijk functionaliteit in de SP's stoppen. Het performed vaak als een gek, dus iedereen blij. Alleen zijn die supergeavanceerde SP's vaak lastig te onderhouden en is een mooi applicatiedesign vaak ook ver te zoeken.
Mijn bewering is dus dat er situaties zijn waarin Stored Procedures nadelen hebben. Zo programmeer je in een nieuwe taal (en iedere nieuwe taal binnen een project voegt complexiteit toe), moet je een nieuwe tool hebben (SQL Enterprise Manager o.i.d.), kan je deze niet geintergreerd debuggen met je ontwikkelomgeving (zoals Visual Studio.Net), etc.
Laat je nou net met VS.NET volledig geintegreerd kunnen ontwikkelen en debuggen ;). Wanneer je de applicatie debugt kun je doorsteppen tot in je SP.
Daarnaast kun je SP's ook met de Query Analyzer (SQL 2000) debuggen.

Cuyahoga .NET website framework

Pagina: 1