MySQL、Berkeley DBストレージエンジンを捨てメモリキャッシュ方式のプラグインを追加

MySQLはバージョン5.1.12のリリースに伴い、Berkeley DB(BDB)ストレージエンジンをデータベースエンジンのサポート対象から外すことを予定している。一部の関係者からは、この動きはOracleによるSleepycat買収を受けたもので次はInnoDBが対応エンジンのリストから消えるのではないか、という見方も出ている。しかしMySQLのアーキテクチャ・ディレクタBrian Aker氏は、InnoDBの除外は考えられないし、Berkeleyエンジンのサポートを中止するのは技術的な理由からだと語っている。また彼は、メモリキャッシュ方式のMySQL用ストレージエンジン・プラグインを初めてリリースすることも公表している。

MySQLによるBDBストレージエンジンのサポート中止の決定が、一部ではMySQLの事業を崩壊に追い込む動きとも見られたOracleによるSeepycatおよびInnobaseの買収に関係しているのではないかと勘繰りたくなるのも無理はない。しかし、Aker氏はこれを否定している。

今回の決定がOracleとの対立から生じたものでないとすると、MySQLはなぜBDBを対応リストから外すのだろうか。その理由の1つは、BDBストレージエンジンの利用範囲が限られていることにある。Aker氏の認識では、BDBを有効にしてMySQLを提供しているディストリビュータはDebianだけだという。「主要なMySQLバイナリでも、BDBの有効化は非常に不均一な形で行われている。

「BDBのインストール環境といえば、きっと片手の指で数えられるほどだろう。だからといって、BDBがエンジンとして劣っていたわけではない。その背景には、背後で支える開発者グループの活動が常にInnoDBのほうが意欲的だったという事情がある」

「オープンソースの世界では、アクティブなコードが受け入れられるのだ」

Oracleの組み込みシステムマーケティング担当副社長Rex Wang氏は、実際にBerkeley DBチームはBDBエンジンの除外を望んでいた、と打ち明けている。「私の知る限り、現在Berkeley DBを用いているMySQLの環境は、たとえあったにせよ、ごくわずかだ。ゆえにMySQLとOracleを併用している顧客に対する影響はまったくないと考えている」(同氏)。

ただしAker氏は、たとえBDBの利用が限定的であってもバージョン5.0以前のMySQLからBDBが姿を消すことはなく、バージョンが4.xまたは5.0.xのMySQLを導入済のユーザは安心してBDBを使うことができる、と話している。Aker氏は「これまでずっとMySQLはBDBの商用サポートを実施してこなかったので、何ら状況は変わらない」とも指摘している。

MBDBのサポート中止の決定についてMySQLはあまり触れていないが、バージョン5.1.12のリリースノートにそのことが記された。5.1シリーズはベータ版とみなされており、5.1.12はまだリリースされていないので、MySQLが公式な発表をしていなくても驚くにはあたらない。

しかし、ブロガーのPeter Laursen氏は、今回の例はMySQLによる情報開示が十分でないことを示している、と不満を表明している。

Aker氏は、BDBの一件はInnoDBのサポート中止の前兆などではなく、OracleによってInnoDBが買収されたからといってそのストレージエンジンをMySQLが排除する理由はどこにもない、と語っている。

うちの飼い犬にも被害妄想の気があり、リスを見ただけで泥棒と勘違いして吠え立てるので困っているよ。先週は数時間かけてInnoDB用のインタフェースのコードを整理した。バグ修正の結果は引き続きHeikki(Tuuri氏、InnoDBの開発者)からもたらされることになるだろう。数カ月前には、InnoDBのフルテキストサポートを利用するにはMySQLのSQL構文をどう拡張すべきかについてKen Jacobs氏と話したばかりだ。InnoDBが姿を消す、あるいはOracleがInnoDBのサポートを中止するといった徴候は現れていない。

それに、MySQLがInnoDBを切り捨てる理由がどこにあるだろうか。非常に多くのMySQLユーザがInnoDBを利用しているのだ。私もいくつかのWebサイトでInnoDBを使っており、その好評ぶりを維持することには個人的な関心がある。:)

Wang氏は、OracleはMySQLのためにストレージエンジンInnoDBのサポートを継続するだろう、と述べている。「InnoDBは圧倒的に有力なトランザクション・ストレージエンジンであり、Oracleは継続的な機能強化と徹底したサポートも含めて引き続きInnoDBをMySQLに提供していく予定だ。従って、MySQLとOracleが予備的なトランザクション・ストレージエンジンとしてBerkeley DBをサポートすべき理由は確かにどこにもない」

MySQLにとってBDBは最初のトランザクション・ストレージエンジンだったが、InnoDBが登場してからはこのエンジンが最も人気の高い選択肢になった、とWang氏は述べている。「これは唯一InnoDBを採用していたMySQLのニーズを満たすことにInnoDBが専念したためだった。これに対し、Berkeley DBは非常に広範なカスタマベースとコミュニティのニーズを満たすことに力を注いだ。MySQLはBerkeley DBに手を加えたものを使っていたが、MySQLのドライバがBerkeley DBの利用のために厳密に最適化されたことはなく、このインタフェースは何年も放置されていた。対照的に、InnoDBではMySQLでの使用を考慮した最適化が絶えず行われ、非常に成熟した定評のあるものになっている。

誰でも使えるプラグイン?

やはり、オープンソースの利点は、本当に欲しいコンポーネントがあれば誰でもそのサポートを行えることである。Aker氏は、BDBのサポート継続に関心を寄せるコミュニティは、プラグイン方式のストレージエンジンとしてBDBを簡単に追加できると述べているが、これはMySQL向けの トランザクション・エンジンPrimeBase XTやSolid Information TechnologyのMySQL向けストレージエンジンなど各種ストレージエンジンがMySQLの一部としてではなくプラグインとして追加されることを受けての発言である。

またAker氏は自らが取り組んできたメモリキャッシュ方式のストレージエンジン・プラグインについても言及している。このプラグインはmemcachedの機能を別途実行するのではなく、MySQLにこの機能を直接追加することになる。

memcachedは、LiveJournalのような高トラフィックのサイトにおいて、ハードディスクではなくメモリ内の情報へのアクセスをクライアントに許可してパフォーマンスを向上させる目的で広く使われている。Aker氏は、memcachedを分離させて利用するのではなく、この機能をストレージエンジンとして利用することで開発者の作業は楽になる、と語っている。

「データの送信がデータベース内部から可能になるため、アクセスのコストが減少するのだ。単純な選択操作によって、データベース内のデータを格納したメモリキャッシュの内容を比較することもできる。使いやすさ、統合性、アクセス回数の少なさ、などすべてが組み合わさっすばらしいアイデアになっている」

まだ、このプラグインは開発の初期段階にある。このメモリキャッシュ方式のストレージエンジンは「アルファ版以前」の状態のため、SQL構文によってはまだ動作しないものがあるとAker氏は話している。Aker氏によると、SELECT、UPDATE、DELETE、INSERTは機能するが、各種ORDER BY、REPLACEとその他いくつかの操作は機能していないようだ。

果たして、このメモリキャッシュ方式のストレージエンジンはMySQLの主流になるのだろうか。Aker氏は次のように語っている。「それは反響と使われ方次第だ。今では、MySQLツリーの外側にあるこのエンジンの開発スピードのほうが速くなっている。我々は間違いなくこのエンジンを取り込む決断を下すことになるだろう」

NewsForge.com 原文