pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
Design Q.:logic in app or db?
3+ messages / 3 participants
[nested] [flat]

* Design Q.:logic in app or db?
@ 2003-02-26 15:32 george young <gry@ll.mit.edu>
  2003-02-26 18:25 ` Re: Design Q.:logic in app or db? Josh Berkus <josh@agliodbs.com>
  2003-02-26 19:58 ` Re: Design Q.:logic in app or db? Achilleus Mantzios <achill@matrix.gatewaynet.com>
  0 siblings, 2 replies; 3+ messages in thread

From: george young @ 2003-02-26 15:32 UTC (permalink / raw)
  To: pgsql-sql

I have general design question about Postgres usage:  How does one decide
how much, and what parts of logic should go in DB rules, triggers,
functions, constraints etc, versus what should go in the application? 

I see postings here from people who obviously have a lot of domain
logic in the DB side.  I currently have almost none.  I plan to set up
a bunch of RI constraints to keep things clean and consistant, but what
about logic that implements frequent domain operations?

Brief sketch of my project: 2 developers, 4k lines of python(gtk, pygres),
2 main GUI user apps and a few read-only scripts for web display, 
50 concurrent users(all local), DB performance important but not currently
a problem.

The main thing not done yet is to facilitate ad-hoc queries 
(via odbc excel etc.) from db-naive users:  maybe restructuring the
db to make it simpler, maybe views and functions... The data is
somewhat complex in structure.

-- George
-- 
 I cannot think why the whole bed of the ocean is
 not one solid mass of oysters, so prolific they seem. Ah,
 I am wandering! Strange how the brain controls the brain!
	-- Sherlock Holmes in "The Dying Detective"



^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: Design Q.:logic in app or db?
  2003-02-26 15:32 Design Q.:logic in app or db? george young <gry@ll.mit.edu>
@ 2003-02-26 18:25 ` Josh Berkus <josh@agliodbs.com>
  1 sibling, 0 replies; 3+ messages in thread

From: Josh Berkus @ 2003-02-26 18:25 UTC (permalink / raw)
  To: gry@ll.mit.edu; pgsql-sql

George,

> I have general design question about Postgres usage:  How does one decide
> how much, and what parts of logic should go in DB rules, triggers,
> functions, constraints etc, versus what should go in the application?

Ideally, this should be done strictly on the basis of carefully planned design 
architecture, where each business rule is implemented at the application 
level where it is most effective, such as referential data integrity in the 
database and security in the middleware.

Realistically, business logic tends to be implemented in the layer where you 
have the most programming expertise.   The people on this list are often 
expert DBAs, so they implement as much business logic as possible in the 
database in the form of views, triggers, and rules.   However, I"ve seen 
plenty of shops with multiple crackerjack Java programmers and a weak DBA 
implementing all of their business logic in the middleware.  

> The main thing not done yet is to facilitate ad-hoc queries
> (via odbc excel etc.) from db-naive users:  maybe restructuring the
> db to make it simpler, maybe views and functions... The data is
> somewhat complex in structure.

This desired feature would argue strongly in favor of putting as much business 
logic as possibly in your database in the form of views and rules.   If users 
can bypass the interface and middleware, you cannot rely on it to enforce 
data integrity and access control.

-- 
Josh Berkus
josh@agliodbs.com
Aglio Database Solutions
San Francisco



^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: Design Q.:logic in app or db?
  2003-02-26 15:32 Design Q.:logic in app or db? george young <gry@ll.mit.edu>
@ 2003-02-26 19:58 ` Achilleus Mantzios <achill@matrix.gatewaynet.com>
  1 sibling, 0 replies; 3+ messages in thread

From: Achilleus Mantzios @ 2003-02-26 19:58 UTC (permalink / raw)
  To: george young <gry@ll.mit.edu>; +Cc: pgsql-sql

On Wed, 26 Feb 2003, george young wrote:

> I have general design question about Postgres usage:  How does one decide
> how much, and what parts of logic should go in DB rules, triggers,
> functions, constraints etc, versus what should go in the application?
>
> I see postings here from people who obviously have a lot of domain
> logic in the DB side.  I currently have almost none.  I plan to set up
> a bunch of RI constraints to keep things clean and consistant, but what
> about logic that implements frequent domain operations?
>
> Brief sketch of my project: 2 developers, 4k lines of python(gtk, pygres),
> 2 main GUI user apps and a few read-only scripts for web display,
> 50 concurrent users(all local), DB performance important but not currently
> a problem.
>
> The main thing not done yet is to facilitate ad-hoc queries
> (via odbc excel etc.) from db-naive users:  maybe restructuring the
> db to make it simpler, maybe views and functions... The data is
> somewhat complex in structure.

If your column names make sense you could expose table's structure
using metadata of your favorite driver or direct sql calls to system
tables.

Also you could install a search engine on your site, and have
all these "adhoc" queries predone and indexed.

>
> -- George
> --
>  I cannot think why the whole bed of the ocean is
>  not one solid mass of oysters, so prolific they seem. Ah,
>  I am wandering! Strange how the brain controls the brain!
> 	-- Sherlock Holmes in "The Dying Detective"
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

==================================================================
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
Nikis 4, Glyfada
Athens 16610
Greece
tel:    +30-10-8981112
fax:    +30-10-8981877
email:  achill@matrix.gatewaynet.com
        mantzios@softlab.ece.ntua.gr




^ permalink  raw  reply  [nested|flat] 3+ messages in thread


end of thread, other threads:[~2003-02-26 19:58 UTC | newest]

Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2003-02-26 15:32 Design Q.:logic in app or db? george young <gry@ll.mit.edu>
2003-02-26 18:25 ` Josh Berkus <josh@agliodbs.com>
2003-02-26 19:58 ` Achilleus Mantzios <achill@matrix.gatewaynet.com>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox