pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Jim C. Nasby <jnasby@pervasive.com>
To: Craig A. James <cjames@modgraph-usa.com>
Cc: PFC <lists@peufeu.com>
Cc: Michael Glaesemann <grzm@myrealbox.com>
Cc: Rodrigo Sakai <rodrigo.sakai@zanthus.com.br>
Cc: pgsql-performance@postgresql.org
Subject: Re: FOREIGN KEYS  vs  PERFORMANCE
Date: Wed, 12 Apr 2006 10:39:51 -0500
Message-ID: <20060412153951.GH49405@pervasive.com> (raw)
In-Reply-To: <443D127D.2070601@modgraph-usa.com>
References: <001301c65d9c$08884ef0$4700a8c0@TREEZANTHUS>
	<72C39159-1A4B-4595-A978-1DF57AD42527@myrealbox.com>
	<op.s7vv4ex2cigqcu@apollo13>
	<443D127D.2070601@modgraph-usa.com>

On Wed, Apr 12, 2006 at 07:45:17AM -0700, Craig A. James wrote:
> All good advice, but... there are no absolutes in this world.  
> Application-enforced referential integrity makes sense if (and probably 
> ONLY if):
> 
> 1. You have only one application that modifies the data.  (Otherwise, you 
> have to duplicate the rules across many applications, leading to a 
> code-maintenance nightmare).

You forgot something:

1a: You know that there will never, ever, ever, ever, be any other
application that wants to talk to the database.

I know tons of people that get burned because they go with something
that's "good enough for now", and then regret that decision for years to
come.

> 2. If your application crashes and leaves a mess, it's not a catastrophe, 
> and you have a good way to clean it up.  For example, a bank shouldn't do 
> this, but it might be OK for a computer-aided-design application, or the 
> backend of a news web site.
> 
> 3. You have application-specific knowledge about when you can skip 
> referential integrity and thereby greatly improve performance.  For 
> example, you may have batch operations where large numbers of rows are 
> temporarily inconsistent.
> 
> If your application doesn't meet ALL of these criteria, you probably should 
> use the database for referential integrity.
> 
> Craig
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
> 
>               http://www.postgresql.org/docs/faq
> 

-- 
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461



view thread (19+ messages)  latest in thread

Message-ID: <20060412153951.GH49405@pervasive.com>
Permalink:  ../20060412153951.GH49405@pervasive.com/
Also on:    postgresql.org/message-id/20060412153951.GH49405@pervasive.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: jnasby@pervasive.com, cjames@modgraph-usa.com, lists@peufeu.com, grzm@myrealbox.com, rodrigo.sakai@zanthus.com.br
  Subject: Re: FOREIGN KEYS  vs  PERFORMANCE
  In-Reply-To: <20060412153951.GH49405@pervasive.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

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