オープンソースRDBMSにおけるMySQLの現状と、MySQL以外の選択肢

security_1082

2016年9月14日、MySQLおよびその派生RDBMSについてのクリティカルな脆弱性が報道されました。

脆弱性の詳細内容については、ZDNet Japanの記事内容を引用しています。

報道の内容は、米国時間2016年9月12日、MySQLおよびMySQL派生RDBMSのゼロデイ脆弱性「CVE-2016-6662」が指摘されるも、本家MySQLは脆弱性への対応がMySQL派生RDBMSよりも遅れていたことが判明したというものです。

無所属のセキュリティ研究者Dawid Golunski氏は、ベンダーへの通知後40日が経過したとして、ゼロデイ脆弱性に関する情報を一般に開示しました。

この脆弱性(CVE-2016-6662)は、不正な特権昇格が起きる可能性があるもので、「MySQL」の最新バージョン5.7.15、5.6.33、5.5.52を含む全バージョンに加え、「MariaDB」および「PerconaDB」などのMySQLから派生したソフトウェアにも影響がある。

引用:http://japan.zdnet.com/

記事によると、派生RDBMSであるPercona DBとMaria DBは既にこの報道時点でCVE-2016-6662の修正を完了しており、脆弱性の影響は受けないということでした。

MySQLについては、この報道があった約一ヶ月後の10月18日に配布されたアップデートであるOracle Critical Patch Updateにて脆弱性への対応が完了している状況です。

ただ、やはりMySQLの派生RDBMSである、Percona DBやMaria DBがDawid Golunski氏の情報開示前に脆弱性への対応を完了していることを踏まえると、MySQLはクリティカルな脆弱性に関しての対応が遅いように思えてしまいます。

調べたところ、Percona DBは米国時間9月12日にCVE-2016-6662についての対応状況を公開、Maria DBは米国時間9月13日に情報を公開しています。参考までに、Maria DBのCVE-2016-6662に対応したセキュリティパッチを含むバージョンのリリース情報を参照すると、

5.5.51, released on August 10th
10.0.27, released on August 25th
10.1.17, released on August 30th

引用:https://mariadb.org/

と、Dawid Golunski氏による脆弱性の報告後約一ヶ月で対応を完了していることが分かります。Maria DBのセキュリティパッチ対応がDawid Golunski氏による報告後約一ヶ月に完了したのに対し、本家のMySQLの対応は2ヶ月半以上と、脆弱性への対応完了までの期間におよそ一ヶ月半もの開きがあることが確認できます。

MySQLのこれまでと現在

MySQLは最もメジャーなオープンソースRDBMSですが、実際のところ現在はどのような状況のプロジェクトなのでしょうか。

MySQLは、過去にSun Microsystemsに買収され、Sun Microsystemsはその後Oracleに買収されたという歴史があります。MySQLは、これまでに買収される経験を2回しているオープンソースプロジェクトです。ZDNet Japanの2014年11月時点の記事を参照すると、MySQLの完結な歴史が書いてあります。

MySQLは10億ドルでSun Microsystemsに買収され、その後2010年に、Sun MicrosystemsもOracleに74億ドルで買収された。その頃までに、MySQLを最初に作った開発者たちの一部はすでに同社を離れ、MariaDBをフォークさせた。

OracleがMySQLを買収してからは、事あるたびにOracleがこのプロジェクトにどのような意図を持っているかが取りざたされている。セキュリティを例に取って、重大なバグ修正への対応が遅くなり、脆弱性や重要なパッチの更新に関する情報も少なくなったと批判する人もいる。

引用:http://japan.zdnet.com/

上記に参照した記事自体の内容は、買収されたMySQLについてポジティブな見解を示すものでした。しかし、現状では、引用部後半にあるように、脆弱性についてのセキュリティパッチの対応が買収前と比較し後手に回っているという一部の人の意見について筆者も同意します。

本稿冒頭で指摘しました、CVE-2016-6662の脆弱性についての対応の遅れがまさにMySQL修正が遅れている様子の表れと認識しています。

世界のデータベースの人気度ではMySQLは依然として圧倒的な人気を誇っています。しかし近年、シリコンバレーエリアや巨大スタートアップ企業においては、MySQLから他オープンソースRDBMSを選択する傾向がみられます。

MySQLの現状に懐疑的になっているのは、筆者を含めた一部のネットユーザーだけではありません。2016年10月23日現在、全てのデータベースの人気において世界2位と圧倒的な人気を持つMySQLですが、それでもGoogleやFacebookなどの巨大スタートアップ企業はMySQLを離れる動きがあります。

DB Enginesによる、2016年10月23日現在のデータベースの人気トップ10

DB Enginesによる、2016年10月23日現在のデータベースの人気トップ10

グーグルがMySQLを切り捨ててMariaDBを採用 | ReadWrite[日本版]
»http://readwrite.jp/news/1018/

