Lately I've been working on two projects, phpaga and mod_haydn. But this entry is really about the problems related to phpaga.
phpaga was written with the MySQL data container. MySQL is an excellent system when you need to insert data quickly and retrieve data quickly, but when it comes to the needs normally associated with a database, it is woefully incompetent.
For example views, read only containers, which provide a "view" of data across multiple tables in one psuedo-table don't exist, sure, I could wait till MySQL 5.0 for SQL '88 compliance, but why should I? The problem doesn't start there - you want Foreign keys, Triggers, Stored Procedures, Blobs (no, not TEXT field aliases)? Good luck! MySQL doesn't even support Sequences (no, Auto Increment is not a sequence.)
Why am I whining like a troll? Two reasons:
1) We can't drop MySQL support for a real database, so many people these days seem to have only MySQL installed, so alienating them by dropping MySQL support is shooting yourself in the foot - akin to writing GUI applications without support for 16 bit OS' like Win32.
Our current solution for handling views is simply to use temporary tables (only when MySQL is used). For sequences we have to create index tables, incremented along with the insertions (this is PEAR DB's solution to the problem).
This is ugly and its a pain in the ass to maintain. Ohh well, at least MySQL is free software, that makes me feel so much better.
2) The folks at MySQL AB would have you believe that MySQL is a real database. Calling MySQL a RDBM is like calling Oracle a flat file: its true on one-level, false on every-other level.
If I wasn't dependent on it, I might actually find it humorous - "MySQL has row level locking!", "MySQL has transactions!" - so what? - there is no database worth mentioning that doesn't have these features.
This isn't to say that MySQL isn't a great tool, its wonderful for specialized/small tasks, its also a very easy entry point for users who don't know about databases or SQL. But when it comes to being "Enterprise Ready" or "Industrial Strength," please, be reasonable, Microsoft Access is more "Enterprise Ready" (it does support FOREIGN KEY constraints.)
MySQL is fine when you don't need a database and don't want a text file.
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!