ククログ

株式会社クリアコード > ククログ > *roonga族リリース

*roonga族リリース

肉の日なのでgroongaとその関連プロジェクトがリリースされました。

このうち、mroongaの変更点が大きめなので、mroonga 0.7の変更点について紹介します。

mroongaとは

mroonga1はMySQLにgroongaの全文検索機能を追加するストレージエンジンです。ストレージエンジンというのはMySQLのデータストア機能・検索機能を担当するモジュールのことです。ここがプラグインとして後から追加できる仕組みになっています。groongaをバックエンドとしてストレージエンジンを実装しているのがmroongaです2

mroongaを使うと嬉しいこと

mroongaを使うと使い慣れたRDBやSQLを使って全文検索機能が得意なアプリケーションを開発できるようになります。既存の資産を活かしながら本格的な全文検索機能も使えることが嬉しいことですね。

現在は、RDBとSolrを組み合わせて全文検索機能付きのアプリケーションを実現していることも多いかもしれませんが、そうすると管理対象が増えたりデータが分散したりして管理コストが上がってしまいます3

mroongaはこれまでと同様にMySQLサーバーを管理するだけでよいので、新しく管理対象が増えたりしません。

これまでのmroonga: ストレージモード

mroonga 0.6までは、データストア機能も通常の検索機能も全文検索機能も提供するひとり立ちしたストレージエンジンでした。このように動くモードをストレージモードと呼びます。図にすると以下のようになります。MyISAMやInnoDBと同じように扱える1つのストレージエンジンとしてmroongaが存在しています。

ストレージモード

このモードではカラムストアであるgroongaの特性を活かすことができるため、 不必要なデータアクセスを避けた高速な動作ができるというメリットがあります。しかし、データストアの信頼性という点では、実績のあるInnoDBなどには及ばないというデメリットがあります。

このデメリットを解決するために追加されたのがラッパーモードです4

0.7で追加されたモード: ラッパーモード

mroonga 0.7では新しくラッパーモードという動作モードを追加しました。このモードでは、他のストレージエンジンと連携して動作します。mroongaは全文検索機能だけ実現し、データストア機能や通常の検索機能は他のストレージエンジンに任せます。図にすると以下のようになります。MySQLからはmroongaしか見えませんが、mroongaの後ろにMyISAMやInnoDBなど既存のストレージエンジンが存在します。mroongaはMySQLと既存のストレージエンジンの間に入り、全文検索機能関連のみ処理し、それ以外は既存のストレージエンジンに処理してもらいます。

ラッパーモード

このモードでは任意の既存のストレージエンジンにgroongaの高性能な全文検索機能を追加できるというメリットがあります。例えば、信頼性のあるInnoDBに全文検索機能を追加して、便利で高速で安心なRDBを実現できます。

まとめ

今月も*roonga族がリリースされました。今回は特にmroongaについて紹介しました。

ラッパーモードの使い方についてはmroongaのラッパーモードのドキュメントを参照してください。なお、同じページに現時点での注意点も説明してあるので、そちらも確認してください。

  1. 正式名称は「groongaストレージエンジン」で、「mroonga」は開発コードネームという位置付けだったのですが、最近は「mroongaの方がいいやすいよね?」、「正式名称もmroongaでいいんじゃない?」みたいな流れもでてきています。1.0がリリースされるまでにはどうなるかが決まるはずです。

  2. groongaのSQLインターフェイスと考えてもよい。

  3. Sphinxという選択肢もありますが、構成上それはそれで管理コストが上がってしまいます。

  4. ストレージモードがなくなるわけではありません。