<$BlogRSDURL$>
Proceeds from the ads below will be donated to the Bob Wuesthoff scholarship fund.

Saturday, December 10, 2005

Tech Rant: "Let's Get A Real Database"

A few days ago, I wrote about Xooglers, a blog written by a former Google employee about his experiences at that company. There's a post that went up yesterday that's got a little bit of relevance to this blog, personally and professionally, that it's worth taking a brief detour. Google AdWords, it seems, was built using the MySQL database, an open source database that database professionals (in some means, rightfully) sniffed at because of its lack of certain features. But, it was fast, and most importantly, free. And that's when things got troublesome:
After AdWords launched, Jane, the ads group manager, decided that now would be a good time to switch over to a "real" database. "Real" [...] means "expensive". Many managers seem to have this idea that it is invariably true that you get what you pay for, and that therefore nothing that is available for free can possibly be any good. Using MySQL was acceptable as an expedient to get things up and running quickly and with a minimal of capital outlay, but now that things were settling down it was time to recognize that this was really, fundamentally, a mistake, and it should be fixed sooner rather than later.

We finally decided to go with a commercial database (I won't say which one) over the objections of a number of engineers, including myself. To ease the transition it was decided to convert AdWords over to the new system first, and to do the main ads system later. It was a project on a par with the internationalzation effort in terms of the tedious work required to comb over nearly all of the AdWords code and change all of the database queries. (Databases are supposed to all be compatible with one another, but in reality they pretty much aren't.)

To make a long story short, it was an unmitigated disaster. The new system was slower than molasses in February. Some heroic optimization efforts eventually produced acceptable performance, but it was never as good as the old MySQL-based system had been. For a long time we were stuck with the worst of all possible worlds, with the two ads systems running on two different databases. It was still that way when I left Google in October of 2001, but I have heard through the grapevine that they eventually went back to MySQL. (Since then, MySQL has added many of the features that had been missing at the time.)

"The moral of the story," concludes author Ron, "is that sometimes, and in particular with free software, you get more than what you pay for." I can attest to having a nearly identical experience with MySQL and another "real" (*cough* Oracle *cough*) database in my day job (at this point it's so far in the rear view mirror that I don't think anyone should be surprised to find out our technical direction). In a slightly lame attempt to tie this all back to baseball, I also wonder to what degree teams like the Blue Jays, Angels, and Dodgers are overspending on relative mediocrities to acquire credibility with their respective fanbases. Sure, B.J. Ryan isn't worth nearly the amount he's about to make, but he's a "real" closer. How many guys in the farm don't get a chance because they're not "real" players? And on how many teams? The artifice of overpaying yields its own absurdist logic; how happy are the Reds with their "real" centerfielder?

Labels:


Comments:
Overspending on a real SS like Furcal, although suboptimal, is at least an upgrade. Mueller would be an expensive sideways movement, and Snow would be a step down for more money. Hopefully the rumors stay just that, and Mr. Ned keeps performed better than I expected.
 
MySQL version 5 has stored procedures now - YEAH!

Oh - baseball. Sorry. Furcal is a real waste of money. IMHO.
 
Yeah, I liked that feature, too.

The one that got me in one of the more recent 5.1 releases was partitioned tables. For some of our more "interesting" queries, that could be a godsend.
 
MySQL wasn't a "real" database, IMO, until they got transactions. That made them legit.

Now with views, triggers, and stored procedures, they're a major player.

Now if only they could make the CREATE TABLE...CHECK clause work, I'd have everything I need.
 

Post a Comment

Note: Only a member of this blog may post a comment.



Newer›  ‹Older
This page is powered by Blogger. Isn't yours?
Google

WWW 6-4-2