Features of Drizzle
What will be changed in Drizzle in comparison to MySQL? First of all, whole architecture will be changed. Drizzle will be not monolithic chunk of software like its predecessor, but it will be based on microkernel idea. Most features will be moved from core to optional modules. Those features, like triggers, views, or even query cache, are standard for modern database servers, but are very rarely used in webapps (which is very strange for me, but I’ll come back to this later). One of these modules will be InnoDB engine (owned by Oracle, double licensed), which would make upgrading to newest version of that engine easier. UTF-8 will be standard. Generally – looks nice.
On the other hand, Windows users will be sad, because probably (but not for sure), Drizzle will be available only for Linux and MacOS X. Maybe it’s not such a big deal, because most of production servers are working under non-windows OS’, but for development it would be nice to have a possibility to test-install this RDBMS on Windows.
Some highlights from features list:
- Based on MySQL 6.0 source tree
- No shipped libraries
- POSIX compliance
- Micro kernel design
- Pluggable Architecture for views, stored procedures, UDFs, storage engines etc.
- Sharding across multiple nodes
- Intelligent proxy
- Multi CPU/Multi Core
- Optimized field types
- Efficient memory usage
- No internal ACL, use LDAP/PAM
- No database data formatting
- Cleaned up make system
- InnoDB default storage engine
- Windows compatibility removed
Is it good?
When I first got into web programming, PHP was used mainly for guest books and simple visitor counters – as an extension of good old perl CGI’s. And even for those puny applications SQL databases were used – most commonly MySQL. It annoyed me, as I thought that installing RDBMS for that sole reason was a terrible overkill. On the other hand, using files was quite cumbersome, as a programmer had to take care of file locking (and still from time to time data tended to disappear). That time, something like “raw data files with concurrency” would be great. But times have changed, and web sites are something more than a set of HTML files with CGI-like gizmos. Now everyone can use a CMS system to create web page without any knowledge of Internet voodoo. Every CMS is backed by a database server, but I haven’t seen a CMS system that uses database for something more than a data storage – no triggers, views, stored procedures – nothing. I could understand if it was because of support for many different RDMBS’, but usually even if software supports e.g. MySQL and PostgreSQL, the second one is broken/unusable/modules use MySQL non-standard methods.
And here comes Drizzle. RDBMS with basic SQL support (but it’s not any standardized SQL dialect), with optional advanced features like views (views support is ‘advanced feature’… o tempora, o mores…) For webapps – great solution, if only it’d become a standard (because of not standardized SQL syntax).
But what about “big” MySQL? I’ve never considered it as a tool for more complex projects. Websites – maybe, if software does not provide proper support for PostgreSQL. PostgreSQL is my choice for hobby projects (and those without big funding), Oracle for other.
MySQL was never percieved as a free replacement for expensive databases (except for people not knowing what they are talking about), so what would be MySQL’s “biotope” with poor opinion from large traffic applications programmers and Drizzle taking its place as a choice for webapps?
I know that my opinions on MySQL may be controversial, but they are based on my personal experience, and please don’t argue with that :)