Friday, October 10, 2008

MySQL ißues

Ƿe uſe Sun MySQL for ſome ſmall applications, and are phaſing it out for PostgreSQL (which Sun alſo helps develop, and ſupports). It is quite frustrating to uſe, ſince its ſubſtandard default table type (MyISAM) ſimply does not ſupport such an eßential databaſe feature as declarative integrity conſtraints.

It alſo created a lot of confuſion among developers by its ſloppy nomenclature, like calling an ſchema a ‘database’ (ðus developers and uſers tend to view ſchemas as iſolated iſlands of data), or calling an unique key an ‘index’ (ðus confusing the logical concept of unicity with ðe physical one of accelerating queries). Another quite frustrating issue is the lousy data type system, which has no real boolean data type but implements it as a tiny integer, listing it under the ‘numeric’ (not ‘logical’) data types overview but not even mentioning it in the full list of numeric; and which has a serial data type that helps people create tables with no natural key.

Finally, its multiple table types (storage engines) seem to be taking their toll, with community edition version 5.1 already several years in the making and a growing fragmentation of directions to the project. Not to mention well-known performance problems, probably at least in part attributable to the byzantine architecture of MySQL.

Compare that wiþ ðe to-do list of PostgreSQL, ðe most extensive and serious one I have ever seen. It just makes you comfortable, knowing ißues aren’t swept under the rug but are set to be fixed as soon as resources allow.