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 articlesH113 - Using MySQL Databases in PHP Pages 
Moving from mysql to mysqli - simple worked example - (2015-05-03) 
What FGW passengers want to talk about / and PHP programming to find out - (2015-01-01) 
MySQL, MySQLi, PDO or something else - how best to talk to databases from PHP - (2011-09-24) 
How to display information from a database within a web page - (2010-11-07) 
MySQL stored procedures / their use on the web from PHP - (2009-10-10) 
Using print_r in PHP to explore mysql database requests - (2009-10-01) 
Helping new arrivals find out about source code examples - (2009-08-03) 
Grouping rows for a summary report - MySQL and PHP - (2009-06-27) 
Setting up a MySQL database from PHP - (2009-03-08) 
Keeping PHP code in database and running it - (2009-01-09) 
Uploading to a MySQL database through PHP - examples and common questions - (2008-03-02) 
Dates, times, clickable diarys in PHP - (2006-12-28) 
What is an SQL injection attack? - (2006-11-27) 
Display an image from a MySQL database in a web page via PHP - (2006-11-22) 
Paging through hundreds of entries - (2006-11-05) 
Viewing images held in a MySQL database via PHP - (2006-05-17) 
Database design - get it right from first principles - (2006-04-02) 
Checking for MySQL errors - (2006-03-15) 
Saving a MySQL query results to your local disc for Excel - (2006-01-29) 
Giving the researcher power over database analysis - (2006-01-22) 
MySQL - an FAQ - (2005-12-03) 
mysql_connect or mysql_pconnect in PHP? - (2004-10-30)P308 - Using SQL Databases from Perl 
Perl - database access - DBD, DBI and DBIx modules - (2010-12-22) 
Checking the database connection manually - (2009-08-28) 
Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23) 
Hiding a MySQL database behind a web page - (2008-11-15) 
Object Relation Mapping (ORM) - (2007-06-09) 
Answering ALL the delegate's Perl questions - (2006-12-09) 
Using a MySQL database from Perl - (2006-03-13)S050 - MySQL - General 
Blowing our own trumpet - MySQL resources - (2011-07-18) 
MySQL and Java - connectivity past, present, and future thoughts - (2010-07-09) 
Extra MySQL course dates (2 day course, UK) - (2010-01-08) 
Moving the product forward - ours, and MySQL, Perl, PHP and Python too - (2010-01-01) 
Which version of MySQL am I running? - (2009-09-26) 
How do I query a database (MySQL)? - (2009-06-15) 
Oracle take over Sun who had taken over MySQL - (2009-04-21) 
MySQL - licensing issues, even with using the name - (2009-03-16) 
What a difference a MySQL Index made - (2009-02-25)S151 - Introduction to SQL and MySQL 
Storing your intermediate data - what format should you you choose? - (2012-11-20) 
Files or Databases? MySQL, SQLite, or Oracle? - (2011-04-28) 
Factory methods and SqLite in use in a Python teaching example - (2010-05-29) 
The LAMP Cookbook - Linux, Apache, MySQL, PHP / Perl - (2006-11-13) 
Databases needn't be frightening, hard or expensive - (2006-11-08) 
Testing you Perl / PHP / MySQL / Tcl knowledge - (2006-04-19) 
Key facts - SQL and MySQL - (2006-02-04) 
Database or Progamming - which to learn first? - (2005-09-13) 
Central London Courses - Perl, PHP, Python, Tcl, MySQL - (2005-07-18) 
Worthwhile - (2005-01-11) 
Present and future MySQL - (2004-10-12) 
MySQL - nuggets - (2004-10-11)S200 - MySQL - SQLite 
SQL databases from Python - an SQLite example - (2013-03-02) 
Which database should I use? MySQL v SQLite - (2013-02-16) 
Ruby / SQLite3 example program, showing JOIN v LEFT JOIN - (2013-02-16) 
Steering our Python courses towards wxPython, SQLite and Django - (2011-01-19) 
Model - View - Controller demo, Sqlite - Python 3 - Qt4 - (2010-04-29) 
Connecting Python to sqlite and MySQL databases - (2010-04-28) 
PyQt (Python and Qt) and wxPython - GUI comparison - (2010-04-28)
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