MySQL has grown from a very neat little open source database 10 years ago into a very powerful and widespread database that's not always fully open source any longer today. The MySQL company was bought out by Sun a couple of years back (January 2008), and in turn Oracle are now buying Sun. This deal has taken a while to go through, and the delaying issues are said to be related to MySQL. If Oracle end up owning both their own database and MySQL, they will have something approaching a monopoly on databases, and that's probably bad news. See the blog of Monty Widenius, the father of MySQL
where he points a gloomy picture of what would happen if the deal went through without checks and balances being applied. Monty foresees the open source branch being encouraged to wither and die, with users being offered an alternative / upgrade into Oracle's commercial products.
Quite apart from the MySQL training
we provide, we make a lot of use ourselves of open source MySQL databases - in this web site and elsewhere - and like hundreds and thousands of small companies, the future of MySQL, the code that uses it and (especially) the data we've invested so heavily into storing under MySQL must be a serious concern for the future. Do we want to go commercial and buy licenses from Oracle? Or do we want to look for some other route?
Monty is encouraging users (via his blog) to contact the EU and let them know their views - I'll let you follow the link
rather than reproduce all the details here. Please do follow up on this, folks; I am filled with profound misgivings about any one company ending up with a near monopoly on database storage ... it goes further that just a monoply on programs - your investment in data is probably worth far more than your code, and you don't want to have to pay Oracle (or any other single-source supplier) in the future to access / update it.
So ... where will MySQL be in 10 more years time? I don't know. But I do know that I'll want to access and update information that I have stored in my MySQL tables today, and data that I continue to enter every time I write a blog, every time a course is booked, every time I upload an image to my website. What steps should I take to ensure an easy and low cost path forward with this data, irrespective of where MySQL goes?
Here are my thoughts ...
1. Keep the database structures clean, normalised and vanilla.
2. Write code that uses as standard a subset of SQL as is possible.
3. Keep that code that calls the MySQL libraries within a database independent wrapper.
At this stage, those three elements are "hedging bets" rather than actively moving away from MySQL - they're just like investing in an insurance policy in case you need to cash in.
Monty's blog looks at alternatives such as a MySQL fork and PostgreSQL, but he doesn't see either as being a longer term solution. I'm going to offer you a further thought ...
I've been impressed in the last year or two by the growth of Lua. It's a great programming language which is perhaps just a twentieth of the size of Perl or Python .. yet for 80% of the uses of Perl or Python, it'll do pretty well. And so I look at the grown MySQL - release 5.x - and I think "MySQL 3.23.58 could have done almost that". For the small and medium size applications, there is a strong case for a back to basics database engine
, and I would not be surprised to find something coming along.
Have you seen SQLite
? It's in the public domain and already used heavily - VERY heavily - in lots of places
. However, its model is serverless
which could/should/would be expected to lead to data sharing and concurrency issues. But I note on the SQLite web page ... "Most SQL database engines are client/server based. Of those that are serverless, SQLite is the only one known to this author that allows multiple applications to access the same database at the same time."
SQLite isn't necessarily the answer for the future ... but it may be pointing an interesting way forward - it may be a pathfinder for us. And (making myself thoroughly unpopular with the SQlite folks, perhaps), I see no reason why a server layer couldn't be written on top to allow it to be addressed via a TCP/IP port ...
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesS200 - MySQL - SQLite 
PyQt (Python and Qt) and wxPython - GUI comparison - (2010-04-28) 
Connecting Python to sqlite and MySQL databases - (2010-04-28) 
Model - View - Controller demo, Sqlite - Python 3 - Qt4 - (2010-04-29) 
Factory methods and SqLite in use in a Python teaching example - (2010-05-29) 
Perl - database access - DBD, DBI and DBIx modules - (2010-12-22) 
Steering our Python courses towards wxPython, SQLite and Django - (2011-01-19) 
Files or Databases? MySQL, SQLite, or Oracle? - (2011-04-28) 
Ruby / SQLite3 example program, showing JOIN v LEFT JOIN - (2013-02-16) 
Which database should I use? MySQL v SQLite - (2013-02-16) 
SQL databases from Python - an SQLite example - (2013-03-02)S151 - Introduction to SQL and MySQL 
MySQL - nuggets - (2004-10-11) 
Present and future MySQL - (2004-10-12) 
Worthwhile - (2005-01-11) 
Central London Courses - Perl, PHP, Python, Tcl, MySQL - (2005-07-18) 
Database or Progamming - which to learn first? - (2005-09-13) 
MySQL - an FAQ - (2005-12-03) 
Key facts - SQL and MySQL - (2006-02-04) 
Testing you Perl / PHP / MySQL / Tcl knowledge - (2006-04-19) 
Databases needn't be frightening, hard or expensive - (2006-11-08) 
The LAMP Cookbook - Linux, Apache, MySQL, PHP / Perl - (2006-11-13) 
Oracle take over Sun who had taken over MySQL - (2009-04-21) 
Extra MySQL course dates (2 day course, UK) - (2010-01-08) 
Storing your intermediate data - what format should you you choose? - (2012-11-20)S050 - MySQL - General 
What a difference a MySQL Index made - (2009-02-25) 
MySQL - licensing issues, even with using the name - (2009-03-16) 
How do I query a database (MySQL)? - (2009-06-15) 
Which version of MySQL am I running? - (2009-09-26) 
Moving the product forward - ours, and MySQL, Perl, PHP and Python too - (2010-01-01) 
MySQL and Java - connectivity past, present, and future thoughts - (2010-07-09) 
Blowing our own trumpet - MySQL resources - (2011-07-18)P308 - Using SQL Databases from Perl 
Using a MySQL database from Perl - (2006-03-13) 
Answering ALL the delegate's Perl questions - (2006-12-09) 
Object Relation Mapping (ORM) - (2007-06-09) 
Hiding a MySQL database behind a web page - (2008-11-15) 
Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23) 
Checking the database connection manually - (2009-08-28)H113 - Using MySQL Databases in PHP Pages 
mysql_connect or mysql_pconnect in PHP? - (2004-10-30) 
Giving the researcher power over database analysis - (2006-01-22) 
Saving a MySQL query results to your local disc for Excel - (2006-01-29) 
Checking for MySQL errors - (2006-03-15) 
Database design - get it right from first principles - (2006-04-02) 
Viewing images held in a MySQL database via PHP - (2006-05-17) 
Paging through hundreds of entries - (2006-11-05) 
Display an image from a MySQL database in a web page via PHP - (2006-11-22) 
What is an SQL injection attack? - (2006-11-27) 
Dates, times, clickable diarys in PHP - (2006-12-28) 
Uploading to a MySQL database through PHP - examples and common questions - (2008-03-02) 
Keeping PHP code in database and running it - (2009-01-09) 
Setting up a MySQL database from PHP - (2009-03-08) 
Grouping rows for a summary report - MySQL and PHP - (2009-06-27) 
Helping new arrivals find out about source code examples - (2009-08-03) 
Using print_r in PHP to explore mysql database requests - (2009-10-01) 
MySQL stored procedures / their use on the web from PHP - (2009-10-10) 
How to display information from a database within a web page - (2010-11-07) 
MySQL, MySQLi, PDO or something else - how best to talk to databases from PHP - (2011-09-24) 
What FGW passengers want to talk about / and PHP programming to find out - (2015-01-01) 
Moving from mysql to mysqli - simple worked example - (2015-05-03)
Some other Articles
Bright day, snowy dayMicroblogging services - Plurk, Twitter, Jaiku and moreEfficient debugging of regular expressionsTuning the web site for sailing on through this yearThe future of MySQLTraining comparison to QA Training, Learning Tree, GB Direct.Happy new decade - and course and hotel prices for 2010Rail Campaign - response to core consultationRailway Station Survey - please complete today or tomorrow