drizzle

Webサイトに求められるデータベースを考える
Drizzleプロジェクトの目指すもの、その先を読む


株式会社ミクシィ
研究開発グループ
前坂 徹 (http://torum.net/)
2008/09/03

クラウドコンピューティング環境のような“massively concurrentな世界”で使えるデータベースを目指すDrizzle。その開発の方向性からこれからのWebシステムで求められるデータベースのあり方が見えるかもしれない。一足先にDrizzleに触れてみよう(編集部)

Drizzleとは

 Drizzle とは、MySQLのもともとの目標である、使いやすさ、信頼性、そしてパフォーマンスに重点を置いたMySQLの派生プロジェクトで、Brian Aker氏(米サン・マイクロシステムズ CTO/Labs:元MySQL Director of Architecture)によって立ち上げられました。

 MySQLと比較して機能面におけるDrizzleの大きな違いは、サーバアーキテクチャをマイクロカーネルにすることで、サーバ(MySQLでいうmysqld)には必要最小限の機能しか搭載せず、代わりにすべての機能が「プラガブル」注1であることです(図)。

fig1
図 Drizzleと各モジュール・コンポーネントの関係 

 パフォーマンス面においては、並列性を高めることをミッションにしており、次世代のハードウェアに適し、かつWebとクラウドコンピューティングの分野をターゲットにした次世代のDBMSを目指しています。DrizzleプロジェクトはBrianによって編集注2008年7月のOSCONで発表されました注2

注1)身近な例では、Apacheのmod_xxなどのモジュールや、Plaggerの実装もプラガブルな実装といえます。
注2)OSCON:http://en.oreilly.com/oscon2008/public/content/home
google videoではBrianのプレゼンテーションを見ることができます。
http://video.google.com/videoplay?docid=-1985562674353809731&hl=en

編集注)本稿ではAker氏への敬意と親しみを込め、また、筆者である前坂氏とAker氏の親交を鑑み、以降、氏をBrianと表記します。

プロジェクトはこうして始まった!

 Drizzle の立ち上げの直接的なきっかけは、ラックスペースのCTOがBrianに「memcachedやGearmanを内部的に組み合わせて使える、スリムダウンしたMySQLを作ろうと思ったことはないのか?」と聞いたことでした。

 Brianはその会話以前に、世界中を飛び回りながらさまざまな企業の手助けや技術者との会話の中で、スリムダウンしたMySQLの需要があることを認識していたことと、自分自身がMySQL 4.1以降に追加された機能に疑問を抱いていたこともあり、MySQLのスリムダウンに実験的に取り掛かりました。

 時間がたつにつれ、Brianは同じ考えを持つ仲間に声を掛け、徐々に参加者が増えていきました(筆者も、この段階でプロジェクトに参加しました)。現在では、ソフトウェアエンジニア、コンサルタント、Linuxスペシャリスト、データベース管理者などのさまざまな人たちが集まるプロジェクトにまで発展しました。

マイクロカーネルを目指す

 Drizzleではコミュニティで必要がないと判断されたコンポーネントを取り除き、機能を追加したい場合は必要に応じて、定義されたインターフェイス経由で追加できる構成を目指しています。

 例えば、セキュアな環境でデータベースサーバを運用するのであれば、データベースサーバ側の認証メカニズムは無駄なオーバーヘッドになります。

 Drizzleのモデルでは、すべてのコンポーネントをオプション化することで、使用するシステム管理者のノウハウと企業ポリシーに合った、最適なカスタムDBMSを実現することが可能になります。加えて、Drizzleではデータタイプも追加できるようになります。

モダン・次世代のアーキテクチャがターゲット

 Drizzleでは、このほか、次世代アーキテクチャへの対応を積極的に行う予定です。以下でそれらを見ていきます。

Massively Concurrent(超並列)な世界で戦うデータベース

 現在のハードウェア市場のCPUはスタンダードでデュアルコアやクアッドコアですが、Drizzleでは32コアからのマシンをターゲットにしています。理由は、1〜2年後の近い未来には32コアのマシンが市場でスタンダードになっていると考えられるからです。

 昨今のオープンソースソフトウェア界隈では並列プログラミングの話題になるとCAS Operation(Compare And SWAP Operation)や、より速いread/writeロックなどの話が目立ちますが、われわれはそもそも速いロックなど存在しないと考えています。従って、DrizzleではMySQL 6.0で使われているロック機構の多数が取り除かれています。

モダンなCプログラミング

 Drizzleはコードベースをモダンにするため、また、32bit/64bit間のポータビリティ、可読性、またメンテナンス利便性を向上するためにC99規格を採用しました。このポリシーのため、DrizzleはC99に対応したコンパイラがなくてはビルドできません。

Drizzleのライセンス

 Drizzleは大きく分けてサーバ、クライアント、プラグイン、ドキュメンテーションの4つのコンポーネントがあり、それぞれに対して個別にライセンスを発行します。

Drizzleサーバ

 サーバはMySQLのコードベースを受け継いでいるためGPLv2 を採用しています。

Drizzleクライアント

  クライアントについては、特に規定はなく、Contributor Agreementも設けないフリーな形態です。

 Drizzleの開発チームで新しく作ろうと施策しているクライアントライブラリは、現段階ではBSDライセンスを使おうかという話になっています。

Drizzleプラグイン

 プラグインコンポーネントはクライアントと同様、プラグイン作者が自由にライセンスを選べます。

ドキュメンテーション

 ドキュメントのライセンス形態については現段階では未定です。

 ここまで紹介してきたとおり、Drizzleはモダンな仕様を目指しています。MySQLやSQLiteではなくなぜDrizzleのような仕組みが必要なのかについて、次ページで詳しく見ていきましょう。

  1/3 次のページへ

 

 Index
Drizzleプロジェクトの目指すもの、その先を読む
→ Page 1
・Drizzleとは
・プロジェクトはこうして始まった!
  Page 2
・SQLiteではできないこと
・MySQLそのものとの違いはどこにある?
  Page 3
・プロジェクトは完全にコミュニティベース
・いますぐDrizzleを試すには


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間