sql-info.de

Oracle's Acquisition of InnoDB: What does it mean?

Recently Oracle acquired a small Finnish software company, Innobase. This has attracted far more attention than transactions of this size usually do, and for good reason: this directly affects MySQL, which styles itself as "the world's most popular open source database".

What is InnoDB and why is it important?

MySQL has the ability to use different database "storage engines" (modular code which can be "plugged in") in the database server to actually do the nitty-gritty work of storing and retrieving data in the underlying tables.

The most widely used engine is "MyISAM", which is also the default engine. It is fast, but is missing many features which are considered a standard part of "enterprise level" database software, such as transactions amd foreign key support. This means MyISAM does not provide much in the way of facilities for maintaining data integrity, which is essential for all but the most trivial of database applications.

However, if MySQL is to establish itself as a serious competitor in the enterprise database market- not just as a nifty backend for web-based forum systems and the like - it needs a "heavyweight" database engine which can guarantee data integrity and is reliable enough to, say, run an accounting system on.

This is where InnoDB comes in. InnoDB is a transaction-safe (ACID compliant) storage engine with foreign key support along with commit, rollback, and crash recovery capabilities.

InnoDB is a product of Innobase Oy, a Finnish company now owned by Oracle. InnoDB was first released as a part of MySQL in 2001. MySQL has a licensing agreement with Innobase which enables it to provide the InnoDB code under a commericial license to paying customers, alongside the distribution as a GPL (open source and free as in beer) product.

References:

The MyISAM Storage Engine
http://dev.mysql.com/doc/mysql/en/myisam-storage-engine.html
Innobase Oy
http://www.innodb.com/index.php
InnoDB Overview from MySQL
http://dev.mysql.com/doc/mysql/en/innodb-overview.html
Wikipedia: InnoDB
http://en.wikipedia.org/wiki/InnoDB

What are the implications of this purchase?

Oracle is the 800 pound gorilla of the database world and presumably purchased Innobase out of petty cash. It's not at all clear what technogical benefits Oracle will gain from the purchase of the comparitively small InnoDB. It certainly it not apparent what Oracle products could benefit from the technology behind InnoDB, as Oracle already has its own very mature database technology.

However, by acquiring InnoDB, Oracle has gained control over a key technology of a potential competitor, the increasingly sophisticated MySQL database. This puts Oracle in a position where it could be able to influence - directly or indirectly - the future development of the MySQL database product.

What is the future of the InnoDB engine?

The current PR line from both MySQL and Oracle is that Oracle's engagement in the open source database world is a Good Thing™.

Oracle has stated that it "intends to continue developing the InnoDB technology and expand our commitment to open source software".

MySQL has stated it will continue to include InnoDB in future releases, and also "to provide development and bug-fix resources for InnoDB users".

The contract between MySQL and Innobase is due for renewal in 2006. Oracle states it "fully expects to negotiate an extension of that relationship".

The "InnoDB roadmap" detailing the current development status and plans for InnoDB, is available here: http://www.innodb.com/todo.php

It would be interesting to consider, in this context, what statements Oracle made about Peoplesoft during its acquisition of that company, and what actions Oracle has subsequently undertaking to maintain and develop the Peoplesoft line of software applications.

References:

"Oracle Announces the Acquisition of Open Source Software Company, Innobase"
http://www.oracle.com/corporate/press/2005_oct/inno.html
"MySQL AB Welcomes Oracle to the FOSS Database Market"
http://forums.mysql.com/read.php?22,48400,48400#msg-48400

What impact does this have on my website?

Many web-based applications require only the standard MyISAM tables, and many ISPs / web hosting providers who offer MySQL support only the more easily administered MyISAM tables, so chances are you're not using InnoDB.

In that case there's absolutely nothing to worry about (apart from the inherent risk of data loss ;-), as the MyISAM engine is safe in the hands of its creators, MySQL AB.

If your website software is dependent on functionality provided by InnoDB however, see below.

