The Struggle for the Hegemony in Oracle's Database Empire
In this article, we take a look at the ongoing competition between Oracle and MySQL, as well as who might also benefit from this race.
Join the DZone community and get the full member experience.Join For Free
Oracle's flagship RDBMS and its open-source competitor MySQL fight for being the most popular database management system. But the DB-Engines ranking indicates that other systems may benefit from this race.
Since the beginning of the DB-Engines popularity ranking, we list the Oracle RDBMS as the most popular of currently 327 monitored database management systems.
However, since January 2016, we've measured a negative trend for the Oracle RDBMS, while we see a popularity gain in the same period for MySQL (the leading open source DBMS). It seems to be only a question of time as to when MySQL will pass Oracle and become the leader in the DB-Engines ranking. That comes despite the fact that MySQL’s popularity also decreased during the last quarter, allowing Microsoft SQL Server (#3 in the ranking) to reduce the gap to both Oracle-owned systems.
The above diagram shows the gains/drops for Oracle and MySQL for each month since January 2016. We see that in these 17 months, Oracle could improve its popularity score in only two months (decreasing in 15) and MySQL exhibits a rather inconclusive trend (eight gains vs. nine drops). It is interesting to note, that 11 months show Oracle and MySQL having an opposite trend — one system winning, the other losing. This statistical peculiarity could lead to the a bit farfetched conclusion that Oracle and MySQL are somehow cannibalizing each others popularity.
A short parenthesis to SQL:
Given that you have a simple table with two columns, a timestamp, and a score, how would you write a SQL statement to calculate the differences of the score between consecutive timestamps, as required for the diagram above? A fixed interval of the timestamps should not be assumed.
The not very familiar SQL window functions, introduced with standard ANSI/ISO SQL 2003 and 2008 (ANSI/ISO SQL documentation) are extremely helpful for that type of queries. In MySQL, which does not support these functions, you need to code a workaround.
Published at DZone with permission of Paul Andlinger. See the original article here.
Opinions expressed by DZone contributors are their own.