Drizzle is a re-designed version of the MySQL v6.0 codebase and is designed around a central concept of having a
microkernel architecture. Features such as the query
cache and
authentication system are now
plugins to the database, which follow the general theme of "pluggable storage engines" that were introduced in MySQL 5.1. It supports
PAM,
LDAP, and
HTTP AUTH for authentication via plugins it ships. Via its plugin system it supports logging to files,
syslog, and remote services such as
RabbitMQ and
Gearman. Drizzle is an
ACID-compliant relational database that supports transactions via an
MVCC design.
Microkernel Plugin points have been added to support
replication,
storage engines, query rewrite, table functions,
user-defined functions, protocol adapters, and multiple query caches.
Indexes Like MySQL, Drizzle supports concurrent multiple engines. Via this, Drizzle includes built-in support for
B+ tree and
hash indexes. Drizzle's query planner is capable of using multiple indexes, from multiple engines to satisfy complex queries, using temporary in-memory
bitmap index of operations.
Triggers Database triggers in Drizzle are supported for
DML,
DDL, and a number of an additional event-based operations in the server. The PrimeBase BLOB streaming system, which allows Drizzle to stream
binary large objects (BLOBs) via HTTP, makes use of this system. All triggers for Drizzle currently must be written in C++.
Query rewrite Any query can be matched and rewritten dynamically that is sent to the server. This action is done before
parsing occurs.
Data types A wide variety of native
data types are supported, including: •
Variable-length arrays (including text and composite types) up to 4 GB in total storage size •
Arbitrary precision numerics • An
enumerated type (enum) that supports current 10,000 types
Dynamic SQL Through support of the EXECUTE command Drizzle can operate dynamic multi-statement SQL. Via the keyword CONCURRENT it can operate these statements in
parallel.
Replication Replication in Drizzle is done by generating "messages" using the Google
Protocol Buffers library. These messages are then stored and executed on remote servers. The message format is a non-SQL neutral format which has allowed Drizzle to have replication appliers to RabbitMQ,
Memcached, MySQL,
Voldemort, and
Apache Cassandra. == Support and licensing ==