このページでは、過去に雑誌等に寄稿した記事を公開しています。
オープンソースマガジン 2007年 1月号に掲載されました。
※掲載時とは一部文章が異なります。
2006年10月17日にMySQL Enterpriseが発表された。2年前まで、「MySQLは飛行機で言えばエコノミークラスに乗るようなもので、安いが目的地には確実につける。ファーストクラスに乗りたい人はどうぞそちらへ。」と他社のデータベース製品とは競合しないと自ら公言していた。もちろん他社製品とはOracle社を意識していたと思われる。しかしその後、Oracle社はMySQLの主要なストレージエンジンであるInnoDBを開発しているInnobase社、 Berkeley DBを開発したSleepycat Software社とオープンソース企業を次々に買収し、Oracle社のプレッシャーは日々増しているようだ。そしてMySQL社はデータベース界の巨人との戦いに一歩づつ近づこうとしている。MySQL Enterpriseは単純に見ればMySQLがファーストクラスの席をついに用意したことになるであろう。ではそのサービスとはどのようなものであるのか見てみようと思う。
MySQLはオープンソースで開発されているリレーショナルデータベースで、GPLであれば無償で利用できる。日本では常にOracleや PostgreSQLと比較され機能が不足していると指摘され続けてきた。しかしバージョンが上がるごとに確実に機能が充実し、サポートソフトウエアの充実もあり、ウェブシステムで使うデータベースとして、非常によく使われるようになっている。
バージョンアップによって追加された機能
| バージョン | 追加された機能 |
|---|---|
| 3.23 | トランザクション、レプリケーション |
| 4.0 | クエリキャッシュ、SSL |
| 4.1 | ユニコード、サブクエリ |
| 5.0 | ストアドプロシージャ、トリガー、ビュー |
| 5.1 | パーティショニング、制約 |
当初のMySQL社のビジネスモデルはデュアルライセンス方式と呼ばれGPLと商用ライセンスの二つを用意し、ビジネスユーザに商用ライセンスを販売するというものであった。このビジネスモデルはMySQLを利用するときにユーザにGPLか商用ライセンスの二者択一を迫るもので、ビジネスユーザにとっては比較的分かりやすいものであった。しかしLGPLであったクライアントライブラリまでGPL化してしまったために、オープンソースコミュニティを巻き込む騒動となってしまった。具体的にはPHPコミュニティがMySQLクライアントライブラリがGPLであるなら、PHPライセンスと共存できないのでバンドルできないと判断したのである。ウェブシステム開発用のプログラム言語として大きな影響力のあるPHPがMySQLを使わないとなると普及に影響を及ぼすと考えたMySQL社はPHPを含む多くのオープンソース形式のライセンスに対してMySQLのGPLが適用されない例外事項を設けて現在は対応している。
さてこのデュアルライセンス方式だが、MySQLを組み込んだソフトウェア自体を配布する場合のライセンスとしてはうまく機能するが、ASPやホスティングなどでGPLで無償で利用しても問題ない場合は、MySQL社は何の利益も得られない。MySQL社としてはどのような付加価値があれば、このようなユーザに料金を支払ってもらえるのか検討し、MySQLをGPLで利用するユーザへのサポートサービスを充実させ、それを2005年2月にMySQL Networkとしてサブスクリプション形式で提供をはじめた。これがMySQL Enterpriseの前身である。
ではMySQL Enterpriseでは実際に何が変わったのであろうか?
第一にはMySQL Serverのバイナリの提供方法である。MySQL社はライセンスやサポート購入者に対しては非GPLバイナリや認定バイナリを提供してきたが、今まではそれが無償でダウンロードできるバイナリとの差はほとんど無かった。しかし今後は無償で提供されるバイナリはMySQL Community Serverとし、MySQL Enterpriseを購入して提供されるバイナリをMySQL Enterprise Serverとして提供方法や機能を変えることになった。そのバイナリの明確な作成ポリシーが下記のように公表されている。
バイナリの作成ポリシー
| バイナリの種類 | 作成ポリシー |
|---|---|
| MySQL Community Server | 最新の機能が常に提供される |
| リリースは不定期 | |
| バージョン番号の末尾は常に奇数(例 : 5.0.27) | |
| 一般に配布 | |
| MySQL Enterprise Server | MySQL Community Serverの機能から実用に耐えうる機能のみ実装 |
| 定期的にリリースされる | |
| 社内および外部組織による同時2000ユーザを超えるアクセスでの負荷テストを行う | |
| バージョン番号の末尾は常に偶数(例 : 5.0.28) | |
| MySQL Enterprise購入者のみに配布 |
■MySQL Enterprise Server
オープンソースソフトはソースコードが公開されているから、基本的に自分でコンパイルすれば、MySQL社が提供するバイナリと同じものは作成できる。しかし意外とコンパイルには手間がかかるし、それが正しく動作するとは限らない。各Linuxディストリビューションも独自にMySQLをコンパイルして提供しているが、それも動作保証があるわけではない。そこでMySQL Enterpriseではデータベースに求められる堅牢性と安定性の基準を示し、MySQL Enterprise Serverという形で十分な負荷テストを行ったバイナリを提供することでこの問題を解決している。
MySQL Enterprise Serverは定期的にサービスパックをリリースし、その品質を維持する。またあまり知られていないが、MySQL Enterpriseを購入すると他社の知的財産侵害時の免責保証も付属している。これは権利関係に敏感な企業がMySQLを採用するときには、意外と重要視される項目である。
■MySQL Community Server
一方、MySQL Community Serverはコミュニティ向けに提供されるバイナリで無償で利用できる。こちらのバイナリは常に最新の機能が提供されるが、安定性が保証されるものではない。開発用途やあまりコストをかけられないユーザに向いているといえる。また不定期にリリースされるので、これを実務で利用する場合は常に情報に注意する必要があるだろう。
第二に、MySQL EnterpriseはGPLでMySQLを利用する企業ユーザに対して、安心と安定を与えることを基本的な目的としている。その大きなチャレンジとして注目されるのが、MySQLネットワークモニタリングアンドアドバイザリサービスと呼ばれるサービスである。
MySQLは通常の設定でもそれなりに軽快に動作するが、負荷の高いシステムで最大限のパフォーマンスを出すにはそれなりのノウハウが必要である。このサービスでは事前にサービスエージェントをMySQLサーバにインストールし、サービスマネージャがエージェントのインストールされたすべてのMySQL サーバの情報を取得する。取得する情報は500以上のMySQLとOSに関する値である。そしてその結果をグラフ化しブラウザで見ることができるというものだ。
しかし結果を見たところで、どう対応していいのか分からないものだ。そこで事前に用意された65種類以上のルールに適用し、さまざまなのアドバイスを自動で与えてくれるのである。これらを順番に満たしていけば、セキュリティホールを未然に防いだり、パフォーマンスを向上させたりと、確実にMySQLの運用効率を向上することができるというのである。これはデータベース管理者にとってみると非常にありがたいサービスである。このアドバイザリサービスは購入したサービスのレベルに応じて下記のように内容が変わる。
■MySQL Enterprise購入者に対するアドバイザリサービスの種別と内容
| サービスの種類 | 内容 |
|---|---|
| ベーシック | サービス非提供 |
| シルバー | 管理アドバイザー、セキュリティサドバイザー |
| ゴールド | レプリケーションアドバイザー |
| プラチナ | スキーマアドバイザー、パフォーマンスアドバイザー |
※上位のサービスには下位のサービスがすべて含まれる
またMySQL Enterpriseでは従来のMySQL Networkのサービスがそのまま引き継がれている。特に24時間体制のサポートは、レスポンスの速さと質は特筆すべきものがある。MySQL社はサポートエンジニアを全世界に配置し、緊急時に30分以内のレスポンスが得られる体制を整えている。残念ながら質問は英語でしか受け付けていないが、利用者からの立場からすると、リーズナブルな価格で高品質なサポートが得られるのはありがたいことだ。下手な英語のメールでもトラブルの再現方法を伝えれば迅速に的確なアドバイスを得ることができる。
もし日本語でのサポートが必要な場合は別途、日本のMySQLの代理店やパートナーが独自に提供する日本語サポートを購入することができるが、サービスの内容は各社で異なるので注意する必要がある。
■MySQL Networkから引き継がれたMySQL Enterpriseのサービス
| サービスの種類 | 内容 |
|---|---|
| ベーシック | 2インシデント、初期レスポンス2営業日以内 |
| シルバー | インシデント無制限、初期レスポンス4時間以内、営業日電話対応 |
| ゴールド | インシデント無制限、初期レスポンス2時間以内、24時間電話対応 |
| プラチナ | インシデント無制限、初期レスポンス1時間以内、24時間電話対応 |
次にMySQL Enterpriseによって従来の商用ライセンスの位置づけはどうなったのかを解説する。
基本的にMySQL社は現在もデュアルライセンス方式を維持している。つまり、自分が開発したソフトウエアにMySQLを組み込むとき、MySQLを GPLで利用すると問題が起きると考えられるのであれば、商用ライセンスを購入しなければならない。この商用ライセンスはOEMライセンスと呼ばれ、それを購入するとMySQL社から非GPLのバイナリが提供される。OEMライセンスは以下のような分類となる。
■OEMライセンスの種類
| 種別 | 説明 |
|---|---|
| MySQL Enterprise Classic |
バージョン3.23から5.0までのInnoDBを含まない場合のサーバライセンス Connector/J、Connector/ODBCなどMySQLサーバへの接続ライブラリを組み込むときも、このライセンスを利用する |
| MySQL Enterprise Pro | バージョン3.23から5.0までのInnoDBを含む場合のサーバライセンス |
| MySQL Enterprise Advanced(予定) | バージョン5.1を利用する場合のサーバライセンス |
※OEMライセンスは閉じたネットワークでの利用が前提
しかし、これらのライセンスは従来よりも利用制限が厳しくなっていることに注意してほしい。現在、OEMライセンス規約はMySQL社のサイトで公開されているが、それによると、OEMライセンスを適用できるソフトウエアは社内利用などの、ユーザ数の限定できるものに限られていおり、ウェブ上での一般公開を前提としたソフトウエアには適用できなくなっている。
また、組み込んだソフトウエアのリースやレンタルも禁止されている。つまり量販店で販売されているような一般的なソフトウエアパッケージのためのライセンス規約となっている。したがって、OEMライセンス規約に適合しない場合は基本的にMySQL Enterpriseを利用しなくてはならなくなったのである。これは従来から、一般公開目的のウェブシステム用としてMySQLの商用ライセンスを購入していた企業等は、ビジネス的な方向転換を迫られると思われる。
しかし、一般公開目的のウェブシステム用途であれば負荷が高くなる可能性が十分あり、今後MySQL Enterpriseを売りたいMySQL社としては、必然の選択なのであろう。しかし先ほどの説明ではMySQL EnterpriseはGPLでMySQLを利用する場合の付加価値サービスではなかったのかという疑問が湧いてくると思う。確かにそうなのだ。 MySQL Enterprise Serverのバイナリは通常はGPLで提供される。なので、非GPLバイナリを利用したい企業は別の同意書にサインしなければならない。それは非GPL バイナリの利用期間をMySQL Enterpriseの契約期間中のみに限定することなどを含めた、その他いくつかの制約に同意することである。それに同意したMySQL Enterpriseのユーザにのみ非GPLのバイナリが提供されることになる。
ここまで説明するとMySQL Enterpriseは、幅広く企業ユーザをターゲットにしていることをお分かりいただけたと思う。MySQL社はオープンソースコミュニティとのバランスをとりながら常に最適なビジネスモデルを模索してきた。今回のMySQL Enterpriseはその集大成となるのではないだろうか。すでに多くの企業がMySQL Enterpriseのサポートを表明しているが、コストパフォーマンスの高いこのサービスは多くの企業にとって検討する価値のあるものであろう。