~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/mysql_differences.rst

edits

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
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.
 
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.
16
13
 * It is designed for modern POSIX systems
17
14
 * Microsoft Windows is not a supported platform (neither is HP-UX or IRIX).
18
15
 * Drizzle doesn't use timezones. Everything is UTC.
22
19
 
23
20
 * No scripts/mysql_install_db or similar. Drizzle aims for a "just works" installation, without administrative overhead.
24
21
 * No system database that needs upgrading between versions.
25
 
 * Drizzle can listen on the Drizzle port (4427) and/or MySQL port (3306)
26
 
   and speak the respective protocols.
 
22
 * Drizzle can listen on the Drizzle port (4427) and/or MySQL port (3306) and speak the respective protocols.
27
23
 
28
24
Architecture
29
25
------------
31
27
Drizzle is designed around the concept of being a microkernel. There should
32
28
be a small core of the server with most functionality being provided through
33
29
small, efficient and hard to misuse plugin interfaces. The goal is a small,
34
 
light weight kernel that is easy to maintain, understand and extend.
 
30
light-weight kernel that is easy to maintain, understand and extend.
35
31
 
36
32
Drizzle is written in C++ and makes use of the Standard Template Library (STL)
37
33
and Boost. Only where performance or correctness proves to be inadequate will
43
39
 
44
40
Pluggable network protocols allow Drizzle to speak one (or more) of several
45
41
protocols. Currently we support the MySQL protocol (compatible with existing
46
 
MySQL client libraries) and the Drizzle protocol which is still under
 
42
MySQL client libraries) and the Drizzle protocol, which is still under
47
43
development.
48
44
 
49
45
The Drizzle protocol embodies several important differences from MySQL:
50
46
 
51
 
 * Client sends first packet instead of server
 
47
 * Client sends first packet (rather than the server)
52
48
 * 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.
 
49
 * Multi statement support (without requiring a semicolon to separate them)
 
50
 * Room for expansion to include NoSQL-type commands inline with SQL commands.
55
51
 
56
52
There is also a console plugin -- instead of providing access over a network
57
53
socket, this plugin allows access from the current tty.
63
59
 
64
60
 * User Defined Functions (UDFs) now follow the same API as a given
65
61
   server instead of a different C API. This means that UDFs are on the
66
 
   exact same level as built-in functions.
67
 
 * Storage Engine API has had some parts extensively reworked, especially
68
 
   around transactions and DDL.
 
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
69
65
 * Logging is now pluggable
70
66
 * Authentication is pluggable
71
67
 * Replication is pluggable
72
68
 * INFORMATION_SCHEMA plugins have been replaced by the function_engine, which
73
 
   is a lot more space and time efficient.
 
69
   is a lot more space and time efficient
74
70
 * Network protocols are pluggable
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.
 
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
78
74
 
79
75
Stored Procedures
80
76
-----------------
81
77
 
82
78
Drizzle does not currently have any plugins that implement stored procedures. We
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
 
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
85
81
well known.
86
82
 
87
83
Fundamentally, stored procedures usually are not the correct architectural
88
84
decision for applications that need to scale. Pushing more computation down
89
85
into the database (which is the trickiest layer to scale) isn't a good idea.
90
86
 
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.
 
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.
96
88
 
97
89
Triggers
98
90
--------
105
97
-----
106
98
 
107
99
SQL Views are not currently supported in Drizzle. We believe they should be
108
 
implemented via a query rewrite plugin. See the `Query Rewrite Blueprint <https://blueprints.launchpad.net/Drizzle/+spec/query-rewrite>`_ on launchpad.
 
100
implemented via a query rewrite plugin. 
 
101
 
 
102
See the `Query Rewrite Blueprint <https://blueprints.launchpad.net/Drizzle/+spec/query-rewrite>`_ on launchpad.
109
103
 
110
104
Partitioning
111
105
------------
130
124
Authentication lies in Drizzle plugins. Currently there are PAM and HTTP AUTH plugins for authentication.
131
125
Through the PAM plugin, you can use any PAM module (such as LDAP).
132
126
 
 
127
For more information, see our authentication doc.
 
128
 
133
129
Command line clients
134
130
--------------------
135
131