drizzle
Profile
Search
 
Hosted by The Rackspace Cloud
MySQL Differences

Contents

Usage

Installation

MicroKernel Architecture

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).

Benchmarks

As part of the Drizzle automated build infrastructure there are several benchmarks which are run in our staging environment after each code update

DTrace and Drizzle

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

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 Storage Engine API

Drizzle Plugins

Drizzle Executioner

Drizzle Parser

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.

Drizzle Lex

Drizzle Scheduler

Event Scheduler

This has not been ported to Drizzle at this time as a plugin.

Drizzle Connection Management

Drizzle Client & Protocol

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.

Drivers

Drizzle Console

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

Stored Procedures

Drizzle is being re-architected to use languages such as Python, Perl, Ruby, PHP, and Java as server side languages.

Triggers

Work is being done to create per column callback functions.

Views

Blueprint for rewrite: https://blueprints.launchpad.net/drizzle/+spec/query-rewrite

Prepared statements.

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

Variables with Functions for Defaults

See  https://lists.launchpad.net/drizzle-discuss/msg05094.html  and  https://lists.launchpad.net/drizzle-discuss/msg05117.html for the latest discussion

Partitioning & Sharding

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.

Information Schema

Performance Schema

coming soon...... will be looking at prototyping an example for the Bell release. A proposal blueprint is in launchpad

Replication

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.

Rabbit Replication

Transaction Log

Logging

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.

Backup

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.

Authentication, Authorization, Access

Support for PAM and HTTP AUTH are currently provided (and via PAM LDAP).

Parameter Changes

Memcached and Drizzle

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 and Drizzle

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.

Gearman and Drizzle

A plugin is available to use Gearman for logging Drizzle query information.

Storage Engine Changes

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.

Other

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.

FRM Removed

Objects Removed

Commands Removed

Operators Removed

Procedures Removed

Keywords Removed

CIPHER, CLIENT, CODE, CONTRIBUTORS, CPU, DEFINER, DES_KEY_FILE, ENGINES, EVERY, IO, IPC, ISSUER, BIT_AND, BIT_XOR, BIT_OR

Alternatives to Removed Commands

SHOW ENGINES

drizzle>> SELECT * FROM information_schema.plugins WHERE LOWER(plugin_description) like '%engine%';