"Fossies" - the Fresh Open Source Software Archive

Member "drizzle-7.1.36-stable/docs/mysql_differences.rst" (6 May 2012, 8571 Bytes) of package /linux/misc/old/drizzle-7.1.36-stable.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format (assuming markdown format). Alternatively you can here view or download the uninterpreted source code file. A member file download can also be achieved by clicking within a package contents listing on the according byte size field.

Notable MySQL Differences

Drizzle was forked from the (now defunct) MySQL 6.0 tree in 2008. Since then there have been a lot of changes. Drizzle is in some ways similar to MySQL, and in other ways, unrecognizable.

This section of documentation aims to explore some of the notable differences between MySQL and Drizzle, and has been modified from its original state on the Drizzle Wiki.

Usage

Installation

Architecture

Drizzle is designed around the concept of being a microkernel. There should be a small core of the server with most functionality being provided through small, efficient and hard to misuse plugin interfaces. The goal is a small, light-weight kernel that is easy to maintain, understand and extend.

Drizzle is written in C++ and makes use of the Standard Template Library (STL) and Boost. Only where performance or correctness proves to be inadequate will we consider rolling our own; our preference is to fix the upstream library instead.

Network protocol

Pluggable network protocols allow Drizzle to speak one (or more) of several protocols. Currently we support the MySQL protocol (compatible with existing MySQL client libraries) and the Drizzle protocol, which is still under development.

The Drizzle protocol embodies several important differences from MySQL:

There is also a console plugin -- instead of providing access over a network socket, this plugin allows access from the current tty.

Plugin API

The existing plugin APIs that Drizzle inherited from MySQL have been reworked.

Stored Procedures

Drizzle does not currently have any plugins that implement stored procedures. We viewed the implementation in MySQL to be non-optimal. They bloat the parser and only support one language (SQL2003 stored procedures), which was not well known.

Fundamentally, stored procedures usually are not the correct architectural decision for applications that need to scale. Pushing more computation down into the database (which is the trickiest layer to scale) isn't a good idea.

We do recognize the value of using stored procedures to reduce the time row locks are held, but think we can achieve the same advantage by improved batching of commands over the wire. This removes adding and administering stored procedures from the list of things that can go wrong in administering the database.

Triggers

Drizzle does not currently have any plugin that provides SQL triggers. We have some hooks for callbacks inside the server so that plugins can hook into points that triggers could.

Views

SQL Views are not currently supported in Drizzle. We believe they should be implemented via a query rewrite plugin.

See the Query Rewrite Blueprint on launchpad.

Partitioning

INFORMATION_SCHEMA

The INFORMATION_SCHEMA provides access to database metadata.

The INFORMATION_SCHEMA in Drizzle is strictly ANSI compliant. If you write a query to any of the tables in the INFORMATION_SCHEMA in Drizzle, you can directly run these on any other ANSI compliant system.

For information that does not fit into the standard, there is also the DATA_DICTIONARY schema. Use of tables in DATA_DICTIONARY is non-portable.

This allows developers to easily know if the query is portable or not.

Authentication, Authorization, and Access

There are no grant or privilege tables. Drizzle authentication, authorization, and access are provided by plugins.

/administration/authentication

Command Line Clients

We've stopped the confusion: -p means port and -P means password.

No gotcha of using the unix socket when localhost is specified and then connecting you to the wrong database server.

There is no Drizzle admin command.

Storage Engines

The default Storage Engine is InnoDB and the MyISAM storage engine only exists for temporary tables only. In a future release, it will not be user accessible at all.

A number of storage engines have been removed:

FRM Files

There are no FRM files in Drizzle. Engines now own their own metadata. Some still choose to store these in files on disk. These are now in a documented file format (using the google protobuf library).

SHOW commands

Several SHOW commands have been removed, replaced with INFORMATION_SCHEMA or DATA_DICTIONARY views. All SHOW commands are aliases to INFORMATION_SCHEMA queries. Our INFORMATION_SCHEMA implementation does not have the drawbacks of the MySQL implementation.

Here are some specific SHOW differences:

Removed commands

Removed functions

Keywords removed

Objects Removed