Understanding the various MySQL Products & Variants

The MySQL marketplace today is far more complex then simply choosing between a particular version of MySQL that Sun/MySQL produces.
The MySQL server product in general is released under the GNU General Public License (GPL) v2, however you should carefully review the MySQL Legal Policies as a number of exceptions and different license agreements operate for companion tools such as MySQL Cluster, MySQL client libraries and documentation for example.

Looking into the MySQL ecosystem for products, I’ve produced the following categories:

Sun/MySQL Official Products

MySQL Versions

MySQL Variants

Community

Enterprise

MySQL Plugins

MySQL Patches

MySQL Alternatives

Why does such a diversification occur? I attribute this to three primary causes:

The GPL license by nature allows for an organization to take the product, modify it and use it for their specific needs. They can also provide these patches under GPL for others to use and incorporate. While this has occurred for example Google , FaceBook, eBay , Proven Scaling and Percona to name a few, Sun/MySQL has elected not to undertake any proactive process of incorporating these in any timely fashion.

The policy of Sun/MySQL to allow for contributions was so strict, and combined with a properietory Version Control System BitKeeper you had to purchase, there was little incentive for community contributions in relation to so many other open source projects

The Sun/MySQL management and decision makers didn’t listen to the community and paying customers, and over the past 3-5 years the product life cycle, features, release schedule and quality can be questioned.

Sun/MySQL Official Products

Sun/MySQL holds the license to the MySQL server products. They release official binaries and the source code (due to GPL). Even within MySQL, there are several products that differ subtly and to the untrained eye it can be confusing to understand and determine what is best. Your can download from www.mysql.com the following versions:

MySQL Server 5.1 GA

MySQL Community Server 5.0 GA

MySQL Enterprise Server 5.0 GA

MySQL Cluster NDB 6.3

MySQL Server 4.1 (EOL)

MYSQL Server 6.0 (Alpha)

MySQL Versions

It is important that you understand the MySQL Versions, especially in evaluating any of the following referenced variants, patches etc.
The common path for MySQL Server versions is with a generally linear numbering systems including historical versions 3.23, 4.0 and 4.1. These versions have now reached End Of Life (EOL) for support, however emergency security patches are applied where necessary.
Continuing from 4.1, you have the 5.0, 5.1 versions which are both Generally Available (GA), and then version 6.0 which is currently Alpha.

Further complexity happens when within the Sun/MySQL Official products, several forks/branches have occurred. These include:

At this time, the Community version (free to download) continued with the intention of allowing for community contributions. Only one patch was ever accepted, and SHOW PROFILES was introduced in MySQL 5.0.37. To date, 11 versions have been released to the current 5.0.77 version.

MySQL Enterprise (available under subscription) is itself comprised of three subtypes, these are Rapid Update Service Packs(monthly), Quarterly Service Packs (quarterly) and Hot-fix releases. To date 37 versions have been released to the current 5.0.78 version.

MySQL Cluster, was part of the MySQL Server product until this was branched/forked at MySQL Version 5.1.23. This enabled MySQL Cluster to be labeled as Production Ready for Cluster clients, and not be held back by continued delays in the 5.1 server release. Starting with a new versioning scheme with 6.1, the MySQL Cluster NDB produces new versions far exceeding the volume of the server, with to date 23 versions in 6.1 , 18 in version 6.2 and 24 in version 6.3. I am not advocating that features and quality are better or worse, simply that activity and interaction with community and users is far greater.

MySQL 5.1 Maria is a special branch starting at MySQL Version 5.1.24 that includes the Maria Storage Engine. This is the next generation of the MyISAM Storage Engine, both architected by the creator of MySQL, Monty Widenius. It is undercertain this will continue as a product released officially by Sun/MySQL.

In Review

With just reading this introduction you can understand the confusion that exists when new customers/clients are beginning to evaluate the different MySQL Versions.

In my next post, I’ll talk more about:

MySQL Variants, those I consider variants use the MySQL Interface, protocol and support the standard connectors. These include community versions (e.g. Solid, Infobright, Sphinx) and commercial versions (e.g. KickFire, InfoBright, Nitro).

MySQL patches are improvements that have been released to the community and are now becoming part of common third party MySQL packages, such as Percona, Proven Scaling and Out Delta

MySQL Plugins are a feature of MySQL 5.1, and allow for pluggable storage engines into MySQL. While several companies have had to produce custom binaries due to the API limitions (especially with the optimizer), a number of engines support the API including Innodb, PBXT and filesystem engine.

MySQL Alternatives include any MySQL related products that have now deviated from being supported under the MySQL protocol. Most notably here is Drizzle.

More Information

Ronald Bradford is Principal at 42SQL. We provide consulting and advisory services for the MySQL ecosystem with a focus on MySQL database performance, architecture and scalability. 42SQL also provides education in MySQL including the “MySQL Essentials” training course. You can find more information regarding this offering and an upcoming schedule at 42SQL Education.

Comments

Though the reasons you state for why the diversification has occured may have been correct at one point, I think they are essentially no longer true.

Regarding patch acceptance: Google, Proven Scaling, Percona and others patches are being processed, accepted and applied to the server trees. See http://dev.mysql.com/doc/refman/6.0/en/replication-semisync.html as an example. There is renewed focus on incorporating these community patches quickly. If you follow the forge change history, ( http://forge.mysql.com/w/index.php?title=Special:Recentchanges&limit=500&days=30 ) you’ll see that a lot of work has gone into improving the documentation of our development process and into making this information available to the public. I feel that the MySQL Contributor License agreement which granted exclusive rights to license the contributed code was a big stumbling block to open community development, but this was remedied by switching to the Sun Contributor Agreement which grants a co-equal shared license over the code.

The revision control roadblock has been alleviated by switching from Bitkeeper to public repositories in Bazaar & Launchpad.

And “management and decision makers didn’t listen to the community” is very subjective. You can never make everyone happy all of the time. It seems we can never make any improvement to mysql server without hearing “Well jeez, why didn’t you do that 10yrs ago like did?”. It really is not constructive.

Also, The 5.1 Maria branch should not be mentioned in the “Official Products” part of this blog because it is not a “real” release. It is a feature preview several more of which you will find on http://forge.mysql.com/wiki/Category:Software_Preview Albeit more publicized because Monty worked on it. These should be considered as development branches we want users to have access to binaries of for testing. It was moved to the main tree as of 6.0.6. As far as I know all the current Maria development of it is done there. 5.1-maria documentation and binaries should be removed from the dev. site in my opinion as they only add to the confusion.

@ Matthew Montgomery… it’s great that some external patches find their way into 6.0, but the whole point of the patches and other builds is that there is a need NOW, not a few years down the line when 6.0 is “ready”.

Yes, I know that 5.1 is production. But, it would be quite easy, development wise, to build on 5.1 and have those things be available now. Over time, with bug reports, certain components would even be considered stable themselves and be added to the main 5.1 line.

The whole “development” and “GA” thing does not jive with either an open source development model with rapid feedback improving quality (hardly anyone uses 6.0 now, so what would one expect?) or with the current needs in the real world. It’s disconnected, for the benefit of conventional clarity in marketing and sales. The GA stuff is simply a distraction from what really matters.

6.0 could actually be that “enhanced 5.1″ and be in wider use, enabling it to become better quality quicker. But it’s not, and so it won’t be.