Drizzle (database server)
Encyclopedia
Drizzle is a free software
/open source
relational database management system
(DBMS) that was forked
from version 6.0 of the MySQL
DBMS.
Like MySQL, Drizzle has a client/server architecture and uses SQL
as its primary command language. Drizzle is distributed under version 2 and 3 of the GNU General Public License (GPL) with portions, including the protocol drivers and replication messaging under the BSD
license.
Early work on the fork was done mid-2008 by Brian "Krow" Aker
. Ongoing development is handled by a team of contributors that includes staff members from Canonical Ltd.
, Google
, Six Apart
, Sun Microsystems
, Rackspace
, Data Differential, Blue Gecko, Intel, Percona, Hewlett-Packard
, Red Hat
, and others. Drizzle source code, along with instructions on compiling it, are available via the project's Launchpad
website.
In October 2010, Drizzle had 13,478 total contributions, 96 total contributors, and 37 active contributors. It was also announced that Drizzle had entered Beta,. The first GA version was released in March 2011. Drizzle has actively participated in the Google Summer of Code Project
in 2010 and in 2011.
markets. The developers of the product describe it as a "smaller, slimmer and (hopefully) faster version of MySQL".
format. It is being developed for modern Unix-like
operating system
s, including Linux
, FreeBSD
, Mac OS X
, and Solaris – in general, any OS that conforms to POSIX
and has a working implementation of the GNU Autotools. Microsoft Windows
is not supported at this time, mainly for lack of Autotools support, but there has been discussion of how to accomplish this in a sensible manner.
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 currently 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.
, storage engines, query rewrite, table functions, user-defined functions, protocol adapters, and multiple query caches.
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
operations
s in Drizzle are supported for DML
, DDL
, and a number of additional event-based operations in the server. The PrimeBase BLOB streaming system, which allows Drizzle to stream binary large object
s (BLOBs) via HTTP, makes use of this system. All triggers for Drizzle currently must be written in C++.
occurs.
s are supported, including:
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.
Although less of a functional feature and more of a developmental feature, the Drizzle project is being built to remove distinctions between internal and external contributors, allowing for cleaner community involvement.
license.
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
/open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
relational database management system
Database management system
A database management system is a software package with computer programs that control the creation, maintenance, and use of a database. It allows organizations to conveniently develop databases for various applications by database administrators and other specialists. A database is an integrated...
(DBMS) that was forked
Fork (software development)
In software engineering, a project fork happens when developers take a legal copy of source code from one software package and start independent development on it, creating a distinct piece of software...
from version 6.0 of the MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...
DBMS.
Like MySQL, Drizzle has a client/server architecture and uses SQL
SQL
SQL is a programming language designed for managing data in relational database management systems ....
as its primary command language. Drizzle is distributed under version 2 and 3 of the GNU General Public License (GPL) with portions, including the protocol drivers and replication messaging under the BSD
BSD licenses
BSD licenses are a family of permissive free software licenses. The original license was used for the Berkeley Software Distribution , a Unix-like operating system after which it is named....
license.
Early work on the fork was done mid-2008 by Brian "Krow" Aker
Brian Aker
Brian Aker, born August 4, 1972 in Lexington, Kentucky, USA is an open-source hacker who has worked on various Apache modules, the Slash system, and numerous storage engines for the MySQL database. Aker was Director of Architecture at MySQL AB until it was acquired by Sun Microsystems. He led...
. Ongoing development is handled by a team of contributors that includes staff members from Canonical Ltd.
Canonical Ltd.
Canonical Ltd. is a private company founded by South African entrepreneur Mark Shuttleworth to market commercial support and related services for Ubuntu Linux and related projects. Canonical is registered in London and employs staff around the world...
Google
Google Inc. is an American multinational public corporation invested in Internet search, cloud computing, and advertising technologies. Google hosts and develops a number of Internet-based services and products, and generates profit primarily from advertising through its AdWords program...
, Six Apart
Six Apart
Six Apart Ltd., sometimes abbreviated 6A, is a software company known for creating the Movable Type blogware, TypePad blog hosting service, and Vox. The company also is the former owner of LiveJournal. Six Apart is headquartered in Tokyo and is planning to open a new, U.S.-based office in New York...
, Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
, Rackspace
Rackspace
Rackspace US, Inc. is an IT hosting company based in San Antonio, Texas. The company also has offices in Australia, the United Kingdom, The Netherlands and Hong Kong, and data centers operating in Texas, Illinois, Virginia, the United Kingdom, and Hong Kong in late 2008...
, Data Differential, Blue Gecko, Intel, Percona, Hewlett-Packard
Hewlett-Packard
Hewlett-Packard Company or HP is an American multinational information technology corporation headquartered in Palo Alto, California, USA that provides products, technologies, softwares, solutions and services to consumers, small- and medium-sized businesses and large enterprises, including...
, Red Hat
Red Hat
Red Hat, Inc. is an S&P 500 company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....
, and others. Drizzle source code, along with instructions on compiling it, are available via the project's Launchpad
Launchpad (website)
Launchpad is a web application and website that allow users to develop and maintain software, particularly free software. Launchpad is developed and maintained by Canonical Ltd....
website.
In October 2010, Drizzle had 13,478 total contributions, 96 total contributors, and 37 active contributors. It was also announced that Drizzle had entered Beta,. The first GA version was released in March 2011. Drizzle has actively participated in the Google Summer of Code Project
Google Summer of Code
The Google Summer of Code is an annual program, first held from May to August 2005, in which Google awards stipends to hundreds of students who successfully complete a requested free or open-source software coding project during the summer...
in 2010 and in 2011.
Uses
Drizzle is targeted at the web-infrastructure and cloud computingCloud computing
Cloud computing is the delivery of computing as a service rather than a product, whereby shared resources, software, and information are provided to computers and other devices as a utility over a network ....
markets. The developers of the product describe it as a "smaller, slimmer and (hopefully) faster version of MySQL".
Platforms and interfaces
Drizzle is written in the C++ programming language, and stores its string data in the UTF-8UTF-8
UTF-8 is a multibyte character encoding for Unicode. Like UTF-16 and UTF-32, UTF-8 can represent every character in the Unicode character set. Unlike them, it is backward-compatible with ASCII and avoids the complications of endianness and byte order marks...
format. It is being developed for modern Unix-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s, including Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
, FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...
, Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
, and Solaris – in general, any OS that conforms to POSIX
POSIX
POSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...
and has a working implementation of the GNU Autotools. Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
is not supported at this time, mainly for lack of Autotools support, but there has been discussion of how to accomplish this in a sensible manner.
Features
Drizzle is a re-architected 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 authenticationAuthentication
Authentication is the act of confirming the truth of an attribute of a datum or entity...
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
Pluggable Authentication Modules
Pluggable authentication modules are a mechanism to integrate multiple low-level authentication schemes into a high-level application programming interface . It allows programs that rely on authentication to be written independent of the underlying authentication scheme...
, LDAP, and HTTP AUTH for authentication via plugins it ships. Via its plugin system it currently supports logging to files, syslog
Syslog
Syslog is a standard for computer data logging. It allows separation of the software that generates messages from the system that stores them and the software that reports and analyzes them...
, and remote services such as RabbitMQ
RabbitMQ
RabbitMQ is an open source message broker software , using the standard Advanced Message Queuing Protocol . The RabbitMQ server is written in Erlang and is built on the Open Telecom Platform framework for clustering and failover. Rabbit Technologies Ltd., acquired in April 2010 by VMware, develops...
and Gearman
Gearman
Gearman is an open source application framework originally written in Perl by Brad Fitzpatrick. Brian Aker and Eric Day rewrote the framework in C. Gearman is designed to distribute appropriate computer tasks to multiple computers, so large tasks can be done more quickly...
. Drizzle is an ACID
ACID
In computer science, ACID is a set of properties that guarantee database transactions are processed reliably. In the context of databases, a single logical operation on the data is called a transaction...
-compliant relational database that supports transactions via an MVCC
Multiversion concurrency control
Multiversion concurrency control , in the database field of computer science, is a concurrency control method commonly used by database management systems to provide concurrent access to the database and in programming languages to implement transactional memory.For instance, a database will...
design.
Microkernel
Plugin points have been added to support replicationReplication (computer science)
Replication is the process of sharing information so as to ensure consistency between redundant resources, such as software or hardware components, to improve reliability, fault-tolerance, or accessibility. It could be data replication if the same data is stored on multiple storage devices, or...
, 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+ treeB+ tree
In computer science, a B+ tree or B plus tree is a type of tree which represents sorted data in a way that allows for efficient insertion, retrieval and removal of records, each of which is identified by a key. It is a dynamic, multilevel index, with maximum and minimum bounds on the number of...
and Hash
Hash table
In computer science, a hash table or hash map is a data structure that uses a hash function to map identifying values, known as keys , to their associated values . Thus, a hash table implements an associative array...
indexes. Drizzle's query planner is capable of using multiple indexes, from multiple engines to satisfy complex queries, using temporary in-memory bitmap index
Bitmap Index
A bitmap index is a special kind of database index that uses bitmaps.Bitmap indexes have traditionally been considered to work well for data such as gender, which has a small number of distinct values, for example male and female, but many occurrences of those values. This would happen if, for...
operations
Triggers
Database triggerDatabase trigger
A database trigger is procedural code that is automatically executed in response to certain events on a particular table or view in a database. The trigger is mostly used for keeping the integrity of the information on the database...
s in Drizzle are supported for DML
Data Manipulation Language
A data manipulation language is a family of syntax elements similar to a computer programming language used for inserting, deleting and updating data in a database...
, DDL
Data Definition Language
A data definition language or data description language is a syntax similar to a computer programming language for defining data structures, especially database schemas.-History:...
, and a number of additional event-based operations in the server. The PrimeBase BLOB streaming system, which allows Drizzle to stream binary large object
Binary large object
A blob is a collection of binary data stored as a single entity in a database management system. Blobs are typically images, audio or other multimedia objects, though sometimes binary executable code is stored as a blob...
s (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 parsingParsing
In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...
occurs.
Data types
A wide variety of native data typeData type
In computer programming, a data type is a classification identifying one of various types of data, such as floating-point, integer, or Boolean, that determines the possible values for that type; the operations that can be done on values of that type; the meaning of the data; and the way values of...
s are supported, including:
- Variable-length arrayVariable-length arrayIn programming, a variable-length array is an array data structure of automatic storage duration whose length is determined at run time ....
s (including text and composite types) up to 4 GB in total storage size - Arbitrary precisionArbitrary-precision arithmeticIn computer science, arbitrary-precision arithmetic indicates that calculations are performed on numbers whose digits of precision are limited only by the available memory of the host system. This contrasts with the faster fixed-precision arithmetic found in most ALU hardware, which typically...
numericsFloating pointIn computing, floating point describes a method of representing real numbers in a way that can support a wide range of values. Numbers are, in general, represented approximately to a fixed number of significant digits and scaled using an exponent. The base for the scaling is normally 2, 10 or 16... - An enumerated typeEnumerated typeIn computer programming, an enumerated type is a data type consisting of a set of named values called elements, members or enumerators of the type. The enumerator names are usually identifiers that behave as constants in the language...
(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 BuffersProtocol Buffers
Protocol Buffers are a serialization format with an interface description language developed by Google. The original Google implementation for C++, Java and Python is available under a free software, open source license....
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
Memcached
In computing, memcached is a general-purpose distributed memory caching system that was originally developed by Danga Interactive for LiveJournal, but is now used by many other sites. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the...
, MySQL, Voldemort
Voldemort (distributed data store)
Voldemort is a distributed data store that is designed as a key-value store used by LinkedIn for high-scalability storage. It is named after the fictional Harry Potter villain Lord Voldemort....
, and Apache Cassandra.
Although less of a functional feature and more of a developmental feature, the Drizzle project is being built to remove distinctions between internal and external contributors, allowing for cleaner community involvement.
Support and licensing
Drizzle is licensed under version two and three of the GPL, with some parts, such as libdrizzle client library, under the BSDBSD licenses
BSD licenses are a family of permissive free software licenses. The original license was used for the Berkeley Software Distribution , a Unix-like operating system after which it is named....
license.