26
mroongaのご紹介 Kentoku SHIBA kentokushiba[at]gmail[dot]com

Introducing mroonga 20111129

  • Upload
    kentoku

  • View
    2.028

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Introducing mroonga 20111129

mroongaのご紹介

Kentoku SHIBA

kentokushiba[at]gmail[dot]com

Page 2: Introducing mroonga 20111129

mroongaとは

Page 3: Introducing mroonga 20111129

mroongaとは?

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

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

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

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

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

追加することが可能。

Page 4: Introducing mroonga 20111129

mroongaとは?

MySQLサーバ

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

コネクションプール

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

Spider

ストレージエンジンAPI

InnoDB MyISAM

クライアント

MEMORY Blackhole mroonga

Page 5: Introducing mroonga 20111129

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

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

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

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

行うことが可能です。

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

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

Page 6: Introducing mroonga 20111129

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

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

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

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

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

ご注意ください。

Page 7: Introducing mroonga 20111129

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

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

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

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

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

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

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

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

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

Page 8: Introducing mroonga 20111129

mroongaのラッパーモード

MySQLサーバ

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

コネクションプール

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

Spider

ストレージエンジンAPI

InnoDB MyISAM

クライアント

MEMORY Blackhole mroonga

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

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

Page 9: Introducing mroonga 20111129

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

Page 10: Introducing mroonga 20111129

この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)

など

Page 11: Introducing mroonga 20111129

auto_increment 対応

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

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

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

innodb_autoinc_lock_modeが利用可能です。

Page 12: Introducing mroonga 20111129

ラッパーモード追加

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

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

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

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

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

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

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

「COMMENT=’engine ”innodb”’」

Page 13: Introducing mroonga 20111129

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

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

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

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

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

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

Page 14: Introducing mroonga 20111129

create/drop index 対応

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

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

Page 15: Introducing mroonga 20111129

位置情報検索index対応

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

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

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

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

Page 16: Introducing mroonga 20111129

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

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

なりました。

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

記述します。

「COMMENT=’parser ”TokenMecab”’」

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

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

Page 17: Introducing mroonga 20111129

rename/alter table 対応

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

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

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

Page 18: Introducing mroonga 20111129

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

Page 19: Introducing mroonga 20111129

この1年の主な機能追加

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

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

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

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

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

Page 20: Introducing mroonga 20111129

全文検索対応

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

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

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

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

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

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

Page 21: Introducing mroonga 20111129

位置情報検索index対応

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

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

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

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

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

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

Page 22: Introducing mroonga 20111129

今後の予定

Page 23: Introducing mroonga 20111129

今後の予定

MariaDBにバンドルされます。

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

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

開発を手掛けています)

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

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

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

Page 24: Introducing mroonga 20111129

まとめ

Page 25: Introducing mroonga 20111129

まとめ

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

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

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

スケールアウトできる

・ruby on railsでも大丈夫

Page 26: Introducing mroonga 20111129

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

http://spiderformysql.com

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

Any Questions?

Thank you for taking

your time!!