The Facebook Patch is a patchset used by Facebook to run their MySQL servers. They are currently running a patched version of Oracle’s MySQL 5.1, and are in the process of upgrading their patchset to support Oracle MySQL 5.6. They implement such features as group commit, enhanced statistics, and many other under-the-hood optimizations.
Many of the enhancements that Facebook includes in their patch have been implemented in Percona, MariaDB, and the latest versions of MySQL.
Drizzle started life as a fork of MySQL 6.0, which was later abandoned. It is intended to be optimized for use as a backend database for web sites. It is designed around a microkernel architecture, so that it can be more modular. They have cleaned up the code significantly, so that there are no longer any compiler warnings.
They have also deliberately broken some backwards-compatibility in order to make things more logical. Cartesian joins can only be done intentionally. ENUM columns that have been declared NOT NULL cannot have a NULL value (it’s possible in MySQL). They include native support for IPv6, and they have dropped all support for timezones (UTC is always used) and character sets (UTF-8 must be used). They’ve also removed support for MySQL’s stored procedures, triggers, views, the SET data type, and even support for Windows. They have simplified integer support (removing TINYINT, SMALLINT, and MEDIUMINT) as well as all but the largest size of BLOBs and TEXTs, and even added the much-desired true BOOLEAN type.
Their microkernel architecture allows them to have pluggable modules for such things as logging, authentication, replication, stored procedures, and even the wire protocol used.
Unfortunately, Drizzle has yet to attract much of a following. They have some great ideas, but since they aren’t a drop-in replacement for MySQL, there is considerable risk for sites considering a move to Drizzle.
Next week: Conclusions