On Mon, 19 Apr 2004 20:17:38 -0700 (PDT), Marc Slemko wrote:

> On Mon, 19 Apr 2004, Stormblade wrote:
> 
>> Ok. Love MySQL and I will be using it for my personal use and recommending
>> it to clients as a lower cost alternative. I've only been using it for a
>> very short time but there one major gripe I have with it and I believe it's
>> just a design thing.
>>
>> MySQL seems to put the burden of error checking and such on the client.
>>
>> - All fields have a default value even when I don't tell it to?
>> - Allow Null will only result in an error if I explicitly try to set the
>> field to null.
>>
>> These are the two things that I really dislike. I think it's a poor design
>> to rely on clients only for error checking. MySQL supports foreign keys.
>> This is good because the database handles referential integrity. But it
>> shouldn't stop there. I should also be able to tell the database not to
>> allow a field to be empty/null and it should not put anything in there that
>> I have not told it to.
> 
> Yup, it is a bad idea, and thankfully it seems to be slowly improving
> as more and more people try to use mysql as a more serious database.
> 
> However, keep in mind that it is not an adhoc arbitrary decision,
> but it based on a very fundamental traditional mysql design fundamental:
> not to support transactions because they aren't required most of
> the time, or so the claim goes.  While there are a few mysql storage
> engines now that do support transactions, and at least one is in
> widespread use, this history explains why it is the way it is.
> 
> If you don't support transactions, what do you do if you are running
> a statement that updates multiple rows and get an error with one
> row? If you just abort the whole statement, it is really ugly since
> then you leave the statement half executed.  If you try to be able
> to undo the entire statement, it is really ugly because without
> transactions you are unlikely to have the backend support for doing
> that or for avoiding dirty reads, etc.... since that is one of the
> fundamentals of what a transaction is.  So ... you bravely soldier
> on.

Ah this makes sense. Although for me I wouldn't have done it this way even
if I hadn't planned on supporting transactions but that is because of my
personality and the type of programming I usually did. My concerns were
almost always with reliability, maintainability. Sure speed was a concern
but not as much as the other two. 

But I can understand (If not agree with) the decision at least. Speed was
more of a concern and with them not supporting transactions this makes
sense.
-- 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Stormblade (Shaolin Code Warrior)
Software Developer (15+ Years Programming exp.)

My System: http://www.anandtech.com/mysystemrig.html?rigid=1683
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to