43
Mroonga Meetup Powered by Rabbit 2.1.2 Mroonga Meetup HAYASHI Kentaro クリアコード 2014/06/29

Mroonga Meetup 2014/06/29

  • Upload
    kenhys

  • View
    295

  • Download
    2

Embed Size (px)

DESCRIPTION

2014年6月29日に行われたMroonga Meetupで使用したスライドです。Mroongaを初めて触れる人向けに演習を通じて基本をおさえてもらうための資料です。

Citation preview

Page 1: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroonga Meetup

HAYASHI Kentaro クリアコード2014/06/29

Page 2: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

はじめに

開催の目的

自己紹介

Mroongaとは

Page 3: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

はじめに(2)

インストール

課題と演習

Any Questions?

片付け撤退

Page 4: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

開催の目的

「全文検索をしたい人の最初の一歩を踏みだしやすくしよう」

Page 5: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

自己紹介タイム

参加のきっかけ

Groonga族とのかかわり

Page 6: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroongaとは

Tritonnの後継Sennaを組み込んだプロダクト

Tritonnの制約を解消

Page 7: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Tritonn vs Mroonga(1)

TritonnはMySQLへのパッチ前提

Mroongaはプラグインとして導入できる

Page 8: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Tritonn vs Mroonga(2)

Tritonnはテーブルロックでスケールしない

Mroongaは参照ロックフリー検索/更新性能の向上

Page 9: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroongaとパッケージ

Debian

Ubuntu

CentOS

Fedora

Windows

Page 10: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroonga on Debian

MySQL 5.5系Debian 7.4 (wheezy)

Debian 8 (jessie)

Debian unstable (sid)

Page 11: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroonga on Ubuntu

PPA (Launchpad)でリリース

MySQL 5.5系Ubuntu 12.04 (Precise)

Ubuntu 13.10 (Saucy)

来月でサポート終了

Ubuntu 14.04 (Trusty)

Page 12: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

PPA on Launchpad

PPAでのインストール

sudo add-apt-repository -y universesudo add-apt-repository -y ppa:groonga/ppasudo apt-get updatesudo apt-get install -y -V mysql-server-mroonga

Page 13: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroonga on CentOS 5

CentOS 5以前はMySQLが古すぎたので、MySQL 5.6対応パッケージを提供

MySQL 5.5(SCL)対応パッケージに移行

Page 14: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroonga on CentOS 6

CentOS 6MySQL 5.1しか使えないというのは古い情報です!

MySQL 5.5対応(SCL)パッケージに移行

Page 15: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroonga on CentOS

CentOS 5やCentOS 6でMySQL 5.6wingリポジトリをお勧めしています

http://wing-repo.net/

Page 16: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroonga on Fedora

Fedora 20MySQL 5.5 & MariaDB 5.5対応

MariaDB 5.5対応がつらいのでやや古い

Fedora公式リポジトリでは未リリースMroonga含めてインストールしたいならGroongaリポジトリを登録する

Page 17: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroonga on Windows

従来zipのみ提供

ビルド協力者増加によりmsiも提供

Page 18: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroongaの動作モードの違い

ラッパーモードデータは他のストレージエンジンに格納

全文検索をMroongaでがんばる

トランザクションでロールバックすると不整合発生

チューニングはMySQLの範囲で

Page 19: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Mroongaの動作モードの違い(2)

ストレージモード全部Mroongaでがんばる

トランザクション何それ?

Page 20: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

ストレージモード

ENGINE=mroongaと覚えましょう

Page 21: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

ラッパーモード

コメントでエンジンを指定

ENGINE=mroonga COMMENT='engine "innodb"'

Page 22: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

パーサーの指定

コメントでパーサーを指定

Groongaの用語だとトークナイザー

FULLTEXT INDEX (content) COMMENT 'parser "TokenMecab"'

Page 23: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

ノーマライザーの指定

コメントでノーマライザーを指定

FULLTEXT INDEX (content) COMMENT 'normalizer "NormalizerAuto"'

Page 24: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

パーサー&ノーマライザーの指定

両方指定したいときは,で区切る

FULLTEXT INDEX (content) COMMENT 'parser "TokenMecab", normalizer "NormalizerAuto"'

Page 25: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

MATCH AGAINSTとBOOLEAN MODE

QUERY EXPANSION MODEMySQLにおまかせの類似文書検索

BOOLEAN MODE明示的に検索を制御

Page 26: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

UDF(ユーザ定義関数)

last_insert_grn_id

mroonga_snippet

mroonga_escape

mroonga_command

Page 27: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

last_insert_grn_id

最後に挿入したレコードのIDを返す関数

ストレージモード用

Page 28: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

mroonga_snippet

スニペットを返す関数

Page 29: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

mroonga_escape

クエリを適宜エスケープするための関数

複数のキーワードは別途がんばる必要あり

Page 30: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

mroonga_command

MroongaからGroongaの機能を直接叩くための関数

Page 31: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

実践してみよう

位置情報検索

エスケープ

重みづけして検索してみよう

http://packages.groonga.org/tmp/qiita-article.txt

Page 32: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

位置情報検索

⏳Qiitaの位置情報検索の記事を試してみよう

http://qiita.com/groonga/items/7abca5004d2ae386d388

Page 33: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

mroonga_escapeを使ってみよう

⏳Qiitaのmroonga_escapeの記事を試してみよう

http://qiita.com/groonga/items/0ae7f637525c7b5f2cb1

Page 34: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

重みづけして検索してみよう

⏳QiitaのWプラグマの記事を試してみよう

http://qiita.com/groonga/items/8bcd5f9647f62b96584f

Page 35: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Groonga vs Mroonga

既存資産があるならMroonga

mroonga_commandを活用

Page 36: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

大規模なデータを使いたい

Wikipedia

情報学研究データリポジトリ

Page 37: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

Wikipedia

ウィキペディア日本語版http://ja.wikipedia.org/wiki/Wikipedia:データベースダウンロード

Page 38: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

情報学研究データリポジトリ(1)

国立情報学研究所

http://www.nii.ac.jp/cscenter/idr/index.html

データセットをいくつか提供

Page 39: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

情報学研究データリポジトリ(2)

ニコニコデータセットニコニコ動画コメント等データ

ニコニコ大百科データ

Page 40: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

ニコニコ動画コメント等データ(1)

動画メタデータ2012年11月初旬までのデータ

IDなど個人を特定しないデータ

タイトル,説明文,タグ,投稿日時,再生数,コメント等

約12GBほど

Page 41: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

ニコニコ動画コメント等データ(2)

ニコニコ大百科データ2014年2月上旬までのデータ

約300GB

Page 42: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

感謝

WEICさん会場提供ありがとうございます!

Page 43: Mroonga Meetup 2014/06/29

Mroonga Meetup Powered by Rabbit 2.1.2

おわり

Any Questions?