Successfully reported this slideshow.

Introducing mroonga 20111129

2,588 views

Published on

Published in: Technology
  • Be the first to comment

Introducing mroonga 20111129

  1. 1. mroongaのご紹介 Kentoku SHIBA kentokushiba[at]gmail[dot]com
  2. 2. mroongaとは
  3. 3. mroongaとは?mroongaとは、groongaをMySQLのストレージエンジンとして利用できるようにしたもので、以下の特徴を持っています。・更新が混在しても、高速な全文検索が可能。・更新が混在しても、高速な位置情報検索が可能。・他のストレージエンジンに、全文検索機能を 追加することが可能。
  4. 4. mroongaとは? クライアント クライアント クライアント コネクションプール perser/optimizer/cache ...etc... ストレージエンジンAPI MyISAM InnoDB MEMORY Blackhole mroonga Spider MySQLサーバ
  5. 5. 更新が混在しても高速な全文検索が可能 mroongaは、MyISAMでの全文検索とは異なり、更新時、他の更新や参照をテーブルロックでブロックすることがなく、並列性の高い参照・更新を行うことが可能です。 この特性により、更新を即時参照(全文検索)する必要がある要件で特に力を発揮します。
  6. 6. 更新が混在しても高速な位置情報検索が可能 また、位置情報インデックスの更新性能が高い(MyISAM比較)特性も加わり、更新を即時参照(位置情報検索)する要件でも力を発揮します。 ただし、現在扱える位置情報は点のみですので、ご注意ください。
  7. 7. 他のストレージエンジンに全文検索機能を追加可能 mroongaは、ラッパーモードという他の任意のストレージエンジンと連携するための機能があります。 この機能を利用すると、全文インデックスの機能をmroongaが提供し、その他の部分は選択したストレージエンジンを利用するという役割分担が行われます。 こうすることで、こだわりのあるストレージエンジンを使い続けたり、groongaの制限(NULLの利用など)を回避したりすることができます。
  8. 8. mroongaのラッパーモード クライアント クライアント クライアント コネクションプール perser/optimizer/cache ...etc... ストレージエンジンAPI MyISAM InnoDB MEMORY Blackhole mroonga Spider MySQLサーバ ラッパーモードは、mroonga経由で 他のストレージエンジンを利用する
  9. 9. この1年の主な機能追加(2010/11/29 ~ 2011/11/29)
  10. 10. この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) など
  11. 11. auto_increment 対応auto_incrementが使えるようになりました。 ラッパーモードの場合は、選択したストレージエンジンのauto_incrementを使いますので、例えばInnoDBの場合は、innodb_autoinc_lock_modeが利用可能です。
  12. 12. ラッパーモード追加 他のストレージエンジンに、全文検索機能を追加することができるようになりました。 全文検索機能をgroongaが担当し、その他を選択したストレージエンジンが担当します。 利用には、create table文のテーブルのストレージエンジンにgroongaを指定し、テーブル用のコメントに以下のように記述します。 「COMMENT=’engine ”innodb”’」
  13. 13. マルチカラムインデックス対応マルチカラムインデックスが利用できるようになりました。 ただし、MySQL以外からもgroongaを利用するタンデム構成では、マルチカラムインデックスで利用しているカラムを更新するとインデックスとの整合性が取れなくなりますので、注意してください。
  14. 14. create/drop index 対応 create/drop indexが可能になりました。(これまでは、テーブルをdrop→createする必要がありました)
  15. 15. 位置情報検索index対応 indexを使った位置情報検索ができるようになり、大量のデータから、特定の範囲にある点を素早く検索することが可能になりました。現時点でサポートしているのは点のみです。
  16. 16. 全文検索用パーサーカスタマイズ対応 全文検索用のパーサーをカスタマイズできるようになりました。 利用には、全文インデックスのコメントに、以下のように記述します。 「COMMENT=’parser ”TokenMecab”’」 また、groonga_default_parserシステム変数で、デフォルトのパーサーを指定することも可能です。
  17. 17. rename/alter table 対応 rename/alter tableが可能になりました。(これまでは、テーブルをdrop→createする必要がありました) これで、ruby on railsでもバッチリです!
  18. 18. この1年の主な機能追加(Spiderなどのmroongaサポート機能)
  19. 19. この1年の主な機能追加・全文検索対応 (Spider-2.24 VP-0.13)・位置情報検索index対応 (Spider-2.27 VP-0.16) 他にも、冗長化機能、動的コピーなどもありますが、既に紹介済みということもあり、時間の関係でここでは割愛させていただきます。
  20. 20. 全文検索対応 Spiderストレージエンジン、VPストレージエンジンで全文検索が利用できるようになりました。 (Spider、VP経由でGroongaに対して、全文検索が実行できるようになりました) Spiderバンドル版MySQLでは、shardingしても全文検索機能が利用可能です。
  21. 21. 位置情報検索index対応 Spiderストレージエンジン、VPストレージエンジンで位置情報検索indexが利用できるようになりました。 (Spider、VP経由でmroongaに対して、indexを利用した位置情報検索が実行できるようになりました) Spiderバンドル版MySQLでは、shardingしてもindexを利用した位置情報検索が実行可能です。
  22. 22. 今後の予定
  23. 23. 今後の予定 MariaDBにバンドルされます。 (MariaDBとは、MySQLのforkでMySQLの生みの親であるMontyさんが作ったMonty Program ABという会社が開発を手掛けています) まだサポートされていない機能(後でお話させて頂きます)の開発も継続して行っていきますが、要望が高いものから優先して開発していきますので、よろしくお願いします。
  24. 24. まとめ
  25. 25. まとめ・mroongaは、更新と参照が混在する用途に強い (バッチ処理で一括更新とかしなくてもいいよ)・Spiderを組み合わせて、shardingすることで、 スケールアウトできる・ruby on railsでも大丈夫
  26. 26. Any Questions?Thank you for taking your time!! Kentoku SHIBA (kentokushiba[at]gmail[dot]com) http://wild-growth.blogspot.com/ http://spiderformysql.com

×