~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/mysql_differences.rst

  • Committer: Monty Taylor
  • Date: 2011-02-13 17:26:39 UTC
  • mfrom: (2157.2.2 give-in-to-pkg-config)
  • mto: This revision was merged to the branch mainline in revision 2166.
  • Revision ID: mordred@inaugust.com-20110213172639-nhy7i72sfhoq13ms
Merged in pkg-config fixes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
 
9
9
Usage
10
10
-----
11
 
 * There is no embedded server. The Drizzle Server is not loadable as a shared library.
12
 
 * Drizzle is optimized for massively concurrent environments. If we have the choice of improving performance for 1024 simultaneous connections to the detriment of performance with only 64 connections, we will take that choice.
 
11
 * There is no embedded server. The Drizzle Server is not loadable as a shared
 
12
   library.
 
13
 * Drizzle is optimized for massively concurrent environments. If we have the
 
14
   choice of improving performance for 1024 simultaneous connections to the
 
15
   detriment of performance with only 64 connections, we will take that choice.
13
16
 * It is designed for modern POSIX systems
14
17
 * Microsoft Windows is not a supported platform (neither is HP-UX or IRIX).
15
18
 * Drizzle doesn't use timezones. Everything is UTC.
19
22
 
20
23
 * No scripts/mysql_install_db or similar. Drizzle aims for a "just works" installation, without administrative overhead.
21
24
 * No system database that needs upgrading between versions.
22
 
 * Drizzle can listen on the Drizzle port (4427) and/or MySQL port (3306) and speak the respective protocols.
 
25
 * Drizzle can listen on the Drizzle port (4427) and/or MySQL port (3306)
 
26
   and speak the respective protocols.
23
27
 
24
28
Architecture
25
29
------------
27
31
Drizzle is designed around the concept of being a microkernel. There should
28
32
be a small core of the server with most functionality being provided through
29
33
small, efficient and hard to misuse plugin interfaces. The goal is a small,
30
 
light-weight kernel that is easy to maintain, understand and extend.
 
34
light weight kernel that is easy to maintain, understand and extend.
31
35
 
32
36
Drizzle is written in C++ and makes use of the Standard Template Library (STL)
33
37
and Boost. Only where performance or correctness proves to be inadequate will
39
43
 
40
44
Pluggable network protocols allow Drizzle to speak one (or more) of several
41
45
protocols. Currently we support the MySQL protocol (compatible with existing
42
 
MySQL client libraries) and the Drizzle protocol, which is still under
 
46
MySQL client libraries) and the Drizzle protocol which is still under
43
47
development.
44
48
 
45
49
The Drizzle protocol embodies several important differences from MySQL:
46
50
 
47
 
 * Client sends first packet (rather than the server)
 
51
 * Client sends first packet instead of server
48
52
 * Built in sharding
49
 
 * Multi statement support (without requiring a semicolon to separate them)
50
 
 * Room for expansion to include NoSQL-type commands inline with SQL commands.
 
53
 * Multi statement support (without using a semicolon to separate them)
 
54
 * Room for expansion to include NoSQL type commands inline with SQL.
51
55
 
52
56
There is also a console plugin -- instead of providing access over a network
53
57
socket, this plugin allows access from the current tty.
59
63
 
60
64
 * User Defined Functions (UDFs) now follow the same API as a given
61
65
   server instead of a different C API. This means that UDFs are on the
62
 
   exact same level as built-in functions
63
 
 * Some parts of the storage Engine API have been extensively reworked, especially
64
 
   around transactions and DDL
 
66
   exact same level as built-in functions.
 
67
 * Storage Engine API has had some parts extensively reworked, especially
 
68
   around transactions and DDL.
65
69
 * Logging is now pluggable
66
70
 * Authentication is pluggable
67
71
 * Replication is pluggable
68
72
 * INFORMATION_SCHEMA plugins have been replaced by the function_engine, which
69
 
   is a lot more space and time efficient
 
73
   is a lot more space and time efficient.
70
74
 * Network protocols are pluggable
71
 
 * Scheduler is pluggable (multi_thread, pool_of_threads, etc)
72
 
 * Plugin points for manipulating rows before/after operations: these can be used for
73
 
   replication and the PBMS Blob Streaming plugin
 
75
 * Scheduler is pluggable (multi_thread, pool_of_threads etc)
 
76
 * Plugin points for manipulating rows before/after operations: used for
 
77
   replication and the PBMS Blob Streaming plugin.
74
78
 
75
79
Stored Procedures
76
80
-----------------
77
81
 
78
82
Drizzle does not currently have any plugins that implement stored procedures. We
79
 
viewed the implementation in MySQL to be non-optimal. They bloat the parser
80
 
and only support one language (SQL2003 stored procedures), which was not
 
83
viewed the implementation in MySQL to be non-optimal, bloating the parser
 
84
and only supporting one language (SQL2003 stored procedures), which was not
81
85
well known.
82
86
 
83
87
Fundamentally, stored procedures usually are not the correct architectural
84
88
decision for applications that need to scale. Pushing more computation down
85
89
into the database (which is the trickiest layer to scale) isn't a good idea.
86
90
 
87
 
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.
 
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
 
94
administering stored procedures to the list of things that can go wrong in
 
95
administering the database.
88
96
 
89
97
Triggers
90
98
--------
97
105
-----
98
106
 
99
107
SQL Views are not currently supported in Drizzle. We believe they should be
100
 
implemented via a query rewrite plugin. 
101
 
 
102
 
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.
103
109
 
104
110
Partitioning
105
111
------------
124
130
Authentication lies in Drizzle plugins. Currently there are PAM and HTTP AUTH plugins for authentication.
125
131
Through the PAM plugin, you can use any PAM module (such as LDAP).
126
132
 
127
 
For more information, see our :doc:`authentication` doc.
128
 
 
129
133
Command line clients
130
134
--------------------
131
135
 
181
185
 * SET NAMES
182
186
 * Multi-table delete and multi-table update code was removed and can be accomplished through subqueries. More detailed information can be found in the :doc:`dml` section.
183
187
 
 
188
Operators Removed
 
189
-----------------
 
190
 
 
191
Bit operators
 
192
 * &&
 
193
 * >>
 
194
 * <<
 
195
 * ~
 
196
 * ^
 
197
 * '|'
 
198
 * &
 
199
 
184
200
Removed functions
185
201
-----------------
186
202
 
191
207
Keywords removed
192
208
----------------
193
209
 
 
210
 * BIT_AND
 
211
 * BIT_OR
 
212
 * BIT_XOR
194
213
 * CIPHER
195
214
 * CLIENT
196
215
 * CODE