MySQL を超える

よく使われるデータベースから分岐する

MySQL は最もよく使われるプログラムの 1 つですが、多くの開発者は MySQL をそのまま使用するのではなく、独自の機能を提供する他のプロジェクトへと分岐させる必要があると感じています。そうした必要性と、コアとしての MySQL の成長が Oracle のおかげで鈍るのではないかという不安から、MySQL には開発者にとって興味深いサブプロジェクトや分岐製品が数多く生まれています。

Michael Abernethy, Programmer, Freelancer

Mike AbernethyMichael Abernethy は多種多様な技術を扱い、また広範にわたる顧客と共に作業を行ってきました。彼が取り組んでいるのは、より優れていて複雑な Web アプリケーションを作成すること、それらのアプリケーションを実行するブラウザーの限界をテストすること、そしてそのアプリケーションの作成および保守をもっと容易に行えるようにする方法を見つけることです。コンピューターで作業をしていないときは、子供と本を読んだりして過ごしています。



2011年 11月 25日

はじめに

MySQL は歴史上最もよく使われている無料のオープンソース・プログラムの 1 つです。MySQL は何千もの Web サイトのバックボーン・データベースとして使われており、この 10 年にわたるインターネットの爆発的成長に (Linux と共に) 大きく貢献したことは間違いありません。

では、それほど MySQL が重要であるなら、コアとしての MySQL から分岐して注目を集める製品が増えているのはなぜでしょう。MySQL は無料のオープンソースであるため、開発者はいつでもコードを入手することができ、必要に応じて独自の変更を加え、配布することができます。MySQL から分岐した製品のうち、開発者が本番環境に採用するほど信頼される製品は、長い間ありませんでした。しかしそれが急速に変わりつつあります。MySQL から分岐したいくつかの製品が大きな注目を集めています。

この記事では、MySQL から分岐した有名な製品として注目を集めている、Drizzle、MariaDB、Percona Server について、XtraDB エンジンを含めて説明します。さらに、各製品が分岐した理由、各製品の目標、そして皆さんそれぞれの本番環境で各製品を使用すべきかどうかについても簡単に説明します。この記事を読み終えると、「MySQL から分岐したこれらの製品は私の環境にとって適切なソリューションなのだろうか」という疑問に対して答えることができるようになります。


なぜ分岐するのか

なぜ MySQL から分岐した製品が必要なのでしょう。これは非常にもっともな質問です。何千もの Web サイトが MySQL を利用しており、多くの人々にとって MySQL は適切なソリューションであるように思えます。しかしよくあることですが、多くの人々にとって適切なものが、すべての人々にとって適切とは限りません。一部の開発者は、彼ら独自の要求に応じてさまざまなものを改善したいと思っています。彼らにとって優れたソリューションを完璧なソリューションにすることができれば最高なのです。

では、MySQL から分岐した製品が何を変えようとしていたのか、具体的な内容を詳細に調べてみましょう。一部の分岐製品を作成した人々は、MySQL は大きくなりすぎ、まったく関心を持てそうもない機能が多く、単純であれば実現されるはずのパフォーマンスが犠牲になっていると感じていました。従来よりも簡素化された MySQL 4 に十分満足している時に、なぜ MySQL 5 で追加された余分な複雑さに煩わされる必要があるのでしょう。この分岐製品を作成した人々にとって望ましい MySQL は、より単純で高速な動作をするもの、つまり MySQL にアクセスするフロントエンド (この場合は高可用性 Web サイト) を念頭に置いて作られた、提供する機能は少なくても非常に高速な動作をするデータベースだったのです。

これとは別の分岐製品を作成するようになった人々にとって、MySQL は十分な新機能を提供していないか、していたとしてもタイミングが遅すぎました。彼らは MySQL が対象としている大量の RAM を持つマルチコア・プロセッサーで実行される高可用性 Web サイトという市場に MySQL が追いついていない、と感じたのかもしれません。彼らは MySQL に用意されている (MySQL を理解している人であればご存知の) MyISAM と InnoDB という 2 つの異なるストレージ・エンジンが、どちらも彼らが求めているとおりの機能を提供することはできないと感じ、彼らの目的に完全に適した新しいストレージ・エンジンを作成しました。

さらに別の分岐製品が最終的な目標として目指したのは、MySQL を簡単に置き換えることです。しかも単に置き換えるだけで、1 行もコードを変更しないことです。この分岐製品では可能な限り移行を容易にするために、MySQL と同じコードとインターフェースを使用しています。一方で、MySQL とは互換性がなく、コード変更が必要な分岐製品もあります。それぞれの分岐製品は成熟度も異なり、本番環境で使用可能と謳っている製品もあれば、現時点では本番環境で使用するには程遠いとしている製品もあります。

