Without going into detail about various projects I've seen, surfice it to
say that I have wittnessed some true horrors. In defence however, the
largest abomination I have ever witnessed was from an MS shop that had grown
a database from a MS Access system upward and had then, bluntly bolted MySQL
in to the mix so that they could expose it to the web (stop laughing ;P).
It has however nothing to do with the specific database, just as you can
write shoddy code in C++ or PHP, database abominations know no vendor
boundaries. I think a large number of people reading this may agree when I
say that "commercial" (you may read time & money as the obvious subtexts)
pressues to produce quick, cheap and "working" solutions are the real reason
such things as documentation, proper requirements gathering and analysis,
design and QA testing are the first against the wall when such pressures
begin to bite or clients haggle on price.
So, I'm afraid in concluesion "Yes", you are being naive in thinking that
everyone runs their DBs with RI in production. No they don't turn it "off",
they never build it in and if they do turn it off it's not for performance
gains. The counter argument to that would be that it's fairly concievable
that if you implemented a solution in a development enviroment with RI
constraints, tested it carefully and completely, put it into production and
perhaps ran it for a month or two then turned all the RI off that it would
still hold water well enough to be a viable commercial solution. Not an
argument I'd serious back but one you could make at any rate.... And finally
"Yes", it's a nightmare in such situations.
Without whoring I should perhaps state at this juncture that my current
employer does not produce such solutions. We have design and analysis
procedures, a QA department, people with common-sense etc... to ensure that
we avoid such things.
On 24/05/07, Naz Gassiep <naz@stripped> wrote:
> I'm working in a project at the moment that is using MySQL, and people
> keep making assertions like this one:
> "*Really* big sites don't ever have referential integrity. Or if the few
> spots they do (like with financial transactions) it's implemented on the
> application level (via, say, optimistic locking), never the database level."
> A large DB working with no RI would give me nightmares. Is it really true
> that large sites turn RI off to improve performance? Am I just being naive
> in thinking that everyone runs their DBs with RI in production?
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe: