Re: [PERFORM] FOREIGN KEYS vs PERFORMANCE

2006-04-18 Thread Rodrigo Sakai
  Thanks for all responses! I agree with most of you, and say that the RI is
best maintened by Database ! Performance must be improved in other ways
(indexes, hardware, etc)!


- Original Message - 
From: Jim C. Nasby [EMAIL PROTECTED]
To: Craig A. James [EMAIL PROTECTED]
Cc: PFC [EMAIL PROTECTED]; Michael Glaesemann [EMAIL PROTECTED];
Rodrigo Sakai [EMAIL PROTECTED];
pgsql-performance@postgresql.org
Sent: Wednesday, April 12, 2006 5:59 PM
Subject: Re: [PERFORM] FOREIGN KEYS vs PERFORMANCE


 On Wed, Apr 12, 2006 at 10:36:28AM -0700, Craig A. James wrote:
  Jim C. Nasby wrote:
  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.
 
  No, I don't agree with this.  Too many people waste time designing for
  what if... scenarios that never happen.  You don't want to be dumb and
  design something that locks out a foreseeable and likely future need,
but
  referential integrity doesn't meet this criterion.  There's nothing to
keep
  you from changing from app-managed to database-managed referential
  integrity if your needs change.

 In this case your argument makes no sense, because you will spend far
 more time re-creating RI capability inside an application than if you
 just use what the database offers natively.

 It's certainly true that you don't want to over-engineer for no reason,
 but many times choices are made to save a very small amount of time or
 hassle up-front, and those choices become extremely painful later.
 -- 
 Jim C. Nasby, Sr. Engineering Consultant  [EMAIL PROTECTED]
 Pervasive Software  http://pervasive.comwork: 512-231-6117
 vcard: http://jim.nasby.net/pervasive.vcf   cell: 512-569-9461

 ---(end of broadcast)---
 TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly



---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [PERFORM] FOREIGN KEYS vs PERFORMANCE

2006-04-12 Thread Rodrigo Sakai
  Thanks for all help!! But my problem is with performance, I agree with all
of you, the RI must be maintained by the database, because a bunch of
reasons that everyone knows!
  But, I'm dealing with a very huge database that servers more than 200
clientes at the same time, and because of it, each manipulation (delete,
insert, update, select) on the database have a poor performance. So, if we
deal with RI in each client station, we take this work off the database!
  The application is an ERP developed with DELPHI + (postgresql or oracle or
sql server)!!

  Thanks again!!

- Original Message - 
From: Markus Schaber [EMAIL PROTECTED]
To: pgsql-performance@postgresql.org
Cc: Rodrigo Sakai [EMAIL PROTECTED]
Sent: Wednesday, April 12, 2006 10:18 AM
Subject: Re: [PERFORM] FOREIGN KEYS vs PERFORMANCE


 Hi, Michael,
 Hi, Rodrigo,

 Michael Glaesemann wrote:

  If I had to choose between one or the other, I'd leave all  referential
  integrity in the database and deal with the errors thrown  when
  referential integrity is violated in the application. PostgreSQL  is
  designed to handle these kinds of issues. Anything you code in  your
  application is more likely to contain bugs or miss corner cases  that
  would allow referential integrity to be violated. PostgreSQL has  been
  pounded on for years by a great many users and developers,  making the
  likelihood of bugs still remaining much smaller.

 I strictly agree with Michael here.

  Of course, you can add some referential integrity checks in your
  application code, but those should be in addition to your database-
  level checks.

 Agree. It does make sense to have reference checks in the UI or
 application level for the sake of better error handling, but the
 database should be the mandatory judge.

 There's another advantage of database based checking: Should there ever
 be the need of a different application working on the same database (e.
 G. an expert level UI, or some connector that connects / synchronizes
 to another software, or a data import tool), database based constraints
 cannot be broken opposed to application based ones.

 HTH,
 Markus
 -- 
 Markus Schaber | Logical TrackingTracing International AG
 Dipl. Inf. | Software Development GIS

 Fight against software patents in EU! www.ffii.org
www.nosoftwarepatents.org



---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


[PERFORM] FOREIGN KEYS vs PERFORMANCE

2006-04-11 Thread Rodrigo Sakai



 Hi,

 I think this is an old question, but I want 
to know if it really is well worth to not create some foreign 
keys an deal with the referential integrity at 
application-level?
 Specifically, the system we are developing 
is a server/cliente architecture that the server is the database and the fat 
client is an application developed in DELPHI!!!

 Thanks in 
advance!!