1. Mroongaの特徴#
1.1. Mroongaとは#
Mroongaは全文検索エンジンであるGroongaをベースとしたMySQLのストレージエンジンです。
MySQLではver5.1からPluggable Storage Engineインタフェースが採用され、以前よりも柔軟に独自のストレージエンジンを利用できるようになりました。そこでGroongaにストレージエンジンインタフェースを実装し、MySQL経由でもGroongaを利用できるようにしました。
Mroongaを経由することでGroongaをSQLコマンドでも利用することができるようになります。
1.2. Tritonnの後継#
MySQLで日本語全文検索を実現するための方法として、MySQLにGroongaの前身である全文検索ライブラリSennaを組み込んだプロダクトをTritonnプロジェクトから開発・リリースされて来ました。Mroongaはその後継プロダクトとなります。
1.3. MySQLのプラグインとして動作#
TritonnではMySQLサーバのソースコードを直接修正していましたので、使用するためには利用者がソースから自分でビルドするか、あるいはTritonnプロジェクトが配布するバイナリを使う必要がありました(MySQL本家が配布する公式バイナリを利用できませんでした)。
一方、MroongaはPluggable Storage Engineインタフェースを利用した独立したプログラム(共有ライブラリ)であるため、MySQLの公式バイナリに手を加えずにプラグインとして動的にロードして利用することが可能となっています。これによりTritonnよりもさらに手軽に利用できるようになりました。
1.4. 更新性能の向上#
Sennaと比較するとGroongaではインデックス追加/更新時のスループットが大幅に改善されています。
Mroongaでもこの更新性能の向上の恩恵を受けています。
1.5. 検索性能の向上#
TritonnではMyISAMストレージエンジンを利用していたため、データ更新(インデックス更新)が発生するとテーブル全体に排他ロックがかかり、検索処理が阻害される問題がありました。
Mroongaではこの問題がなくなり(参照ロックフリー)、特にデータ更新が多いケースでの検索性能が向上しています。
1.6. 位置情報検索のサポート#
Groongaには全文検索機能だけではなく、インデックスを利用した高速な位置情報検索機能があります。また、MySQLにも位置情報検索のための記法があります。Mroongaでは、Groongaの位置情報検索機能を使ってMySQLの位置情報の記法で書かれたSQLを実行するため、高速に位置情報検索を行うことができます。
1.8. 他のストレージエンジンとの連携#
Mroongaには2つの動作モードがあります。
1つが「ストレージモード」で、データストアも検索機能もすべてGroongaを使うモードです。これがデフォルトのモードです。上述の参照ロックフリーなGroongaの性能特性をフルに活かした高速なデータ更新・全文検索・位置情報検索が特長です。一方、トランザクションなどの機能は提供されません。
もう1つが「ラッパーモード」で、MyISAMやInnoDBといった他のストレージエンジンに 全文検索機能だけ を追加するモードです。このモードではトランザクションなど他のストレージエンジンがサポートしている機能に加えてGroongaの高速な全文検索機能を利用することができます。一方、Groongaの参照ロックフリーな特性は活かすことができません。また、更新処理は他のストレージエンジンがボトルネックになることが多いでしょう。
1.9. サポートしているプラットフォーム#
Mroongaは主要なプラットフォームの多くをサポートしています。
サポートしているプラットフォームは インストール を参照してください。