[quote user="Zygo"]
A similar problem happens to people who start out with MySQL:
- Lots of server-side logic in the application, including joins and constraint checks
- Temporary tables instead of joins or subqueries (there's no views
in most of MySQL's history (does it even have them now?), so can't
blame 'em for not using them)
- Concurrency is a bad thing that happens to other people, but not at the same time as it happens to you
- Transactions?
What are they? Do I need them? or even better, I
don't need them! I just have a "clean up the database" button in
the application
[/quote]
I
use MySQL for a production database right now that can best be
described as a data warehouse. The primary selling point, of
course, was that it costs less than $50,000 (which is what it would
cost to put DB2 on all the machines it runs on - SQL Server isn't
viable, because it's Windows-only, and Oracle would cost at least twice
as much). I don't think it's as capable as the older commercial
products. But it's certainly not the broken toy that some DB
snobs seem to think it is.
I happen to be on the side of the fence that thinks databases
should store data, and that business logic belongs outside. But
that's debatable.
Your second point, however, doesn't make a lot of sense.
Why on earth would you need temporary tables to overcome the lack of
views? Joins and subqueries work quite well without being
abstracted by a view, which amounts to nothing more than saving a bit
of typing once you discount security (and if you're relying on DB
security for controlling access to data, you're a WTF waiting to
happen). Or worse. Ever see a query that runs quitequickly when run directly on the tables, but turns into a dog when done on a view instead?
Concurrency? Not sure what to make of that vague statement.
MySQL supports transactions, and has for over five years now. Or
did you miss all those DB benchmarks done by the IT rags? You
know, the ones where MySQL ends up consistently near the top in
transactional performance.
There is a huge market where using a commercial DBMS would double the budget (if not worse). In that market, MySQL does a nice job, indeed. For example, I can spend $6K on a server that handles 100 concurrent users without breaking a sweat. I'd have to spend $10K to put a commercial DBMS on it.