ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2011-06-20

[書評]MySQLをハックしまくりたい人のためのスゴ本「MySQL 5.1 Plugin Development」

MySQLはGPLv2で頒布されているフリー(自由な)ソフトウェアだ。誰でも自由に改造、改善、機能追加して、GPLv2のもと再頒布することが出来る。

そうは言っても改造なんて敷居が高くて出来ないよ・・・という人に朗報なのが本書「MySQL 5.1 Plugin Development」だ!MySQLはストレージエンジンによってデータを管理するレイヤーが独立しているのはよく知られているが、MySQL 5.1ではさらに一歩進んで、ストレージエンジンを含む様々なプラグインを作成できるようになった。プラグインAPIを使ってMySQLを拡張すれば、無造作に改造してしまうよりもずっと楽にMySQLをハック*1することが出来るだろう。

MySQL 5.1で利用可能なプラグイン

Plugin APIは、MySQL 5.1で新たに追加された機能である。これにより、共有ライブラリ形式で後から機能を追加することが出来る。とはいえ、実際には運用中に機能を追加するということはあまりないだろう。Plugin APIの恩恵は「追加したい機能が(比較的)容易に開発できる」という点だろう。

MySQL 5.1には次の形式のプラグインが定義されている。

  • UDF
  • デーモン
  • ストレージエンジン
  • Information Schema
  • Fulltextパーサ

MySQL 5.5ではさらに監査と認証のプラグインが追加されている。(準同期レプリケーションも実はプラグインとして実装されている。)追加したい機能を本体と綺麗に切り離して実装できるというのが、プラグインにおける一番の効用であろう。

内部構造について知る?

プラグインが定義されているとは言え、機能的にきっちりとMySQLから分離して記述できるかと言えばそれはクエスチョンだ。それなりに機能的に充実したプラグインを実装しようと思うと、どうしてもMySQLが内部的に使用する関数やデータ構造へのアクセスは避けられない。

「MySQLの内部構造なんてシラネーヨ!!」

という人も安心して欲しい。本書ではプラグインの開発に必要だと思われるデータ構造や関数についての解説もなされているからだ。プラグインの開発がしたい人のための情報が豊富に取り揃えられていると言えよう。

TOCABストレージエンジンを実装する!

本書の最終章では、なんとTokyo Cabinetを利用したストレージエンジンを実装する!機能的に完全なものではないものの、かなり実践的な内容となっている。MySQLがストレージエンジンのインデックスをどのように利用するかが分かるだろう。

ただし、誤解しないで頂きたいのは、本書では「どのようにB+TREEを実装するか」というような内容には触れられていない。それはTokyo Cabinetが既に実装している。既存のB+TREEを実装したDBMSをどのようにMySQLのストレージエンジンとして組み込むかというのが、本書のテーマのひとつだ。

ただし・・・

本書は英語で書かれている。

それが本ブログの読者の多くにとって最大の難関ではないだろうか。逆に、英語を読むことに不都合がなければ、本書はとてもおすすめ出来る書籍である。使われている表現は平易なものばかりなので「ちょっと頑張れば読めるぜ!」という人でも大丈夫だろう。英語にもっと慣れ親しむためにあえて洋書にチャレンジするというのもアリだろう。(特に社内公用語が英語になってしまった人たちなど。)

こんな人におすすめ

本書は特に次のような人にオススメだ。

  • MySQLのプラグインを書きたいひと
  • MySQLの内部構造についてもっと知りたいひと
  • 英語が苦手でないひと。

もくじを除いて260ページほどとそれほど分厚くないにも関わらず$44.99もするのだが、内容もぎっしり詰まっているので、それだけの価値がある本だと思う。お小遣いに余裕があればちょっと手に取ってみてはいかがだろうか。


脚注
  1. ここでは、「ハック」とはウィキペディアの解説にあるのと同じ意味で使っている。クラッキングの意味ではないので注意。

0 コメント:

コメントを投稿