Naz, 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.
Regards, Phil On 24/05/07, Naz Gassiep <[EMAIL PROTECTED]> 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: http://lists.mysql.com/[EMAIL PROTECTED]
-- Regards, Phil