I'm not saying they made a bad choice, I'm just impressed at how they've managed to make MySQL fit their needs.
I'm not saying they made a bad choice, I'm just impressed at how they've managed to make MySQL fit their needs.
Impressive indeed.
ie. no joins - the part of the database that makes it relational.
What's the point of joining in the application level? If you're going to join, why not do it in the database? That should be both faster and more convenient (unless your schemas aren't relational at all, in which case I don't see why you'd use a relational database)
Another issue is connections between DB servers. Generally you want your DB server to be as fast as possible, so having it handle the connections to other servers slows everything down. If you offload the DB server connections to your web server, you can easily scale by just adding more web servers and having each DB server handle only its own data.
The best solution would be some type of 'mysql proxy' that could run on every web server that would transparently handle the joins between all the different mysql data servers. I think I saw a project attempting to do this awhile back, but didn't really keep track.
> that many deem inferior.
I guess most of those "many" never actually run anything close to the scale of the Facebook (or Wikipedia, which also runs MySQL).
If you bother to pay attention what FB DB engineers say you will know that they have their arms shoulder deep into the innards of the database itself, I/O stack, all that jazz.Most of us can't afford that, and want something that's pretty good out of the box. I've used Mysql a number of times, but it always seems to have more gotchas for what I need to do with it than Mysql.