SlideShare a Scribd company logo

初心者向けMroonga・PGroonga情報

Mroonga・PGroongaをさわり始めた人向けの情報を紹介します。オススメの使い方、トランザクション、レプリケーションに関する情報です。

1 of 44
Download to read offline
Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0
Mroongaと
PGroonga初心者向け情報
須藤功平 クリアコード
MySQLとPostgreSQLと日本語全文検索
2016-06-09
Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0
Mroonga・PGroonga
Mroonga(むるんが)
MySQLに
高速日本語全文検索機能を追加する
プロダクト
PGroonga(ぴーじーるんが)
PostgreSQLに
高速日本語全文検索機能を追加する
プロダクト
Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0
使いどころ
Mroonga
速さが欲しい
トランザクションはいらない
PGroonga
機能が欲しい
トランザクションも欲しい
Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0
速い?
Mroonga と PGroonga - Groongaを使って MySQLとPostgreSQLで日本語全文検索 Powered by Rabbit 2.1.9
速さ:検索1
キーワード:テレビアニメ
(ヒット数:約2万3千件)
InnoDB ngram 3m2s
InnoDB MeCab 6m20s
Mroonga:1 0.11s
pg_bigm 4s
PGroonga:2 0.29s
詳細は前回の資料を参照
http://slide.rabbit-shocker.org/authors/kou/mysql-and-
postgresql-and-japanese-full-text-search/
Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0
Mroongaのモード
ストレージモード
ストレージとインデックスに
Groongaを使う
ラッパーモード
ストレージは
既存ストレージエンジンをラップ
全文検索・位置情報インデックスだけ
Groongaを使う
Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0
Mroongaのモード
MySQL
ストレージ
モード
ラッパー
モード
データ
インデックス
InnoDB
by Groongaプロジェクト
by Mroongaプロジェクト

Recommended

MroongaとPGroonga
MroongaとPGroongaMroongaとPGroonga
MroongaとPGroongaKouhei Sutou
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版Kouhei Sutou
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうkasaharatt
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)NTT DATA Technology & Innovation
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
pg_bigmと類似度検索
pg_bigmと類似度検索pg_bigmと類似度検索
pg_bigmと類似度検索Masahiko Sawada
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 

More Related Content

What's hot

MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説Masahiko Sawada
 
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)Takanori Sejima
 
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみpg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみMasahiko Sawada
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムKouhei Sutou
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)Hiromu Shioya
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザktateish
 
PGroonga – Make PostgreSQL fast full text search platform for all languages!
PGroonga – Make PostgreSQL fast full text search platform for all languages!PGroonga – Make PostgreSQL fast full text search platform for all languages!
PGroonga – Make PostgreSQL fast full text search platform for all languages!Kouhei Sutou
 
HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?NVIDIA Japan
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...NTT DATA Technology & Innovation
 
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 ) JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 ) Hironobu Isoda
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?takezoe
 

What's hot (20)

MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
 
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみpg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
 
golang profiling の基礎
golang profiling の基礎golang profiling の基礎
golang profiling の基礎
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
 
ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザ
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
PGroonga – Make PostgreSQL fast full text search platform for all languages!
PGroonga – Make PostgreSQL fast full text search platform for all languages!PGroonga – Make PostgreSQL fast full text search platform for all languages!
PGroonga – Make PostgreSQL fast full text search platform for all languages!
 
HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
 
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 ) JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 

Similar to 初心者向けMroonga・PGroonga情報

MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?Kouhei Sutou
 
Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Kouhei Sutou
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーKouhei Sutou
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!Kouhei Sutou
 
Droongaのはじめかた
DroongaのはじめかたDroongaのはじめかた
DroongaのはじめかたKouhei Sutou
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムKouhei Sutou
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Kouhei Sutou
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)Kosuke Kida
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016Takayuki Shimizukawa
 
Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29kenhys
 

Similar to 初心者向けMroonga・PGroonga情報 (16)

MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
 
Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 
PGroongaの実装
PGroongaの実装PGroongaの実装
PGroongaの実装
 
Droongaのはじめかた
DroongaのはじめかたDroongaのはじめかた
Droongaのはじめかた
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
 
Groonga族2015
Groonga族2015Groonga族2015
Groonga族2015
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
Groongaの特徴
Groongaの特徴Groongaの特徴
Groongaの特徴
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
Groonga族2016
Groonga族2016Groonga族2016
Groonga族2016
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
 
Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29
 

More from Kouhei Sutou

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowKouhei Sutou
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataKouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroongaKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!Kouhei Sutou
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionKouhei Sutou
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!Kouhei Sutou
 

More from Kouhei Sutou (20)

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extension
 
PGroonga & Zulip
PGroonga & ZulipPGroonga & Zulip
PGroonga & Zulip
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 

