Introducing mroonga 20111129

Preview:

DESCRIPTION

 

Citation preview

mroongaのご紹介

Kentoku SHIBA

kentokushiba[at]gmail[dot]com

mroongaとは

mroongaとは?

mroongaとは、groongaをMySQLのストレージエンジンとして

利用できるようにしたもので、以下の特徴を持っています。

・更新が混在しても、高速な全文検索が可能。

・更新が混在しても、高速な位置情報検索が可能。

・他のストレージエンジンに、全文検索機能を

追加することが可能。

mroongaとは?

MySQLサーバ

クライアント クライアント

コネクションプール

perser/optimizer/cache ...etc...

Spider

ストレージエンジンAPI

InnoDB MyISAM

クライアント

MEMORY Blackhole mroonga

更新が混在しても高速な全文検索が可能

mroongaは、MyISAMでの全文検索とは異なり、

更新時、他の更新や参照をテーブルロックで

ブロックすることがなく、並列性の高い参照・更新を

行うことが可能です。

この特性により、更新を即時参照(全文検索)する

必要がある要件で特に力を発揮します。

更新が混在しても高速な位置情報検索が可能

また、位置情報インデックスの更新性能が高い

(MyISAM比較)特性も加わり、更新を即時参照

(位置情報検索)する要件でも力を発揮します。

ただし、現在扱える位置情報は点のみですので、

ご注意ください。

他のストレージエンジンに全文検索機能を追加可能

mroongaは、ラッパーモードという他の任意の

ストレージエンジンと連携するための機能があります。

この機能を利用すると、全文インデックスの機能を

mroongaが提供し、その他の部分は選択したストレージ

エンジンを利用するという役割分担が行われます。

こうすることで、こだわりのあるストレージエンジンを

使い続けたり、groongaの制限(NULLの利用など)を

回避したりすることができます。

mroongaのラッパーモード

MySQLサーバ

クライアント クライアント

コネクションプール

perser/optimizer/cache ...etc...

Spider

ストレージエンジンAPI

InnoDB MyISAM

クライアント

MEMORY Blackhole mroonga

ラッパーモードは、mroonga経由で

他のストレージエンジンを利用する

この1年の主な機能追加 (2010/11/29 ~ 2011/11/29)

この1年の主な機能追加

・auto_increment 対応 (0.6)

・ラッパーモード追加 (0.7)

・マルチカラムインデックス対応 (0.8)

・create/drop index 対応 (1.0/1.1)

・位置情報検索index対応 (1.0)

・全文検索用パーサーカスタマイズ対応 (1.0)

・rename/alter table対応 (1.1)

など

auto_increment 対応

auto_incrementが使えるようになりました。

ラッパーモードの場合は、選択したストレージエンジンの

auto_incrementを使いますので、例えばInnoDBの場合は、

innodb_autoinc_lock_modeが利用可能です。

ラッパーモード追加

他のストレージエンジンに、全文検索機能を追加する

ことができるようになりました。

全文検索機能をgroongaが担当し、その他を選択した

ストレージエンジンが担当します。

利用には、create table文のテーブルのストレージ

エンジンにgroongaを指定し、テーブル用のコメントに

以下のように記述します。

「COMMENT=’engine ”innodb”’」

マルチカラムインデックス対応

マルチカラムインデックスが利用できるようになりました。

ただし、MySQL以外からもgroongaを利用するタンデム

構成では、マルチカラムインデックスで利用している

カラムを更新するとインデックスとの整合性が取れなく

なりますので、注意してください。

create/drop index 対応

create/drop indexが可能になりました。(これまでは、

テーブルをdrop→createする必要がありました)

位置情報検索index対応

indexを使った位置情報検索ができるようになり、

大量のデータから、特定の範囲にある点を素早く検索する

ことが可能になりました。

現時点でサポートしているのは点のみです。

全文検索用パーサーカスタマイズ対応

全文検索用のパーサーをカスタマイズできるように

なりました。

利用には、全文インデックスのコメントに、以下のように

記述します。

「COMMENT=’parser ”TokenMecab”’」

また、groonga_default_parserシステム変数で、

デフォルトのパーサーを指定することも可能です。

rename/alter table 対応

rename/alter tableが可能になりました。(これまでは、

テーブルをdrop→createする必要がありました)

これで、ruby on railsでもバッチリです!

この1年の主な機能追加 (Spiderなどのmroongaサポート機能)

この1年の主な機能追加

・全文検索対応 (Spider-2.24 VP-0.13)

・位置情報検索index対応 (Spider-2.27 VP-0.16)

他にも、冗長化機能、動的コピーなどもありますが、

既に紹介済みということもあり、時間の関係で

ここでは割愛させていただきます。

全文検索対応

Spiderストレージエンジン、VPストレージエンジンで

全文検索が利用できるようになりました。

(Spider、VP経由でGroongaに対して、全文検索が

実行できるようになりました)

Spiderバンドル版MySQLでは、shardingしても

全文検索機能が利用可能です。

位置情報検索index対応

Spiderストレージエンジン、VPストレージエンジンで

位置情報検索indexが利用できるようになりました。

(Spider、VP経由でmroongaに対して、indexを利用した

位置情報検索が実行できるようになりました)

Spiderバンドル版MySQLでは、shardingしても

indexを利用した位置情報検索が実行可能です。

今後の予定

今後の予定

MariaDBにバンドルされます。

(MariaDBとは、MySQLのforkでMySQLの生みの親である

Montyさんが作ったMonty Program ABという会社が

開発を手掛けています)

まだサポートされていない機能(後でお話させて頂きます)

の開発も継続して行っていきますが、要望が高いものから

優先して開発していきますので、よろしくお願いします。

まとめ

まとめ

・mroongaは、更新と参照が混在する用途に強い

(バッチ処理で一括更新とかしなくてもいいよ)

・Spiderを組み合わせて、shardingすることで、

スケールアウトできる

・ruby on railsでも大丈夫

http://wild-growth.blogspot.com/

http://spiderformysql.com

Kentoku SHIBA (kentokushiba[at]gmail[dot]com)

Any Questions?

Thank you for taking

your time!!