Sunday, March 14, 2010

Thoughts on Drizzle

I wish the case for Drizzle could be made without bashing MySQL. Sometimes it is, but too often it isn't. I guess this is karma.

This isn't a rant against Drizzle. This is a rant against pulling up Drizzle by pushing down MySQL. I occasionally have negative things to say about MySQL, but I usually say them to get the problems fixed. We have lots of complaints about MySQL because we use it in production.

What have I learned about the Drizzle vision?
  • Drizzle will re-think everything
    • Alas, I have problems to solve today. While I am passionate about doing things correctly, I am also aware that compromises must be made to get things done. Some of those compromises turn out to be mistakes. It isn't always possible to know which compromises will turn out to be a mistake. Nor is it always possible to identify the right thing.
  • You hate MySQL replication? You now love Drizzle
    • I love what Drizzle might do for replication. I love what MySQL is doing with replication. I can't compare the two until Drizzle replication is running in production.
  • MySQL has a data type called a 3-byte integer. Think about that for a moment. On today’s server hardware that does not make a whole lot of sense
    • I thought about it. Does this mean that some of my tables will grow from 3G to 4G on disk? I won't be happy if that is the result.
  • No triggers or stored procedures. That stuff is bloat as done in MySQL, and Drizzle has other ways to deal with these needs. These capabilities can be added in later as needed such that they are done right. 
    • I need stored procedures. They are required for high-performance OLTP as they minimize transaction duration for multi-statement transactions. Alas, I have yet to use them in MySQL.
  • MyISAM is gone. Long live the Queen! 
    • Alas, I need MyISAM. Long-running insert, update and delete statements consume too many resources in InnoDB. Such statements are used for reporting jobs on slaves and in that case I want to use InnoDB for production tables and MyISAM for transient tables.
  • Ever tried to compile MySQL from source. Hah! Yeah, drizzle builds like butter.
    • I have no problems building MySQL from source. I have had more problems building Drizzle because it has a few more dependencies (google protobufs, libdrizzle). But both are easy to build and nobody cares too much in either case with one exception. Does Drizzle build on Windows?

6 comments:

  1. Yeah, I also agree that the sales pitch would be better if they would focus on the upsides. For MyISAM I found that InnoDB just took way too long to load up a few GB via LOAD DATA INFILE. Also it turned out it was quite convinient to be able to copy the imported MyISAM data and index files to the other developers. Worse yet, since I do not have an SSD in my laptop I just synlink to the external SSD I use for imports, sometimes its there, sometimes it isnt. MySQL keeps plugging along.

    That being said, Drizzle has a ton of nice features on the roadmap. Just transactional DDL has me doing back flipps. But a lot of what I am hoping for isnt there yet. That being said, the work seems to be shaping up very nicely and I am quite happy with most of the choices I have seen the developers make. Good things are happening!

    ReplyDelete
  2. Lots of good things are in progress in Drizzle.

    ReplyDelete
  3. Very fair comments, Mark. Very fair. I would prefer not to bash MySQL as well, as I see MySQL and Drizzle as having very different directions, target markets and developer audiences. There really is no reason to bash MySQL.

    ReplyDelete
  4. "I occasionally have negative things to say about MySQL, but I usually say them to get the problems fixed"

    Well said!
    In one of my previous posts I ranted about strictness in MySQL. Apparently, it led to a commend in the form of "why do you even use MySQL? use XXX instead!"

    I believe many people are confusing occasional ranting or error reporting as "blaming". This is not the case.
    In particular in the world of open source there is always room for "ranting", in the form you describe: to make things work better.

    ReplyDelete
  5. Just curious...why comparison is always against MySQL..why not others?
    I agree MySQL is father. but Drizzle got an individuality now.
    Drizzle is addressing problems crippling other players very well (especially the scalability).

    In my view:
    Cars of 80's are not there on roads now.But RDBMS softwares are still there without any proper redesign for the change in environment and technology.
    I feel Drizzle is an effort address this gap.

    Nowadays we are seeing lots migrations to No-SQL. not because they hates SQL or RDBMS. just because Scalability and Manageability is a problem.

    I consider Drizzle as very right reply to propitiatory, monolithic, difficult to manage and unsalable RDBMS systems.

    No need to bash anything in particular. But.."Survival of the fittest".

    ReplyDelete
  6. Stored procedures in MySQL perform terribly, they always have and always will due to the way they are architected. If you are currently relaying on stored procedures for a production site, you are really doing something wrong. I have never once needed a stored procedure and I have dealt with some very scalable sites.

    ReplyDelete

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.