Drizzle, an alternative to Oracle’s MySQL, gives developers a less-expensive and cleaner version of the open source database.
When Oracle took over Sun it gained MySQL and worried many programmers. After all, Oracle has a lot to gain if MySQL quietly molders away; if you sell a high-cost high-end database it doesn’t make a lot of commercial sense to push a low-cost alternative.
Many MySQL developers would consequently like a way out, and one alternative has just been declared generally available. Drizzle is described as a lightweight, cloud-friendly fork of MySQL 6.0 that will now be packaged in Linux distributions. Drizzle was dreamed up by Brian Aker when he was the MySQL director of architecture, and continued being developed when Sun acquired MySQL. Once Oracle took over, the future for Drizzle looked uncertain until Rackspace recruited some of the developers of Drizzle to work on its cloud team.
According to a blog post from the Rackspace team: “Aker’s idea was to start with MySQL 6.0 and fork it, taking out all the bloat like stored procedures, triggers, MyISAM, and numerous internal evils that made MySQL 5.1 too bloated for the needs of Web and Cloud use cases. In short, take MySQL and strip out all the fat to make a lean mean lightweight database that would really make sense for web applications and cloud computing.” It also has no version to run on Windows. The blog describes Drizzle as “a new animal completely that’s re-using what MySQL did well, and eliminating or fixing where it was weak.”
One problem for current MySQL developers who think that this sounds attractive is the fact that Drizzle started life as a fork of the MySQL that was current in 2008, and a lot has been added to the current MySQL. However, Andrew Hutchings, a Drizzle developer at Rackspace, says that Drizzle is still compatible with MySQL in many ways, as its syntax is similar to MySQL. Drizzle supports existing MySQL connectors, if you’ve got MySQL tables they can be converted to Drizzle format using a tool called drizzledump, and Drizzle has a library called libdrizzle that can work with both MySQL and Drizzle servers.
The Rackspace blog gives a partial list of what Drizzle has kept or dispensed with, starting with a micro-kernel design so you have a core code into which you can plug in features and functions using APIs for features such as replication, storage engines, logging, authentication and client protocols.
On the client side, the new Drizzle Client Protocol is described as pluggable and asynchronous capable with built-in sharding and checksum support. Equally importantly it has a BSD license so it can be packaged in commercial software without licensing problems. The MySQL client protocol is, however, still supported.
As mentioned earlier, there is no support for triggers or stored procedures. The blog says that “that stuff is bloat as done in MySQL, and Drizzle has other ways to deal with these needs. These capabilities can be added in later as needed such that they are done right”. Similar reasoning means that only UTF8 is supported rather than multiple language encodings. The MyISAM engine has been dropped, and the new default storage engine is InnoDB providing ACID compliance. The blog post says replication is a lot better, and that pluggable AAA means that integrating with your LDAP user database through PAM is “simple as pie”. Equally usefully, it doesn’t have to be loaded in situations where it’s not needed so you can get a better performance. Other highlights of Drizzle can be seen over on the Rackspace blog.