Drizzle is designed around the concept of being a micro-kernel. Many operations, and more coming, have been pushed out of the kernel and into pluggable components. The goal is a small, light weight, kernel which is both easy to maintain and easy to extend. Drizzle is written in C++ and makes heavy use of Standard Template Libraries (STL).
As part of the Drizzle automated build infrastructure there are several benchmarks which are run in our staging environment after each code update
Drizzle can be built with dtrace support as it contains the various probes necessary. You will need to add -–enable-dtrace during the configuration step. See http://posulliv.github.com/2009/09/14/using-dtrace-with-drizzle.html for more details.
table_raw_reader is a tool which reads table proto information from disk and provides a very thorough analysis of the data. See http://www.flamingspork.com/blog/2009/10/01/table_raw_reader-reading-the-table-proto-from-disk-and-examining-everything for more details
Drizzle's parser no longer knows or confirms engines. It simply parses the statement and lets the execution system validate the state or existence of the engine See Brian's blog for more details.
This has not been ported to Drizzle at this time as a plugin.
libdrizzle is the client library for Drizzle which provides the protocol and client interface and has been completely rewritten. It supports both Drizzle and MySQL protocols, so you can use it with MySQL servers as well. This new library provides complete non-blocking I/O support, a concurrent query interface, improved buffering support and also provides a complete server protocol implementation - not just the client.
The drizzle server can be started with a debug console by specifying the –console-enable flag. This will start up drizzled and provide a command line prompt from where you can enter sql commands. For more details see http://oddments.org/?p=96 and http://oddments.org/?p=96 and http://oddments.org/?p=147
Drizzle is being re-architected to use languages such as Python, Perl, Ruby, PHP, and Java as server side languages.
Work is being done to create per column callback functions.
Blueprint for rewrite: https://blueprints.launchpad.net/drizzle/+spec/query-rewrite
The new protocol work is addressing the previous historical issues around memory allocation that made the previous system unusable in most cases. Full support for client side is still available.
See https://lists.launchpad.net/drizzle-discuss/msg05127.html and https://lists.launchpad.net/drizzle-discuss/msg05124.html for the latest discussion
See https://lists.launchpad.net/drizzle-discuss/msg05094.html and https://lists.launchpad.net/drizzle-discuss/msg05117.html for the latest discussion
Sharding is being added to the new Drizzle protocol. This will allow the clients to specify a key with a session or query, and this key can be acted upon at a few different levels. The client side can act on this key and choose the correct server from a list of servers, treating your server list as buckets in a distributed hash table. The key could simply be passed along as well, and an intermediate proxy could act on the key by doing a lookup for you and redirect to the appropriate server. Third, the server could be the component to act on the key and somehow handle sharding internally, such as using redirection or possibly in the storage engine layer for network-based storage engines. Keeping the sharding key opaque and in the core protocol allows for any of these options, and others in the future.
Removed references to event fields information, {user, schema, table, column, table constraints, paramaters} privileges fields info
coming soon...... will be looking at prototyping an example for the Bell release. A proposal blueprint is in launchpad
Replication has been redesigned to use Google's ProtoBuffer library as a message format. This makes it simple to write new replication clients. Currently replication plans include plugins to write to a file and to send messages to a Gearman server. The internals of replication now work on tuple changes, thus removing any deterministic behavior requirements.
The "general" and "slow" query log files have been dropped in favor of a new pluggable interface. Currently support for logging to a file, Gearman, and syslog are supported. A regular expression can also now be applied to log files so that filtering can be accomplished. See Ronald's blog for detailed examples.
This is in planning. Currently file system snapshots and "dumps" are supported. Online backup support if available for the Archive engine, and there are plans to incorporate one of the third party systems for other engines.
Support for PAM and HTTP AUTH are currently provided (and via PAM LDAP).
A plugin provided by Padraig allows you to query memcached statistics from an INFORMATION_SCHEMA table. See http://posulliv.github.com/2009/09/29/viewing-memcached-statistics-from-drizzle.html and http://posulliv.github.com/2009/09/19/using-memcached-with-c.html for more details
BlitzDB is a storage engine that aims to be highly efficient for general purpose use. The current goal of BlitzDB is to become the modern choice of a non-transactional engine and bring healthy competition to MyISAM and MEMORY engines. BlitzDB is currently developed with Drizzle.
A plugin is available to use Gearman for logging Drizzle query information.
The default storage engine is InnoDB. Drizzle expects that engines have a higher degree of underlying architecture (be re-entrant/etc)
Other vendors are currently porting their Engines to Drizzle. It is best to ask each maintainer on the current state of their engine.
Drizzle has removed the FRM system and now delegates to engines for data dictionary. "THD" has been removed in favor of a Session object which is now separated from a "thread" thus allowing new scheduler models that allow for better use of modern SMP hardware. The scheduler itself is now pluggable, and several alternatives are under design.
CIPHER, CLIENT, CODE, CONTRIBUTORS, CPU, DEFINER, DES_KEY_FILE, ENGINES, EVERY, IO, IPC, ISSUER, BIT_AND, BIT_XOR, BIT_OR
drizzle>> SELECT * FROM information_schema.plugins WHERE LOWER(plugin_description) like '%engine%';