FacebookはGoogleのようにMySQLを捨ててMariaDBへ移行しようとしているのか? | Yakst
»https://yakst.com/ja/posts/88

DB Enginesでは、データベース技術の人気度合いを測るために、このようないくつかの指標のもとでスコアを計算しています

指標は、Google Trendsであったり、IndeedやSimply Hiredでの該当データベース技術でのオファー件数を元にするなど、多角的です。

下記のRDBMSに絞ったチャート(トップ5プラス、Maria DB)を参照すると、人気上位3位までのOracle, MySQL, MicrosoftSQLserverは支配的ですが、オープンソースRDMSのPostgreSQLおよびMaria DBは徐々に上位との差を埋めるように人気が上昇していることが確認できます。

DB Enginesによる、2016年10月23日現在の人気TOP5のチャート

DB Enginesによる、2016年10月23日現在の人気TOP5のチャート

また、DB Engines以外にも別の統計データも参照します。スタートアップが活発であるシリコンバレーエリアでは、MySQLからPostgreSQLへ需要が推移していることが確認できます。

Hacker News Hiring Trendsを参照すると、下記のようにMySQLの需要をPostgreSQLが上回る傾向が確認できます。

2016年9月のHacker NewsによるRDBMSについての雇用トレンドのチャート

2016年9月のHacker NewsによるRDBMSについての雇用トレンドのチャート

このように、市場全体では徐々に、スタートアップシーンでは特に、MySQLからそれ以外のオープンソースRDBMSに人気が少しずつ推移している傾向が確認できます。

今後もMySQLを選択し続けるか。それとも他オープンソースRDBMSを選択するか

MySQLはこれまでのオープンソースRDBMSの中で圧倒的な人気を誇り、市場をリードしてきました。しかしながら、MySQLの人気は一向に衰えないものの、近年は他オープンソースRDBMSも徐々に注目され始めています。

ここで今一度、MySQLのメリットとデメリットを挙げてみることにします(※ここでは文法や実装されている関数などの話はしないことにします)。

MySQLのメリット

  • 運用経験者が多い
  • 高いパフォーマンス
  • Fusion-io(専用ハードウェア)による大規模システムにおけるパフォーマンス向上
  • 商用・非商用のライセンスの選択が可能

MySQLのデメリット

  • 脆弱性対応が遅い
  • MySQL創設者たちがMySQLプロジェクトを離脱した後からは、開発体制が買収以前よりうまくいっていない可能性がある(脆弱性対応が遅くなった原因の1つとみられる)

MySQLのメリットは、運用経験者が多く、またビジネスがスケールした際、パフォーマンスが要求されるようなシステムであれば特に有効であることが分かります。

一方で、デメリットを見ると、脆弱性対応など、開発の遅さが目立ちます。本稿冒頭で指摘した脆弱性CVE-2016-6662についても、まさに開発体制がうまくいっていない事に起因するのではないかと認識しています。

では、他RDBMSを選択するとなると、代表的な候補はどんなものになるのでしょうか。

MySQL互換であれば、Maria DBが筆頭です。Maria DBはMySQL創設者グループが開発した、MySQL互換のRDBMSです。Maria DBには、Redhat系OSを中心に標準のRDBMSにMySQLの採用をやめ、代わりにMaria DBを採用されたという実績があります。

MySQL互換ではないRDBMSであれば、PostgreSQLが代表的な選択肢となってくるでしょう。PostgreSQLは、MySQLやMaria DBに一部パフォーマンスで劣ることが多いとされますが、機能面についてはMySQLより柔軟と評価されます。

PostgreSQLはMySQL互換ではありませんが、巨大スタートアップのUberは、コアのRDBMSにPostgreSQLを採用していていましたが、マイグレーションを行い、その後はコアRDBMSにMySQLに変更して運用したという事例があります。このUberでの事例は、MySQLのパフォーマンスが高いという証明であると言えます。

技術選定は、どの点を重視するかで採択のポイントが変わってくると思います。脆弱性の観点からすると、MySQLは相応しくないのかもしれません。しかし一方で、高度なパフォーマンスを要求するシステムではMySQLが相応しいかもしれません。

本稿では、様々な側面からMySQLに着目してきました。知名度がある技術こそ安定しているという観点が、オープンソースRDBMSについては当てはまらないという認識です。今後のオープンソースRDBMSの選定の際などに本稿が役に立てば幸いです。

この記事を書いた人
mmiyauchi_profile
mmiyauchi
インフラ&アプリケーションエンジニア。サーバやミドルウェア、Webアプリケーション開発の情報を日々収集している。最も得意な技術スタックは、Angular JS、Node.js、PostgreSQL。プライベートブログ(http://mmiyauchi.com)でも技術情報を発信中。
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る