最後に、Oracle の下で MySQL がどの程度うまく行くのか、という不確かさがあります。Oracle は MySQL を買収した Sun を買収し、現在は Oracle が MySQL 製品を管理し、新しいリリースを完成させるための開発コミュニティーをリードしています。しかし、Oracle は既に商用のデータベースを持っているため、MySQL を最先端の技術が適用された状態に保つためのリソースを十分に投入しないかもしれない、という懸念があります。つまり多くの分岐製品が生まれた背景には、無料で利用できるオープンソースの最有力データベースである MySQL の機能が少なくなり、リリース・サイクルが長くなり、サポート・コストが高くなるのではないか、という潜在的な不安もあります。

XtraDB

XtraDB 自体は独立した製品ではありませんが、それでも MySQL からの分岐製品と考えられます。XtraDB は実際には MySQL ベースのデータベースのストレージ・エンジンです。MySQL には既に標準ストレージ・エンジンとして MyISAM と InnoDB が含まれているため、XtraDB は MySQL に対する新たなストレージ・エンジンと考えることができます。MySQL 4 と MySQL 5 では、デフォルトの MyISAM ストレージ・エンジンを使用して各テーブルをインストールします。InnoDB もストレージ・エンジンとして比較的新しい選択肢であり、データベース管理者や開発者はデータベースをセットアップする際、テーブルごとにストレージ・エンジンのタイプを選択することができます。2 つのストレージ・エンジンの主な違いは、MyISAM ではトランザクションをサポートせず、InnoDB ではサポートする点です。他にも細かなパフォーマンスの違いが数多くあり、MyISAM に比べて InnoDB の方が細かな点で数多くのパフォーマンス向上が図られており、またデータ消失の可能性がある場合の信頼性や安全性が高められています。InnoDB の方が今後の改善に適したストレージ・エンジンであるように思えることから、MySQL は 5.5 リリースからデフォルトのストレージ・エンジンを MyISAM から InnoDB に切り換えています。

こうした利点を基に、InnoDB ストレージ・エンジンから、XtraDB という新しいストレージ・エンジンが分岐しています。この XtraDB はどの程度新しいストレージ・エンジンなのでしょう。XtraDB は Percona によってリリースされたものですが、最初のリリースからまだ 3 年も経過しておらず、比較的新しいストレージ・エンジンです。XtraDB は、現在最新のサーバー上で実行される最新の高可用性 Web サイト専用に設計されており、10 数個のコアと大量の RAM (32 GB 以上) を備えたサーバーで実行することを前提にしています。今やどんな会社もこうしたサーバーをサーバー管理会社に発注することができるため、こうしたサーバーの利点をフルに活用できるようにデータベースを設計する必要があります。

XtraDB には、InnoDB ストレージ・エンジンの簡単な置き換えとなるという目標もありました。その目標を実現できれば、ユーザーは単にストレージ・エンジンを切り換えるだけでよく、データベースを操作するアプリケーションのコードに変更を加える必要はありません。XtraDB では、InnoDB に追加したいと考えていた新機能や改善をすべて提供するのみならず、InnoDB との後方互換性も維持する必要がありました。そして彼らはその目標を達成したのです。

XtraDB はどの程度 InnoDB よりも速いのでしょう。私の行ったパフォーマンス・テストによれば、XtraDB が実行した 1 分当たりのトランザクション数は MySQL 5.1 に組み込みの InnoDB エンジンに比べ、2.7 倍に及びました (「参考文献」を参照)。これは確かに見逃すことのできない XtraDB のメリットであり、InnoDB と簡単に置き換えが可能なことを考えればなおさらです。

Percona Server

XtraDB は MySQL に組み込みのストレージ・エンジンよりも大幅に改善されていますが、単独の製品ではなく、既にインストールされた MySQL に単純に追加するようなものでもありません。そのため、この新しいストレージ・エンジンを使用したい場合には、このストレージ・エンジンを提供する製品を使用する必要があります。

Percona Server は、まさにそうした製品であり、MySQL に関するコンサルティングを行っている有力企業の Percona 社によって提供されています。Percona Server は独立したデータベース製品であり、ユーザーはインストール済みの MySQL を Percona Server で置き換えることができ、それによって XtraDB ストレージ・エンジンの強みを活用できるようになります。彼らの主張によれば、Percona Server は MySQL と完全に互換性があるため、理論的にはソフトウェアのコードを何も変更する必要はありません。これは確かに大きな強みであり、即座にパフォーマンスを向上させたい場合には品質管理の面からも素晴らしいことです。つまりできるだけコア・コードを変更せずに XtraDB エンジンの強みを活用できる Percona Server は調べてみる価値が十分にあります。