初心者向けMroonga・PGroonga情報

  • 1. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 Mroongaと PGroonga初心者向け情報 須藤功平 クリアコード MySQLとPostgreSQLと日本語全文検索 2016-06-09
  • 2. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 Mroonga・PGroonga Mroonga(むるんが) MySQLに 高速日本語全文検索機能を追加する プロダクト PGroonga(ぴーじーるんが) PostgreSQLに 高速日本語全文検索機能を追加する プロダクト
  • 3. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 使いどころ Mroonga 速さが欲しい トランザクションはいらない PGroonga 機能が欲しい トランザクションも欲しい
  • 4. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 速い? Mroonga と PGroonga - Groongaを使って MySQLとPostgreSQLで日本語全文検索 Powered by Rabbit 2.1.9 速さ:検索1 キーワード:テレビアニメ (ヒット数:約2万3千件) InnoDB ngram 3m2s InnoDB MeCab 6m20s Mroonga:1 0.11s pg_bigm 4s PGroonga:2 0.29s 詳細は前回の資料を参照 http://slide.rabbit-shocker.org/authors/kou/mysql-and- postgresql-and-japanese-full-text-search/
  • 5. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 Mroongaのモード ストレージモード ストレージとインデックスに Groongaを使う ラッパーモード ストレージは 既存ストレージエンジンをラップ 全文検索・位置情報インデックスだけ Groongaを使う
  • 6. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 Mroongaのモード MySQL ストレージ モード ラッパー モード データ インデックス InnoDB by Groongaプロジェクト by Mroongaプロジェクト
  • 7. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 ストレージモード 全文検索が速い それ以外の条件も速い 数値の比較とか 挿入も更新も削除も速い ソートも速い トランザクションはない
  • 8. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 ラッパーモード 全文検索が速い 全文検索以外はラップ対象の ストレージエンジンに依存 トランザクション ストレージのみ インデックスには効かない ロールバックしたらインデックスの再構築が必要
  • 9. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 使い分け できればストレージモード ムリならラッパーモード
  • 10. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 ストレージモードの条件 NULLがないこと あるならテーブルをわけるか ラッパーモード トランザクションを使わない 例:追記のみ(ログとか) 例:同時に更新されないようにする 例:スレーブにする(後述)
  • 11. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 オススメの使い方 テーブル定義 デフォルトで使う(いい感じになる) カスタマイズは慣れてからで十分 検索 IN BOOLEAN MODEを使う(いつもの検索) *D+プラグマを使う(デフォルトAND)
  • 12. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 テーブル定義 CREATE TABLE items ( title TEXT, FULLTEXT INDEX (title) -- ↑COMMENTでカスタマイズしない ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4;
  • 13. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 検索 SELECT * FROM items WHERE MATCH(title) -- ↓*D+プラグマ AGAINST('*D+ 激安 人気' IN BOOLEAN MODE); -- ↑IN BOOLEAN MODE
  • 14. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 トランザクション欲しい! レプリケーションで対応可能 構成 マスター:InnoDB スレーブ:Mroonga MySQLはマスターとスレーブで 違うストレージエンジンを使える!
  • 15. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 トランザクションと レプリケーション MySQL (マスター) InnoDB トラン ザクション MySQL (スレーブ) コミットされた順に 直列化されて スレーブに届く スレーブに トランザクションは 必要ない!
  • 16. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順1 マスターmy.cnf: [mysqld] log-bin=mysql-bin server-id=1 バイナリーログを有効にしてサーバーIDを指定
  • 17. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順2 スレーブmy.cnf: [mysqld] server-id=2 サーバーIDを指定
  • 18. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順3 マスター: CREATE USER 'repl'@'%' IDENTIFIED BY '1qazXSW@'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; レプリケーション用ユーザーを作成
  • 19. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順4 マスター: SHOW MASTER STATUSG -- File: mysql-bin.000001 -- Position: 855 -- Binlog_Do_DB: -- Binlog_Ignore_DB: -- Executed_Gtid_Set: バイナリーログの情報を確認
  • 20. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順5 スレーブ: CHANGE MASTER TO MASTER_HOST='192.168.0.9', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=855; START SLAVE USER='repl' PASSWORD='1qazXSW@'; レプリケーション開始
  • 21. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順6 マスター: CREATE TABLE items ( title text ) DEFAULT CHARSET=utf8mb4; マスターでテーブル作成
  • 22. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順7 スレーブ: ALTER TABLE items ENGINE=Mroonga, ADD FULLTEXT INDEX (title); スレーブだけMroongaに変更
  • 23. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順8 マスター: INSERT INTO items VALUES ('データベース管理システム'); マスターでデータ登録
  • 24. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション手順9 スレーブ: SELECT * FROM items WHERE MATCH(title) AGAINST('*D+ データ 管理' IN BOOLEAN MODE); -- +--------------------------------------+ -- | title | -- +--------------------------------------+ -- | データベース管理システム | -- +--------------------------------------+ スレーブで全文検索
  • 25. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 まとめ できればストレージモード テーブル定義:デフォルトでOK 検索:IN BOOLEAN MODEと*D+ トランザクション:スレーブ
  • 26. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 PGroongaのいいところ 検索条件を柔軟に指定可能 MySQL:拡張はAGAINST()内で頑張る PostgreSQL:演算子を追加可能 トランザクション対応 ロールバックも効く
  • 27. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 オススメの使い方 テーブル定義 主キーを指定する インデックス定義 デフォルトで使う(いい感じになる) 検索 search_path設定→@@演算子を使う
  • 28. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 テーブル定義 CREATE TABLE items ( id integer PRIMARY KEY, title text ); スコアー取得時に必要なので主キーを指定
  • 29. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 インデックス定義 CREATE INDEX pgroonga_items_index ON items USING pgroonga (id, title); 主キーをインデックス対象にする
  • 30. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 search_pathを設定 -- 現在のセッションのみ有効 SET search_path TO "$user",public,pgroonga,pg_catalog; -- user1ユーザーのみ有効 ALTER ROLE user1 SET search_path TO "$user",public,pgroonga,pg_catalog; -- db1データベースでは永続的に有効 ALTER DATABASE db1 SET search_path TO "$user",public,pgroonga,pg_catalog; pg_catalogの前にpgroongaを入れる
  • 31. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 なぜ設定する必要があるか PostgreSQLに@@があるから 組み込みの@@より PGroongaの@@を優先したい 優先しないと インデックススキャンと シーケンシャルスキャンで 結果が異なる
  • 32. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 @@演算子で検索 SELECT *, pgroonga.score(items) AS score FROM items WHERE title @@ '激安 人気' ORDER BY score DESC;
  • 33. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 独自演算子がうれしい例 入力補完https://github.com/pgroonga/pgroonga/tree/master/ examples/completion
  • 34. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 テーブル作成 CREATE TABLE dictionary ( term text, readings text[], -- 配列 english text );
  • 35. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 データ INSERT INTO dictionary VALUES ('・', ARRAY['ナカグロ', 'ナカポチ'], '(n) middle dot ...'), -- (...), ('踵', ARRAY['カカト', 'キビス', 'クビス'], '(n) (uk) heel ...');
  • 36. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 インデックス定義 CREATE INDEX pgroonga_index ON dictionary USING pgroonga ( -- ↓前方一致・前方一致RK検索用 term pgroonga.text_term_search_ops_v2, -- ↓配列に対する前方一致・前方一致RK検索用 readings pgroonga.text_array_term_search_ops_v2);
  • 37. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 検索:独自演算子+OR SELECT term, readings, english FROM dictionary WHERE term &^ 'nak' OR -- ↑前方一致検索 readings &^~> 'nak' -- ↑前方一致RK検索 ORDER BY term LIMIT 10;
  • 38. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 結果例:nak 前方一致RK検索でヒット term | readings | english --------------+----------------------+------------------- ・ | {ナカグロ,ナカポチ} | (n) middle dot ... NaK | {ナック} | (n) NaK (sodiu... なくても良い | {ナクテモヨイ | (exp) (1) (uk) ... ... | ... | ... (10 rows)
  • 39. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 結果例:なか 前方一致RK検索でヒット term | readings | english --------------+----------------------+------------------- ・ | {ナカグロ,ナカポチ} | (n) middle dot ... 泣かされる | {ナカサレル} | (v1,vi) (1) to ... 泣かせる | {ナカセル} | (v1,vt) (1) to ... ... | ... | ... (10 rows)
  • 40. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 結果例:中 前方一致RK検索でヒット term | readings | english --------------+----------------------+------------------- 中 | {ウチ,ジュウ,チュウ} | (n,adj-no) (1) ... 中々 | {ナカナカ} | (adv,adj-na) .. 中2 | {チュウニ} | (n) second-year ... | ... | ... (10 rows)
  • 41. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 レプリケーション PostgreSQL標準機能:× プラグインはWALを使えない pglogical:○ 詳細:http://www.clear-code.com/blog/2016/3/22.html PostgreSQL 9.6:たぶん○ プラグインでもWALを使える 正式リリースまでに対応したい
  • 42. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 まとめ トランザクション対応 テーブル定義:主キーを指定 インデックス定義:デフォルト 検索:search_pathと@@ レプリケーション:pglogical
  • 43. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 相談場所 メーリングリスト groonga-dev チャット https://gitter.im/groonga/ja Twitter:@groonga 勉強会
  • 44. Mroonga と PGroonga - 初心者向け情報 Powered by Rabbit 2.2.0 勉強会 「Groongaで学ぶ全文検索」 全文検索について学ぶ会 内容は参加者が知りたいこと ほぼ隔週金曜夜開催 次回は6月17日 https://groonga.doorkeeper.jp/events/45556