Brian Aker explains:
- I've been wondering for a long time about the changes to MySQL after 4.1. I believe there is a large market of users who never wanted them, and never cared for them. I also wanted to question the foundations of what we built. Do users want wrong data? How often is the query cache really valuable? If everyone just has a root user with all privs, why carry the baggage of the ACL code? etc.
What is the goal?
A micro-kernel that we then extend to add what we need. All additions come through interfaces that can be compiled/loaded in as needed. The target for the project is web infrastructure backend and cloud components.
Is this a product of Sun/MySQL?
No, though several of the authors do work for Sun/MySQL. The development model is one based around open collaboration. Drizzle's license is the GPL v2.
So what are the differences between Drizzle and MySQL?
MySQL has the following features that Drizzle lacks:
- SQL modes
- prepared statements
- stored procedures
- query cache
- data conversion inserts
Compared to MySQL, Drizzle has:
- Fewer data types
- Fewer storage engines
- Less code
- The primary engine will be transactional (yet to be done)
Isn't this just SQLite?
No, SQLite can't handle concurrent users, for one. Drizzle lies somewhere between SQLite and MySQL.
Why not now? :)
"This is awesome, but I need you to add back..."
Forget it. Nothing is going back in at this time. As for the future? Maybe, but at the moment this is not the target. If you want more features, go use MySQL.
"I'm a Java programmer, and I really need prepared statements."
Server-side Prepared Statements have never worked correctly on MySQL, and are usually turned off. Most MySQL connectors, including the JDBC-compatable connector, do not use server-side prepared statements, but instead simulate them by using client-side prepared statements.
In short, you aren't using prepared statements now, even when you think you are, so you will never notice or miss their current absence in Drizzle.
What platforms will Drizzle build on? Will it ever run on Windows?
The Drizzle developers compile on Mac OS X, Linux (Fedora and Debian), and on Solaris Express.
Windows is not supported and will stay that way until it gets a working POSIX layer and autoconf system. This makes the Windows platform reasonable to support.
Really, get a working GNU chain going on Windows and you can get Drizzle working on it. Installing Strawberry Perl handles a lot of this.
Drizzle relies on a C99-compliant compiler. Please do not ask us to support older hardware, compilers, or operating systems.
What is the future?
Less code, more modularity, and more active involvement. A few things that still need to be done:
- Finish switch to stdint
- Walk through and refactor all of the replication code
- Re-implement information schema
- Modular logging system
- Modular ACL system
"This is not a SQL-compliant relational..."
That's true. We do not aim to be that.
What is left to be cut out?
What is the target?
Deliver a microkernel that we can use to build a database that meets the needs of a web/cloud infrastructure. To this end we are exploring HTTP interfaces, sharding enhancements, etc. Do not expect an Oracle, MySQL, Postgres, or DB2.
There is no GA date at the moment.
We are focusing on multi-core architecture. This is not designed to run on a wrist watch (hint, go use SQLite). We support both 32bit and 64bit but the class of machine we are targeting is 64bit. We are making design decisions which assume very large amounts of RAM will be made available to the DB.
Can I run a website with this?
No. We are still making incompatible changes, and certainly do not believe the code is production quality. Right now we are defaulting many configure operations to generate debugging code for us so our binaries are not optimal. Therefore, do not go out and benchmark this and expect it to be one way or the other. We are currently only doing benchmarks where it makes sense for us to determine where bottlenecks are.
Why is it called "drizzle"?
Brian Aker explains:
- I am from Seattle. Drizzle is our normal form of "rain" but it is not "rain", it is drizzle. This was a bit of a rainy day project that finally found a spot in my schedule :)
Why did you pick InnoDB as the storage manager of choice?
We want Drizzle to be ACID-compliant by default, and Innodb is a rock-solid ACID-compliant engine that has worked with MySQL for a number of years.
What Field Types do you support?
text, blob, varchar, varbinary, timestamp, datetime, date, time, enum, Set, (1,2,4,8 byte)INT, DOUBLE, and Decimal.
Will Drizzle run on the same port that MySQL does?
No. The IANA has assigned TCP port 4427 to Drizzle.
Can I get involved?
Most certainly. There is plenty to do from refactoring code, design of interfaces, documentation and blueprints, etc. The best way to get involved it to join the mailing list at:
Also, take a look at the page of Tasks that need help.
If you wish to suggest a refactoring project or an interface please email the mailing list and keep an open mind. Do not expect anyone will work on your idea though. You may influence someone to do that, but more then likely you will need to roll up your sleeves and write some code. For very simple bits, you are welcome to ask others on #drizzle on Freenode, but please be aware that you may be asked to email the mailing list.
Showing up with a big block of code is probably the worst way of getting your work accepted. This is unlikely to work, as it is difficult to merge the code into the trunk.
Right now we use a simple captain system for commits. Anyone can send in a proposal for merge via launchpad but your changes may be flowed first through someone who has been around long enough to understand code requirements to review your code. This system is based entirely on trust, and individuals who have shown that they can provide three good patches gain credibility. Starting small is fine, patches that are just comments or are even two or three line cleanups are welcome and encouraged. I recommend that anyone who wants to work on something first start with something of this size. Patches like these are valuable and teach you how to work with the system.
The general rule is no new code in the core of the server, and any changes to interfaces need to be code-line neutral. This means that if you want to add an interface, you need to be able to remove at least the number of lines of code you added. This is a rule of thumb, and also does not apply to code cleanup.
It should be pointed out that we are more focused on code style, performance, and overall maintenance than we are on features.
Is the copyright of my code assigned to MySQL or to Sun?
Absolutely not. You or your employer own your copyright. We only ask that you document your code as coming from another project if you yourself do not write it. We track all submissions via bzr and if we find that your patch was not properly credited we will remove it.
What are the mechanics of contributing?
What is the coding style?
Please look at this Bazaar branch: https://blueprints.launchpad.net/drizzle/+spec/style-cleanup
If you have a question on this, please email the mailing list so that we can clarify the document. When you get the answer, please update the code style document :)
Should I email the mailing list with patches?
Please, God, no. We live in the age of the Internet :)
Create an account on launchpad.net. Create your own tree and let one of us pull from it.
What should I do? I'm getting an error like this:
/usr/local/bin/drizzle: error while loading shared libraries: libdrizzle.so.16: cannot open shared object file: No such file or directory
See this page
Access to information
Can I look at your stats?
Yes, while we will be publishing information from time to time, if you really want to know what's happening at drizzleproject.org and planetdrizzle.org, then send an email to request_stats @ drizzleproject.org giving us your name, and a reference name to a Drizzle contributor or active person in the Drizzle community that can verify your a real person with interest in Drizzle.
Questions to be answered
- Will I be able to just use Perl's DBD::MySQL (or any other client library) to connect to a Drizzle database? Can I just change the port number to 4427 and have it Just Work?
- What will migration from MySQL down to Drizzle look like?
- Can and how can this be used with PHP in a test / development environment? More specifically, what are the steps in migrating data from MySQL to Drizzle and setting up PHP to connect to Drizzle?