10月9日に秋葉原で開催されたMariaDB / MySQL コミュニティイベント in Tokyoに参加してきました。最近話題の MariaDB、いったいどんな感じだろう?という情報収集に出かけました。
MySQL と MariaDB の歴史
- MySQL は1995年生まれ。MySQL=会社=ソフト
- 2007年、10億米ドルで Sun が買収
- 2009年、MariaDB が fork
- 2009年、Oracle が Sun を買収
- 2010年、Oracleからコンサルと営業部隊が抜けてSkySQLを創業
- 2013年、SkySQLとMariaDB Services(エンジニア部隊)が経営統合
SkySQL ABについて
SkySQLはMySQLとMariaDBのサポートを提供している会社。MariaDBの開発にもコミットしているが、MariaDBの運営自体は MariaDB Foundation によって行われている。これはまた買収されることを防ぐため。
ドメインは
- mariadb.com: Enteprise サービス
- mariadb.org: MariaDB コミュニティ、Foundation管理
となっている。
顧客満足度は高いと考えている。93%のサブスクリプション更新率を誇る。
MariaDB について
MariaDBの誕生から44ヶ月で、もうすぐ10.0がリリースされる予定。特徴は
- MySQL との互換性を確保
- バイナリを置き換えるだけで移行できること
- 100% GPLv2
バージョン 10.0 は MySQL 5.5 ベース。これは Oracle MySQL 5.6 がリリースされた時に Oracle が過去のコミット履歴をリファクタリングして一部消してしまったため。機能は独自実装を含め、5.6 のスーパーセットを目指している。
私が個人的にいいなと思った機能は
- Multi-source replication: 一つのスレーブに複数のマスタからレプリケーションする
- Optimizer がかなり良くなってる(特にJOINやサブクエリ)
- スレッドプール(Oracle版では有償)
- SHOW EXPLAIN を使って実行中のクエリに対して EXPLAIN が発行できる
- group commit によってfsyncを呼ぶ頻度が減った
- FusionIO DirectFS をサポートし、atomic write できるようになってる
- GTIDを有効にするときに、全部を一度に切り替えず、徐々にノードを入れ替えられる
あたりです。MySQL でも使えるのかは調べてないので、MySQLでもサポートしていたらご指摘ください...
クライアントライブラリはLGPL版が用意されている。ただしプロトコルは現在のところ互換性があるので、LGPLでなくても良いのであれば無理に移行する必要はないとのこと。
その他、MariaDB Galera Cluster や TokuDB のサポートという言葉が飛んでいて、このあたり知らないので今度調べてみようと思います。
サポートはリリース後5年間提供していて、これは各distributionがMariaDBに移行した理由の一つだと考えている。
MariaDB Manager について
MariaDB をモニタリング、設定、プロビジョンするためのツール群で、シェルスクリプトとPHP、Javaを組み合わせて実装されている。オープンソースで提供される。現在はまだ開発中。
GUIを使っても良いし、RESTful APIを使って既存のツールと組み合わせて利用することも可能。
興味深いと思ったのはスレーブの追加やバックアップもAPIからできるようになっていると言っていたところです。Xtra Backupと組み合わせて使ったりするのか、それとも似たような機能が独自で実装されるのか、そのあたり気になりました。
MaxScale について
MySQL Proxy のような、クライアントとサーバーの間に挟むプロキシを開発中。C言語で、Event-basedで開発しているので高い性能を出せる。従来のプロキシより高機能なものを目指している様子。
- master-slave、マルチマスタ構成をサポート
- Sharding のサポート(将来的にはMariaDBの改良とセットでSQLをフルサポート)
- 各ノードにslaveとして接続し、binlogの進み具合を見て一貫性を保証する仕組み
- PAM, LDAP, Keystone などの認証をサポート
- 将来的にはMariaDBのパーザーを載せ、サーバーとの通信をバイナリプロトコルにすることも検討
開発はまだ初期段階で、10月22日にgithubで公開予定なので、フィードバックをくださいとのこと。
全体を通した感想
OracleがMySQLのプロプライエタリライセンスを持っている以上、すべてをGPLで提供するしかないのでどの程度ビジネスが上手くいってるのかなぁと気になって、「いいことばっかりのように思うけど、フリーランチは無いはずで、何を利用者に求めてるの?」と聞いてみました。そしたら「まずはOSSとして開発が進み、フィードバックやパッチがもらえること。もちろんサブスクリプションを買ってもらえるとうれしい」とのことでした。今日聞いただけの話ですが、開発自体はかなりオープンに進めているようで好印象でした。商用版を使っているかどうかで、Oracle MySQLとMariaDBを比較した時の印象は大きく変わるんじゃないかなぁと思います。
テストケースをつけてリリースしていることも強調していました。Oracle MySQL 5.6.14 にはテストケースがひとつも追加されずリリースされたことを引き合いに、オープンソースとしてはMariaDBのほうが参画しやすいのではないか、また、バグトラッカーも一本化していると言っていました。なるほど、普通のオープンソースの開発にかなり近いようです。また、Perconaとは密な協力関係でやっていると言っていました。
今のところRDBMSといえばMySQLという感じですが、PostgreSQLもかなり進化しているし、MariaDBも評価され始めているようなので、一度フラットにいろいろ調べてみるのが良いのかなぁ、と思いました。
「今MySQL 5.6を使ってるんですけど」という話をしたら「MariaDB 10.0が来春に出る予定なので、それまで評価を進めてもらって、その時に移行するかどうか検討するのが良いのではないか」とのことでした。
MaxScale や MariaDB Manager はまだ開発の初期段階で実用は難しそうですが、便利そうではあるのでこの先どういうふうに開発が進むのかなぁと興味を持ちました。