じっくりと時間をかけ作り込まれたMySQL 5.6
リリースが遅れた理由を日本オラクル MySQL Global Unit Asia Pacific & Japan担当 MySQL Sales Consulting Managerの梶山隆輔氏に訊ねると「5.6のリリース候補版は、昨年9月にサンフランシスコで開催されたイベント『MySQL Connect』のタイミングで配布が開始されました。このリリース候補版を利用したユーザーからのフィードバックをきっちりと反映した結果、今回のタイミングでのリリースとなりました」とのこと。なんらか製品に大きな問題があって遅れたのではなく、フィードバックをしっかりと取り込んで品質的にも納得いくものに仕上げた結果ということだ。
このように、ユーザーからのフィードバックも取り込んで、ある意味じっくりと作り込まれたのがMySQL 5.6。そのバージョンアップのポイントは、5つあると梶山氏は言う。その1つがオプティマイザの改良だ。サブクエリの改善などが行われ、ソート処理などが大幅に高速化している。
そして、各種性能に関する情報を収集するパフォーマンススキーマについても、改善がなされた。
「パフォーマンススキーマは5.5の時からあるのですが、当初はMySQLそのものを開発するようなエンジニアにとっては有用なものでしたが、一般のデータベース管理者なりがチューニングなどに使うには向きませんでした。それが今回大きく改良され、SQLや接続ごとの統計データなどが取得できるようになり、チューニングにも役立つものへと進化しています」。
もう1つの進化が、5.5から標準のストレージエンジンとなったInnoDBのさらなる進化だ。「InnoDBには地道な改善があります」と梶山氏。たとえば、ソースのレベルでロックの粒度を小さくするなど、目立たないが数多くの改善がなされている。その結果、性能は以前よりも大きく向上したのだ。また機能的にも、InnoDBは拡張している。Oracleとしては、「MyISAMでやってきたことは、すべてInnoDBでもやる」という開発方向性がある。MyISAMは古くから使われてきたストレージエンジンで、シンプルで使いやすく、参照系の用途では数多くの実績がある。とはいえ、トランザクションに対応していなかったり、最新の多スレッド処理ができるCPU性能を十分に引き出せなかったりと課題もある。
MySQLの用途として数多い、Web系のシステムにおいても、最近では参照系だけでなくトランザクション処理が求められる。そういった背景もあり、5.5からはInnoDBがOracleとしてはお勧めのストレージエンジンとなったわけだ。しかしながら、MyISAMのシンプルで使いやすいところも、Oracleは十分に理解している。「たとえば、MyISAMであれば表をOSのコピーコマンドだけで他のサーバーに複製できます。こういったMyISAMでしかできなかった便利なところは、すべてInnoDBに実装していきます」と梶山氏。そういったポイントからのInnoDBの拡張も、今回の5.6では行われている。
4つめの改良がレプリケーション機能だ。MySQLを選ぶ際のポイントとして、このレプリケーション機能をあげるユーザーは多い。データベースの可用性確保、負荷分散といったことを、容易に実現できるのがこのレプリケーション機能だ。レプリケーション関連の拡張としては、今回新たにGTID(Global Transaction ID)というものが追加された。これは、トランザクションにIDを付与して、レプリケーションの進捗を管理するもの。マスター、スレーブが複数階層になっているような場合におけるレプリケーションの整合性管理や、マスターとスレーブをコマンド1つで入れ替えられるスイッチオーバーといった処理も、このGTIDを使うことで容易に実現できる。この便利なGTIDは、誰でも使えるコミュニティ版でももちろん利用可能だ。
5つめがNoSQLへの対応だ。「これは改良というよりは革新です」と梶山氏。具体的には、Memcached PluginをInnoDBのエンジンに差し込んで融合したようなもの。これにより、Memcachedを使ってSQL変換をせずにInnoDBのデータにアクセスできる。これは処理の高速化にも寄与している。たとえば、Oracle内部でのベンチマークテストでは、SQL処理の9倍といった性能が出ているとのこと。Memcached Pluginを刺したInnoDBは、もちろん通常のSQLでもアクセス可能だ。そのため、1つのデータベースエンジンに対しSQLでもNoSQLでもアクセスを実現できる。
これは、NoSQLとリレーショナルデータベースを別々に用意しなくていいということになる。NoSQLは非構造データなどを大量に格納するには便利だが、それだけでビッグデータ活用は完了しない。多くの場合、NoSQLからリレーショナルへデータを渡し、その上でリレーショナルデータベースのデータと併せてBIツールなどで分析を行う。このデータベース間でのデータの受け渡しというのが、システム負荷や手間、システムリソースの面でかなり高コストな処理となるのだ。ストレージエンジンを1つにできれば、ボトルネックとなる受け渡し処理は必要なくなる。そういった意味からも、今回の新機能は革新と表現されるのだろう。
アジアで躍進、アプライアンスを含む組み込み用途でMySQLは増えている
Oracleの許にMySQLがやってきて、より製品として強固になったのがセキュリティ面だと梶山氏は言う。
「安全性についてはかなり強化されています。特に、パスワード関連の機能などは、かなり作り替えられています」とのこと。細かいところだが、パスワードポリシーなどが変更され、パスワードの長さや文字の種類、辞書にある単語をはじく、さらには新しい暗号化の追加など、パスワード管理機能はかなり強化が続けられている。「Oracleになってからは、よりしっかりとした製品になるよう、厳しく指導を受けて作り込んでいる状況です。このことは、顧客にとってもメリットが大きいところだと考えています」。
目立たないかもしれないが、こういったセキュリティ面の強化は企業が基幹系のシステムとして導入する際には重要なポイントになる。こういうところがしっかりとしていないと、とくに金融などセキュリティに対し極めて厳しい態度をとる企業では、なかなか採用されないからだ。インドにおけるいわゆる国民総背番号制度の登録システムのフロント部分に、MySQLが採用されている事例がある。国民総背番号制度のシステムとなれば、重要な個人情報を扱うことになるので、厳しいセキュリティ性が求められる。この事例は、それをMySQLがクリアしていることの証しになるだろう。
こういう厳しいセキュリティ性が求められるシステムにソフトウェアが採用される際、じつはオープンソースであることが有利に働く場合がある。「ソースコードが公開されていることが、政府調達の要件に入っていることがあるのです」と梶山氏。セキュリティ確保のための機能が充実しているだけでなく、それがブラックボックス的ではなく提供されていることも求められるのだ。
また、MySQLの市場としては、ここ最近はアジア圏での採用がかなり増えている。そのため、日本にいながらにアジア地域のMySQLビジネスをハンドリングする立場にある梶山氏は、かなりアジア各国への出張が増えているそうだ。アジア各国においては政府開発援助などを利用し、各種施設などの建築などが盛んに行われている。なんらかの施設が作られれば、それに付随してITが必要なるのだ。その際に、コスト的にも導入ハードルが比較的低いオープンソースのMySQLが採用されることが多いのだろう。
また、流行のアプライアンスももちろんだが、組み込み用途でMySQLが採用されるケースも増えている。Oracle Databaseが比較的大規模なアプライアンス用ならば、MySQLのほうはPCや1Uサイズくらいの小型サーバーに組み込まれアプライアンス化しているようだ。また、汎用のアプライアンスではなく、パッケージソフトのデータベースとして、あるいは制御装置の中で利用されるデータベースといった用途も増えている。このあたりは、MySQLがうまくOracle Databaseと棲み分けている領域と言って良さそうだ。