Tuesday 19 October 2010

IOUG's place in the MySQL Community

As I have previously stated it is quite rare that I blog about my feelings about things going on with Oracle in the MySQL community, others do this a lot better than me, but a blog post I've seen today has pushed me to write something about how I feel.

To me it implies that IOUG are trying to put themselves as the leaders of the MySQL community.  I personally feel that they need to earn our trust first before trying this move.

I see that they mention the Collaborate conference, but no mention of the O'Reilly MySQL Conference & Expo (what I feel is the biggest social event on the MySQL calendar).  Not only this but the Collaborate conference runs at the same time as the MySQL Conference.  I don't feel this is a good start at earning trust.

EDIT: by the above I meant that promoting one but not the other as implied leaders of the community doesn't feel like a good start...  Not that the timing was intentional.  I should really blog *after* morning coffee :)

These are my personal feelings on the matter and they may not be shared by others, we are a community and are not going to all agree.  But it would be good if IOUG could give us some confidence in this matter.

Friday 1 October 2010

Migrating from MySQL to Drizzle

One of Drizzle's great strengths is that it is not afraid to deviate from its MySQL origins.  Unfortunately the side-effect of this is that it can make migration from MySQL to Drizzle more difficult.  I have previous noted that drizzledump can do the schema migration for you.  Now I will go into more details with some other information that may be useful if you are considering migration.

The first thing I should point out is that the default storage engine in Drizzle in InnoDB, MyISAM exists only for temporary tables and we have some other options such as PBXT and BlitzDB.  As a kind-of side effect to this, there is no FULLTEXT indexes in Drizzle, so these have to be dropped as part of the migration.

When it comes to integer types we have two, INT and BIGINT.  So TINYINT, SMALLINT, etc... need to be changed to INT.  We also have no unsigned so an INT UNSIGNED needs to become BIGINT to prevent potential loss of data.  Finally INT doesn't have column widths, for example the bit in braces in "INT(11)" so these can go.

There are also several changes to TIME/DATE storage.  There is no TIME type in Drizzle, so Drizzledump converts this into an INT of seconds.  MySQL accepts a date of 0000-00-00 whereas Drizzle's minimum date is 0001-01-01.  So Drizzledump converts 0000-00-00 to NULL.  Finally we have no YEAR data type in Drizzle.  This should convert to INT using Drizzledump but as I am writing this I have found a bug here which I will fix shortly.

As far as TEXT/BLOB types go there is no tiny/medium/long.  This is now just BLOB or TEXT.

We have one single character set in Drizzle, UTF8.  So you should make sure data is exported in that character set.  Different collations, however, are supported.

When you want to connect up your application to Drizzle, there is good news here.  Drizzle supports the MySQL protocol and listens on port 3306!  This means, for example, that your PHP app will connect straight to Drizzle thinking it is a MySQL server using the MySQL functions you are familiar with.  There is no UNIX socket, so make sure your apps connect to 127.0.0.1 instead of localhost for local connections.  There is no username/password by default but you can enable one of the authentication plugin modules if you require them.

The query syntax is pretty much the same as MySQL, there are things we don't have such as stored procedures and triggers.  But for the most part this is unchanged.

One month at Rackspace

My official start date at Rackspace was the 31st August, so I have now been here a full month working on the Drizzle project, and so far it has been a really wild ride which I hope will continue for a long time to come.

First I should mention why I left Oracle/MySQL to kill all speculation on the subject.  I love the people I worked during my time at MySQL, they are a great and very knowledgeable team and still talk to some of them now.  Will Oracle be a good home for MySQL?  Its not for me to speculate and I will not comment on this.  My primary reason for leaving was administrative, I had a lot of payroll/expense/HR problems at Oracle after the Sun acquisition which led to a great deal of stress for my whole family.  I have always been a fan of Drizzle and have been contributing when I had spare time, I've also been a big fan of Rackspace and their work attitude/policies so I seized the opportunity when it became available.

During my time as a paid developer for the Drizzle project I have fixed roughly 30-35 bugs (its hard to get a real figure from Launchpad without opening every bug I have ever fixed).  I have also implemented the MySQL->Drizzle migration blueprint and made a start on some other cool new stuff which I will blog about soon.  We also have a beta release (if you have been living in a hole and haven't seen all the blog posts on this)!  There are two things I have found I love working on in Drizzle, diagnosing strange problems and improving the user experience.  I think the former has rubbed off from working in MySQL Support and the latter from working on the various websites at Dennis Publishing.

One of my worries was what my new team would be like, thankfully everyone in Drizzle is as warm and welcoming as my previous MySQL team and I think they are all great and very talented guys.  I'd like to thank everyone at Drizzle and Rackspace for giving me this opportunity so far and I hope I can contribute as much as possible to bring every success to both.