From: | Some Developer <someukdeveloper(at)gmail(dot)com> |
---|---|
To: | "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Why are stored procedures looked on so negatively? |
Date: | 2013-07-25 00:57:27 |
Message-ID: | 51F077F7.4060905@googlemail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 24/07/13 20:33, Jeff Janes wrote:
> On Tue, Jul 23, 2013 at 5:29 PM, Some Developer
> <someukdeveloper(at)gmail(dot)com> wrote:
>> I've done quite a bit of reading on stored procedures recently and the
>> consensus seems to be that you shouldn't use them unless you really must.
>
> I think that mostly speaks to the method you used for finding things
> to read. This is a well known holy war.
>
>>
>> I don't understand this argument.
>
> That is a conclusion, not an argument. You didn't give us the
> argument behind the conclusion!
>
>> If you implement all of your logic in the
>> application then you need to make a network request to the database server,
>> return the required data from the database to the app server, do the
>> processing and then return the results. A stored procedure is going to be a
>> lot faster than that even if you just take away network latency / transfer
>> time.
>
> Sorry, I don't get this at all. Whether you use a stored procedure or
> not, the database needs to be told what to do by the outside word, and
> needs to return the result to the outside world. So you can not get
> rid of that minimal round trip, no matter what, unless your database
> becomes solipsist. Now, if the application-side code needs to make a
> lot of round trips to the database in order to implement one logical
> unit of work, that is a different matter and stored procedures could
> help there (but so could consolidating the round trips into a fewer
> number of more sophisticated SQL--which is often but not always
> possible).
The reason that I think stored procedures and triggers are the correct
way to go for my database is because I need certain actions to be
performed when data is inserted, updated and deleted. Doing that in the
app layer would be a waste of time since the database already provides a
very well tested set of functionality to handle this.
The added advantage of removing load from the app servers so they can
actually deal with serving the app is a bonus.
I'm not planning on creating a complex application in the database in
its own right, just augmenting what is already available with a few time
savers and (a couple of) speed optimisations for commonly carried out tasks.
> One of the very annoying uses of stored procedures I see is insisting
> that all access goes through them, with no direct access to the
> underlying tables via ordinary SQL. They have now replaced one of the
> most successful, powerful, and well-known data access APIs ever, with
> some home grown API that is probably half-baked. Sometimes a case can
> be made for that (particularly for large bureaucratic organizations,
> or intensely regulated ones) , but don't expect it to be free of
> consequences.
I certainly won't be doing that. All the queries will be accessing the
tables directly and the stored procedures will only fire when a trigger
goes off. This is more about have async actions take place when a user
creates / edits / deletes a certain type of action. The added advantage
that triggers work well with the PostgreSQL transaction system is a real
bonus.
>> I'm in the middle of building a database and was going to make extensive use
>> of stored procedures and trigger functions because it makes more sense for
>> the actions to happen at the database layer rather than in the app layer.
>>
>> Should I use them or not?
>
> Are you a one man shop, and always will be? If so, i think it is
> mostly a matter of what you prefer developing in, and what you are
> most used to developing in. If you hire someone to help you out, do
> you want that person to be able to do interesting (and perhaps bad)
> things with the database through SQL, or do you want them to be mostly
> restricted to changing the font and color of the web page showing the
> results? A case could be made for either way.
>
> Cheers,
>
> Jeff
>
Thanks for your input. Hopefully I've explained in a bit more detail
what I am trying to do.
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Bartley | 2013-07-25 06:44:48 | Rule Question |
Previous Message | devonline | 2013-07-25 00:53:56 | Re: Tablespace on Postgrsql |