~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/mysql_differences.rst

  • Committer: Brian Aker
  • Date: 2010-12-08 20:27:54 UTC
  • mfrom: (1945.3.9 drizzle)
  • Revision ID: brian@tangent.org-20101208202754-vlmv7nafvktezfe6
Merge Marisa, docs changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
Notable MySQL Differences
3
3
=========================
4
4
 
5
 
Drizzle was forked from the (now defunct) MySQL 6.0 tree. Since then there
6
 
have been a lot of changes. Some areas are similar, others unrecognisable.
7
 
 
8
 
This section aims to explore some of the notable differences between MySQL
9
 
and Drizzle.
10
 
 
11
 
This section was originally adapted from the Drizzle Wiki.
 
5
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.
 
6
 
 
7
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.
12
8
 
13
9
Usage
14
10
-----
17
13
 * Drizzle is optimized for massively concurrent environments. If we have the
18
14
   choice of improving performance for 1024 simultaneous connections to the
19
15
   detriment of performance with only 64 connections, we will take that choice.
20
 
 * Designed for modern POSIX systems
 
16
 * It is designed for modern POSIX systems
21
17
 * Microsoft Windows is not a supported platform (neither is HP-UX or IRIX).
22
 
 * No timezones. Everything is UTC.
 
18
 * Drizzle doesn't use timezones. Everything is UTC.
23
19
 
24
20
Installation
25
21
------------
26
22
 
27
 
 * No scripts/mysql_install_db or similar. A "just works" installation
28
 
   mentality without administrative overhead.
 
23
 * No scripts/mysql_install_db or similar. Drizzle aims for a "just works" installation, without administrative overhead.
29
24
 * No system database that needs upgrading between versions.
30
25
 * Drizzle can listen on the Drizzle port (4427) and/or MySQL port (3306)
31
26
   and speak the respective protocols.
33
28
Architecture
34
29
------------
35
30
 
36
 
Drizzle is designed around the concept of being a micro-kernel. There should
 
31
Drizzle is designed around the concept of being a microkernel. There should
37
32
be a small core of the server with most functionality being provided through
38
33
small, efficient and hard to misuse plugin interfaces. The goal is a small,
39
 
light weight kernel which is easy to maintain, understand and extend.
 
34
light weight kernel that is easy to maintain, understand and extend.
40
35
 
41
 
Drizzle is written in C++ making use of the Standard Template Library (STL)
 
36
Drizzle is written in C++ and makes use of the Standard Template Library (STL)
42
37
and Boost. Only where performance or correctness proves to be inadequate will
43
 
we consider rolling our own, and our preference is to fix the upstream library
 
38
we consider rolling our own; our preference is to fix the upstream library
44
39
instead.
45
40
 
46
41
Network protocol
49
44
Pluggable network protocols allow Drizzle to speak one (or more) of several
50
45
protocols. Currently we support the MySQL protocol (compatible with existing
51
46
MySQL client libraries) and the Drizzle protocol which is still under
52
 
development but aims for several important differences:
 
47
development.
 
48
 
 
49
The Drizzle protocol embodies several important differences from MySQL:
53
50
 
54
51
 * Client sends first packet instead of server
55
 
 * built in sharding
56
 
 * multi statement support (without using a semicolon to separate them)
57
 
 * room for expansion to include NoSQL type commands inline with SQL.
 
52
 * Built in sharding
 
53
 * Multi statement support (without using a semicolon to separate them)
 
54
 * Room for expansion to include NoSQL type commands inline with SQL.
58
55
 
59
 
There is also a console plugin that instead of providing access over a network
60
 
socket, allows access from the current tty.
 
56
There is also a console plugin -- instead of providing access over a network
 
57
socket, this plugin allows access from the current tty.
61
58
 
62
59
Plugin API
63
60
----------
64
61
 
65
 
Existing plugin APIs inherited from MySQL have been reworked.
 
62
The existing plugin APIs that Drizzle inherited from MySQL have been reworked.
66
63
 
67
 
 * User Defined Functions (UDFs) now follow the same API as within the
 
64
 * User Defined Functions (UDFs) now follow the same API as a given
68
65
   server instead of a different C API. This means that UDFs are on the
69
 
   exact same level as builtin functions.
 
66
   exact same level as built-in functions.
70
67
 * Storage Engine API has had some parts extensively reworked, especially
71
68
   around transactions and DDL.
72
69
 * Logging is now pluggable
82
79
Stored Procedures
83
80
-----------------
84
81
 
85
 
Drizzle does not currently have any plugins implement stored procedures. We
 
82
Drizzle does not currently have any plugins that implement stored procedures. We
86
83
viewed the implementation in MySQL to be non-optimal, bloating the parser
87
 
and only supporting one language (SQL2003 stored procedures) which was not
 
84
and only supporting one language (SQL2003 stored procedures), which was not
88
85
well known.
89
86
 
90
87
Fundamentally, stored procedures usually are not the correct architectural
91
88
decision for applications that need to scale. Pushing more computation down
92
89
into the database (which is the trickiest layer to scale) isn't a good idea.
93
90
 
94
 
We do recognise that the ability to reduce the time row locks are held
95
 
by using stored procedures is valuable, but think the same advantage can
96
 
be gotten with improved batching of commands over the wire instead of adding
 
91
We do recognize that the ability to reduce the time row locks are held
 
92
by using stored procedures is valuable, but think we can achieve the same 
 
93
advantage by improved batching of commands over the wire instead of adding and
97
94
administering stored procedures to the list of things that can go wrong in
98
 
admisistering the database.
 
95
administering the database.
99
96
 
100
97
Triggers
101
98
--------
108
105
-----
109
106
 
110
107
SQL Views are not currently supported in Drizzle. We believe they should be
111
 
implemented via a query rewrite plugin. See the `Query Rewrite Blueprint <https://blueprints.launchpad.net/drizzle/+spec/query-rewrite>`_ on launchpad.
 
108
implemented via a query rewrite plugin. See the `Query Rewrite Blueprint <https://blueprints.launchpad.net/Drizzle/+spec/query-rewrite>`_ on launchpad.
112
109
 
113
110
Partitioning
114
111
------------
115
112
 
116
113
INFORMATION_SCHEMA
117
114
------------------
 
115
The INFORMATION_SCHEMA provides access to database metadata.
118
116
 
119
117
The INFORMATION_SCHEMA in Drizzle is strictly ANSI compliant. If you write
120
118
a query to any of the tables in the INFORMATION_SCHEMA in Drizzle, you can
128
126
Authentication, Authorization and Access
129
127
----------------------------------------
130
128
 
131
 
Plugins. Currently there are PAM and HTTP AUTH plugins for authentication.
 
129
Authentication lies in Drizzle plugins. Currently there are PAM and HTTP AUTH plugins for authentication.
132
130
Through the PAM plugin, you can use any PAM module (such as LDAP).
133
131
 
134
132
Command line clients
139
137
No gotcha of using the unix socket when localhost is specified and then
140
138
connecting you to the wrong database server.
141
139
 
142
 
There is no drizzleadmin command.
 
140
There is no Drizzle admin command.
143
141
 
144
142
Storage Engines
145
143
---------------
157
155
---------
158
156
 
159
157
There are no FRM files in Drizzle. Engines now own their own metadata.
160
 
Some choose to still store these in files on disk. These are now in a
 
158
Some still choose to store these in files on disk. These are now in a
161
159
documented file format (using the google protobuf library).
162
160
 
163
161
SHOW commands