また、XtraDB ストレージ・エンジンを元々作成したのは Percona 社のチームです。Percona チームは XtraDB のコードをオープンソースにしたため、XtraDB のコードは他の製品にも採用されています。ただし、それらの製品のエンジンを元々作成したのは Percona Server を作成したのと同じ人達です。この情報をどう利用するかは皆さん次第です。

Percona 社の Web サイトによれば、Percona Server には以下のような特徴があります。

  • スケーラビリティー: より多くのトランザクションを処理することができ、強力なサーバーを生かしてスケールアップすることができます。
  • パフォーマンス: XtraDB を備えた Percona Server は驚くほど高速です。
  • 信頼性: 破損に対するレジリエンシーと、クラッシュしても安全なレプリケーションの機能が備わっています。
  • 管理: オンラインでのバックアップや、オンラインでテーブルをインポート/エクスポートすることができます。
  • 診断: 高度なプロファイリングとインスツルメンテーションが可能です。
  • 柔軟性: ページ・サイズは可変であり、バッファー・プール管理も改善されています。

Percona チームは最後に、Percona Server は「Oracle からの正式な MySQL Enterprise リリースに最も近い」と主張しています。そのため、MySQL のコア・コードに多くの変更を加えた他の分岐製品とは一線を画しています。Percona Server の 1 つの欠点は、Percona チームがコードを管理していることです。そのため、外部の開発者からのコントリビューションは最初に Percona チームがレビューをしてからでないと受け付けられず、製品に追加される機能は Percona チームが完全に管理するようになっています。

MariaDB

XtraDB ストレージ・エンジンを提供する別の製品として MariaDB という製品があります。MariaDB は Percona Server と非常によく似ていますが、MySQL のコア・コードに対して Percona Server よりも多くの変更を加えており、調整によって標準的な MySQL よりもさらにパフォーマンスを高めようとしています。MariaDB は Percona Server の XtraDB エンジンを直接利用しています。そのため、MariaDB と Percona Server で使われているストレージ・エンジンはまったく同じであり、エンジンの違いはありません。

また、MariaDB は MySQL が提供する標準的なストレージ・エンジンである MyISAM と InnoDB も提供しています。そのため、MariaDB は実質的に MySQL のスーパーセットとみなすことができ、MySQL の機能をすべて提供している上に、さらにそれ以上の機能も提供しています。また MariaDB の作成者たちも MySQL を簡単に置き換えられると主張しています。そのため、MySQL から MariaDB に切り換える際にコードの変更は不要、と知った上で MariaDB をインストールすることができます。

最後に説明するおそらく最も重要な点は、MariaDB を作成した中心人物は MySQL の元々の作成者である Monty Widenius 氏であり、この Monty 氏が MariaDB の開発を管理する Monty Program という会社を設立し、開発者を雇用して MariaDB 製品の作成と改善を行っていることです。このことには、良い面と悪い面の両方が存在する可能性があります。この会社が中心となって MariaDB の機能の開発とバグの修正を行っているのは良い点ですが、この会社が収益を重視するのではなく、製品の向上に主眼が置かれているという点は問題になる可能性があります。収益を生み出さない会社は永遠に存続するわけではありません。

Drizzle

最後に取り上げる分岐製品は Drizzle です。上記で説明した 2 つの製品とは異なり、Drizzle は MySQL からは大きく離れてきており、Drizzle の作成者たちは、Drizzle は MySQL を簡単に置き換えるものではないとまで主張しています。彼らは、たとえ使い慣れた MySQL の側面を変更することになるとしても、さらに大幅に MySQL を変更し、高可用性の問題に対する優れたソリューションを提供することを目標にしています。

この会社の FAQ ページでさまざまな質問を読んでいくと、彼らの目指すところが一層明確になります。彼らは MySQL 4.1 リリースの後に MySQL のコアに加えられた変更に不満を持っており、「多くの開発者はオーバーヘッドが追加されることを望んでいない」と主張しています。彼らは、彼らの製品が SQL 準拠のリレーショナル・データベースではないとさえ認めています。これはまさに MySQL からの決別です。

では、皆さんが使い慣れた MySQL からそれほど大幅に変更されるなら、なぜこの製品を検討する必要があるのでしょう。その理由は、まさにその変更点にあります。つまり Drizzle は、MySQL エンジンの大幅な作り直しであり、最適ではないため不要と判断された機能が削除され、コードの大部分は最適化のために作り直され、さらには C から C++ へというコードの変更まで行われています。しかもそれにとどまらず、この製品は特定の市場をターゲットとして念頭に置いて設計されています。つまり Drizzle がターゲットとしているのは、大量の RAM を持つマルチコア・サーバー、Linux を実行する 64 ビット・マシン、クラウド・コンピューティングに使用されるサーバー、Web サイトをホストするサーバー、毎分何万ものアクセスを処理するサーバーです。これは非常に的を絞った市場ですが、あまりにも的を絞りすぎではないでしょうか。そう思われる方は、こうしたタイプの企業が現在、データベースにどれほどの費用をかけているかを考えてみてください。MySQL の代わりに Drizzle をインストールすることができれば、彼らはサーバー・コストを半分に削減することができます。これは大きな金額です。