What impact does this have on my InnoDB-backed applications?

In the short term: none. MySQL will, at the very least, provide maintenance and bugfixes. In the longer term: whether InnoDB will be actively developed and improved is a question to which only Oracle can provide an answer.

What are the alternatives to the InnoDB engine?

Other MySQL storage engines

MySQL has an almost bewildering plethora of storage engines (MyISAM, InnoDB, MERGE, MEMORY (HEAP), BDB, EXAMPLE, FEDERATED, ARCHIVE, CSV, BLACKHOLE and ISAM). Of these only BDB (BerkeleyDB) is in any way comparable with InnoDB, but is nowhere near as advanced. Much time would be necessary before this or another engine could be brought up to InnoDB standards.

MaxDB

In 2003 MySQL acquired rights to SAP-DB, a heavy-weight database previously developed by the German software house SAP AG (and which is even compatible with earlier Oracle versions) and rebranded it as MaxDB. However, it appears the MaxDB codebase is, to put it midly, a bit of a mess, and presumably not easy to integrate with MySQL proper without any kind of major rewrite.

Other

Some wild speculation has suggested it would be possible to use the codebase of another mature open-source database such as PostgreSQL . That would certainly be feasible from a licensing viewpoint (PostgreSQL is BSD-licensed), but considering the work involved in ripping out right bits of the PostgreSQL engine to integrate it with MySQL, and maintain this code, it would be easier to use PostgreSQL as is.

References:

MySQL Storage Engines and Table Types
http://dev.mysql.com/doc/mysql/en/storage-engines.html
Overview of the MaxDB Database Management System
http://dev.mysql.com/doc/mysql/en/maxdb.html

Why not just fork the InnoDB code?

The InnoDB code is "out in the open" under an open-source license and is not going to suddenly disappear just because Oracle bought out the development company.

Theoretically anyone - MySQL AB, another company, or even a non-commercial open-source project could continue development of a forked version of InnoDB, possibly under a different name.

However, this would not be technically easy, as the brains behind InnoDB have been bought out by Oracle, and MySQL AB would have to come up to speed on the InnoDB code base. This could cause a delay the development of MySQL's advanced features.

It is also not clear whether this would be a commercially viable solution for MySQL AB, as its business model depends in part on its ability to provide non-GPL licenses to paying customers.

What does MySQL say about all this?

Interestingly, shortly before the Oracle/Innobase announcment, MySQL stated its desire to become the "IKEA" of the database world ("MySQL wants to be Ikea of the database market") . This could be taken as an indication of MySQL AB's future strategy: building on its existing strengths in the "low end" database market, rather than going head-to-head with the "big iron" database vendors.

Summary

At the time of writing, the long-term direction of InnoDB is not clear. Anyone with a strategic interest in the functionality provided by InnoDB should follow developments over the next few months very carefully, and at least bear in mind possible fallback strategies and alternative solutions.

MySQL users not dependent on InnoDB tables should have no cause for concern (apart from data integrity issues).

Update: see this article for some recent news.


All trademarks are the property of their respective owners
Comments
Interesting idea. I think people are suggesting Postgres because Postgres and MySQL are both branches of the same code base. Granted, they haven't merged for over a decade, but it very well might be better than starting from scratch.
Posted by: Cshark | 2005-12-19 20:56
I think people are suggesting Postgres because Postgres and MySQL are both branches of the same code base.

This is absolutely wrong, unless MySQL actually got it's start by taking whatever Postgres95 code existed back then.
Posted by: Decibel | 2006-03-24 13:15
My SQL will be dumped very soon yhis is for sure.........
And should be done.....

Posted by: Siti Mar | 2006-03-25 08:54
Just to alert readers: Oracle has also purchased Sleepycat Software, which owns the BDB engine (behind the BDB table type in MySQL). This means that the owners of the main two transactional table types have been purchased by Oracle.
Posted by: Chris Travers | 2006-11-29 03:29