Re: Why are stored procedures looked on so negatively? - Mailing list pgsql-general

From Bèrto ëd Sèra
Subject Re: Why are stored procedures looked on so negatively?
Date
Msg-id CAKwGa_-5+tW0A=z6mVSfqHdm8dN6oskceQqMEk97-GQTFz_mEA@mail.gmail.com
Whole thread Raw
In response to Re: Why are stored procedures looked on so negatively?  (Some Developer <someukdeveloper@gmail.com>)
Responses Re: Why are stored procedures looked on so negatively?
List pgsql-general
Hi,

>the whole design of this application is asynchronous in nature.
Then you'll be MUCH better off with SPs, from an architectural POV, as you can basically design "building blocks" by initially just making SPs that deliver a mock result, and have the entire development of the app server being in dependent on the SQL development. This way none of the branches blocks the other (provided that you can actually freeze the design).

Cheers
Bèrto


On 25 July 2013 09:44, Some Developer <someukdeveloper@gmail.com> wrote:
On 25/07/13 08:14, Vincenzo Romano wrote:
2013/7/25 Luca Ferrari <fluca1978@infinito.it>:
On Thu, Jul 25, 2013 at 2:57 AM, Some Developer
<someukdeveloper@gmail.com> wrote:
The added advantage of removing load from the app servers so they can
actually deal with serving the app is a bonus.

Uhm...I don't know what application you are developing, but I don't
buy your explaination.
While it is true that you are moving CPU cycles from the application
server to the database server, you will probably end with the
application server waiting for the database to acknowledge (and
therefore not serving requests) and usually the computation is not
that heavy for an online transaction (it would be better to do it as
batch if that is really heavy). Therefore this is not an advantage for
me.
Again, the only reason to use database facilities (like stored
procedures) is to arm the database so that even a different
application/connection/user will interact following as much business
rules as possible.

Moreover, please also note that one reason developers tend to avoid
database facilities is that they are using some kind of
stack/orm/automagical library that does not allow the usage of deep
features in sake of portability.




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.


I don't understand the "time saving" argument: you have to implement
the logic either in the application or the database, so let's say the
time of the implementation is the same. The only advantage of the
database is the code reuse. But take into account that there are
drawbacks, like debugging that is not always so simple.

Luca

I could be wrong, but the main advantage you gain by using stored
procedures is what Luca says: unique data access interface.
Just that.
I don't think you'll save a single CPU cycle by moving logic from
"application" to "DB" (or the other way around).
That logic need to be implemented (and run) on either part.
The only saving would happen if you push the logic straight to the client.
And keep in mind than not all PLs are the same and have the same effectiveness.
So, for example, instead of INSERTing rows from program, you could
SELECT from a stored procedure which will do the INSERT possibly with
the very same checks you would do in the application. Only put
together in a single place. The stored procedure.

Finally, I fear this is kind of "religion" war. So feel free to follow
any or establish your own.

The bottom line here is: PLs are OK. It just depends on what you do and how.


When I was talking about improving speed I was talking about reducing load on the app servers by putting more of the work load on the database server. I know that it won't actually save CPU cycles (one of the machines has to do it) but it will save load on the app servers. As I said above using the asynchronous abilities of libpq helps keep the app servers serving requests whilst the database gets on with its tasks.

In fact the whole design of this application is asynchronous in nature.



--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



--
==============================
If Pac-Man had affected us as kids, we'd all be running around in a darkened room munching pills and listening to repetitive music.

pgsql-general by date:

Previous
From: Some Developer
Date:
Subject: Re: Why are stored procedures looked on so negatively?
Next
From: Samrat Revagade
Date:
Subject: Re: postgresql93-devel-9.3beta2-1PGDG.rhel5.x86_64 missed pg_config