では、誰もが Drizzle を使用すればよいのではないでしょうか。しかし、ちょっと待ってください。彼らが繰り返し指摘しているように、Drizzle は MySQL との互換性がありません。従って既に MySQL プラットフォームを使用している場合には、その環境で Drizzle を適切に動作させるためには大量のコードを作成し直す必要があります。

Drizzle を動作させるには追加の作業を必要とし、Percona Server や MariaDB ほど手軽には使用できないように見えるにもかかわらず、この記事で Drizzle を取り上げた理由は、Drizzle は現状では選択肢に入らないかもしれませんが、数年以内には一部の人達の選択肢に含められる可能性が大いにあるからです。この記事は、今後皆さんが使用することになると思われるツールへの認識を高めることを目的としているので、Drizzle を紹介するには良い機会なのです。著名な DB 専門家の多くは、向こう 5 年ぐらいで Drizzle が高可用性データベースとしてよく使われるようになるだろうと考えています。

Drizzle は完全にオープンソースであり、開発者からのコントリビューションを広く受け付けています。Drizzle は MariaDB とは異なり、開発を後援する企業はなく、Percona Server とも異なり、外部のコントリビューターに門を閉ざしているわけでもありません。MySQL の大部分を作成し直すという大きな目標を考えると、Drizzle はさらに成長し、新しい機能を実現していく必要があるかもしれませんが、現在の Drizzle はそれに適した位置にあると言えます。

比較表

この記事で紹介した MySQL からの分岐製品をまとめたものが以下の表です。

製品価格目標主な特徴本番環境への適用
Percona Server無料XtraDB ストレージ・エンジンに対するラッパーと追加の分析ツールを提供することXtraDB を利用可能
MariaDB無料XtraDB を含めることによって MySQL を拡張し、パフォーマンスを向上させることXtraDB を利用可能
Drizzle無料MySQL よりもスケーラビリティーとパフォーマンスを大幅に向上させること高可用性可能

まとめ

この記事では、MySQL が抱える問題を解決しようとして MySQL から新たに分岐した 3 つの製品について説明しました。これら 3 つの製品はどれも無料のオープンソースです。これらの製品を使用するにあたっては、現在の MySQL が提供する機能とこれらの製品を使用することによるプラス面とマイナス面とを比較する必要があります。この記事のほとんどの読者にとって、MySQL は相変わらずデータベースに対する要求を満たす推奨の選択肢になると私は思っています。この記事の読者のうち、1 時間 100 万ヒットの Web サイトを所有している人はほとんどいないと思います。繰り返しますが、MySQL は相変わらず非常に素晴らしい製品であり、ほとんどの用途に完全に適したデータベースです。

ただし、サイトの可用性、スケーラビリティー、パフォーマンスに関し、現在の MySQL が提供する以上のものが必要であると考える人達にとって、求めるソリューションをこれら 3 つの製品の 1 つが提供してくれるかもしれません。さらに一歩進め、皆さんのサイトが 10 億ドルのアイデアになると思うならば、これらの製品のいずれかを最初から使用することを検討し、可用性、スケーラビリティー、パフォーマンスなどが問題になる前に対処しておくのもよいかもしれません。

最後に、MySQL からこれらの製品が分岐することになった根源には、MySQL の機能を変更したいという要求があります。分岐製品の作成者達は、そうした変更が MySQL に実現されるのを待ちきれず、彼ら自身で変更しようと作業を始めました。また、Oracle に対する不安が MySQL の将来に影を落としています。MySQL を最初に作成した開発者を含め、多くの開発者は MySQL の将来について、さらには最先端のデータベースに要求される内容を Oracle が MySQL で実現しようとするのかどうかについて、懸念を抱いています。私の意見としては、そうした懸念はすべて妥当なものであり、まさにその理由から、将来に向けて進む中で、これら 3 つの製品から目を離さないようにする必要があります。

参考文献

学ぶために

製品や技術を入手するために

  • この記事の読者はデータベース開発に関心を持っているはずです。それならば、無料の IBM DB2 Express-C を試してみてください。
  • 他にも IBM の無料ソフトウェアを試してみてください。試用版をダウンロードすることも、オンライン評価版にログインすることも、Sandbox 環境で製品を操作することも、クラウドを介して IBM 製品にアクセスすることもできます。100 を超える IBM 製品の評価版のなかから選ぶことができます。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source, Information Management
ArticleID=775789
ArticleTitle=MySQL を超える
publish-date=11252011