Hi Darren

On Thu, 2011-08-04 at 23:29 -0700, Darren Duncan wrote:
> Ron Savage wrote:
> > Personally, I'll never be writing code which is deliberately crippled so
> > that it only runs under 1 db server, no matter what that server may be.
> > 
> > There are apparently 71 db servers accessible via DBI.
> 
> I agree with you, but at the same time, you would also be crippling your code 
> when you write it to support the lowest common denominator, such as trying to 
> make it work on every SQL DBMS regardless of capabilities.

Sure.

> If you want a good program rather than a mediocre one, you need to draw the 
> line 
> and set a minimum feature set that a DBMS should have to be supported.

Agreed.

> For example, that you only support DBMSs that you can exclusively use in ACID 
> and transactional mode, and you only support DBMSs that will natively enforce 
> foreign key and CHECK constraints, and only those with native Unicode 
> support, 
> and so on.

I don't use CHECK myself, but of course I expect FOREIGN KEY/REFERENCES
to be supported and not just scanned.

This rules out MySQL for me as the primary db, but I don't try to
restrict what other people use.

It's pathetic that MySQL does not measure up on this.

> This may disqualify some DBMSs, but users would still have others from which 
> to 
> choose.
> 
> So choose a middle ground.  You can always justify rejecting a particular 
> DBMS 
> for support by saying it lacks features whose absence would seriously 
> compromise 
> the quality of your product.
> 
> I mean, would you make a brand new program now, and still support Perl 5.5?

Nope. Even 5.8 is dodgy :-).

> Personally for a quality project, I would reject MySQL, which among other 
> major 
> flaws doesn't support CHECK constraints:
> 
>  From http://dev.mysql.com/doc/refman/5.5/en/create-table.html (the MySQL 5.5
> manual):  "The CHECK clause is parsed but ignored by all storage engines.".

V 5.6 is the same, I see.

> Or given its popularity, I could still make the program run with MySQL, but 
> that 
> would come with strong written caveats that users risk greater corruption 
> with 
> it, and that I offer no warranty of fitness for that configuration.
> 
> > For me, the default db is Postgres, but my policy is the either ship
> > text files and a (table) creator, and a loader, both of which use a
> > config file, so the end user can configure them to use any DBI-supported
> > db, or I ship an SQLite db, so the end user can use DBD::SQLite.
> 
> A SQL database may be a good internal format for a program, but it is 
> generally 
> a bad interchange format, as internally it is quite complicated and binary.  
> A 
> much better interchange format is some kind of marked up text, such as SQL or 
> JSON or XML or Muldis D etc.

Agreed. I only ship data in an SQL db (one those very rare occasions I
do) on the assumption it'll stay there. If users which to export it,
that's up to them.

-- 
Ron Savage
http://savage.net.au/
Ph: 0421 920 622

Reply via email to