Tom

Thanks for the great summary! I found the MySQL Differences page on the
Drizzle wiki and I was pleasantly surprised how technical and thorough it
is. It should serve as a suitable bridge between Sasha Pachev's book and the
current (future) state of Drizzle.

I will try and keep a log (wiki?) of notes while reading Sasha's book and
groking the MySQL/Drizzle source and post the link on the Drizzle Wiki.

On Mon, Mar 15, 2010 at 10:25 PM, Tom Hanlon <[email protected]>wrote:

> Rehan,
>
>
> On 16 Mar 2010, at 00:15, Rehan Iftikhar wrote:
>
>  Hi
>>
>> I was wondering how relevant the content in Understanding MySQL Internals
>> (
>> http://www.amazon.com/Understanding-MySQL-Internals-Sasha-Pachev/dp/0596009577)
>> is to drizzle?
>>
>>
>
> Sasha Pachev's book on mySQL internals would be significantly more relevant
> to Drizzle than a book on Oracle internals.
>
> The Core Drizzzle team are likely going to clam that the two are very
> different, but they have spent the last year making it different, and
> working on the differences. So the similarities might be somewhat invisible
> to them. So I will take a shot at an overview and they can correct me as
> needed.
>
> I would say that  until the Drizzle internals book is written that book
>  would be the closest. I think most would agree that the differences are
> significant, but still the core of drizzle is a derived work from MySQL. In
> addition the storage engine concept and compatibility with the major MySQL
> storage engines such as innodb is in drizzle as well.
>
> I can not find my copy of Sasha Pachev's book or I would go through it and
> tell you how well it covers the concepts that are similar.
>
> The Drizzle team can add some details but as far as I can tell here are
> some things that are different and some things that are the same.
>
> Authentication:
>        Drizzle is  plugin based PAM and http_auth and others.
>        MySQL built in authentication of user,host, password at the DB,
> table and column level. Stored in a database table
>
> Thread management:
>        I assume that this is similar. MySQL until very recently had a
> single multi threaded process. A thread was allocated per connection. That
> thread might be cached when the user disconnected and re-used for an
> incoming connection. In recent versions a "pool of threads" optimization has
> been added where a pool of threads is allocated for user connections and
> those threads are used as needed. I am not sure what code base drizzle
> started with and how stable pool of threads was anyhow, so what drizzle
> uses.. I do not know.
>
> Parser:
>        I have not heard much chatter about the drizzle parser so I assume
> it is derived from the MySQL parser. I imagine MySQL dual license model
> caused the MySQL parser to not reuse some open source parser libraries so
> perhaps the code has been cleaned up.. but I am only guessing.
>
> Optimizer:
>        I have not heard much chatter here either, so I assume that the
> optimizer is derived from the MySQL optimizer as well. The drizzle team can
> correct me if I am wrong.
>
> Replication:
>        MySQL relied upon what had been a statement based binary log.
> Meaning that if a statement might have changed data, it was written to a log
> file at the SQL layer and the slave would replay the statements. Features
> were added in MySQL 5.1 to instead of logging the statements that may have
> changed or added rows we instead ask the storage engine for copies of the
> changes and place those in a "row" based replication log the binary log.
> Statement based was still supported and it was/is messy. Statement based had
> some issues, but row based added some issues and some confusion and some
> bugs.
>        Drizzle, tore all of that out and implemented replication capability
> based upon google protocol buffers.
> http://code.google.com/apis/protocolbuffers/docs/overview.html Jay covers
> the internals fairly well in a series of blog posts here..
> http://www.joinfu.com/2009/10/drizzle-replication-changes-in-api-to-support-group-commit/
>
>        It is fair to say that there are significant differences between the
> two systems regarding replication.
>
> Transaction stuff:
>        mySQL at the core was not a transactional database, it was made to
> work somehow with transactional storage engines. I sometimes would think of
> the MySQL server or the SQL layer as coordinating a group transaction to the
> underlying storage engines. The relationship was complicated, and it
> complicated replication somewhat in ways that are a little complicated to go
> into, but in a purely transactional system the same log and system that is
> used for transactional consistency and durability can typical be used to
> assist the replication process. I am not sure what Drizzles statement of
> intent regarding transactions is. But it is important to note that the MySQL
> way.. led to a somewhat messy implementation and it seems that Drizzle is
> hard at work even lately in terms of cleaning that up.
>
>        It seems that any Database that allows plugins for Storage engines
> is going to have to hand off the Durability Requirements to the storage
> engines so in a rough outline things are somewhat similar, but the
> differences will be many.
>
> I could picture Drizzle be more transactional and still allowing the
> storage engines to ignore the transactional stuff. Whereas MySQL was not
> transaction and forced the storage engines to do extra work in order to be
> transactional.
>
> If you are looking for an understanding of the Relational Model and how SQL
> is optimized and how Joins are performed, I found Dan Tow's book SQL tuning
> http://www.amazon.com/SQL-Tuning-Dan-Tow/dp/0596005733 to be helpful. It
> goes through the concepts of indexes and joins really well.
>
> If I find my copy of Sasha Paschev's book I can give you a better review.
>
>
>
> --
> Tom  Hanlon
>
>
>
>
>
>
>
>
>  --
>> -Rehan
>> _______________________________________________
>> Mailing list: 
>> https://launchpad.net/~drizzle-discuss<https://launchpad.net/%7Edrizzle-discuss>
>> Post to     : [email protected]
>> Unsubscribe : 
>> https://launchpad.net/~drizzle-discuss<https://launchpad.net/%7Edrizzle-discuss>
>> More help   : https://help.launchpad.net/ListHelp
>>
>
>


-- 
-Rehan
_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to