SlideShare a Scribd company logo
Turbo Selector (grn_ts)
の紹介
未来検索ブラジル
矢田 晋
@s5yata
Turbo Selector
(grn_ts - ぐるんたす)
の概要
2015年11月29日(日) Groonga Meatup 2015
Grnxx の構想(旧プロジェクト)
次期 Groonga として開発
モダンな設計
オンメモリ ☒ 永続化サポートなし
シングルスレッド ☒ Groonga 非互換
列指向クエリエンジン ☑ 超高速
→ かなり高速化できるものの
Groonga の代替としては使えない
3
2015年11月29日(日) Groonga Meatup 2015
grn_ts の構想(現プロジェクト)
Groonga の検索用モジュールとして開発
モダンな設計
オンメモリ ☒ 永続化サポートなし
シングルスレッド ☒ Groonga 非互換
列指向クエリエンジン ☑ 超高速
→ Groonga の使い勝手はそのままに
検索を高速化する
4
2015年11月29日(日) Groonga Meatup 2015
grn_ts の位置づけ
5
Groonga
コマンド
MySQL
MariaDB
Mroonga
Ruby
ユーザ
Rroonga
etc.
データストアキー管理 転置索引
検索用モジュール(grn_ts)
今までどおり
2015年11月29日(日) Groonga Meatup 2015
grn_ts の目標
インタフェースはそのまま
→ アプリケーションは変更しなくて大丈夫
データストアや索引もそのまま
→ DB は作り直さなくて大丈夫
検索用モジュールを使い分け
→ 一部の検索クエリは高速化
6
現状における
できること・できないこと
2015年11月29日(日) Groonga Meatup 2015
grn_ts の使い方
ビルド時にマクロ GRN_WITH_TS を定義
$ ./configure CFLAGS="-g -O2 -DGRN_WITH_TS"
$ make
フィルタの先頭に ‘?’ を挿入
$ groonga tmp/db
> select Items --filter ‘?X < 50 && Y < 50’ …
[...]
http://groonga.org/ja/blog/2015/10/22/grn_ts.html (参考)
8
デフォルトで有効になっていま
す
2015年11月29日(日) Groonga Meatup 2015
grn_ts でできること
使えるコマンド
select
使える引数と例
--filter ‘?X && Y < 50 || Z > 50’
--scorer ‘_score = X + Y * Z’
--sortby ‘X, -Y, Z’
--output_columns ‘_id, _score, X, Y, Z’
--offset 10
--limit 10
9
2015年11月29日(日) Groonga Meatup 2015
grn_ts でできないこと
使えないコマンド・引数
できること以外
引数の制限事項
filter 一部の演算のみサポート
索引の使用は未サポート
scorer 一部の演算のみサポート
sortby 一部の演算のみサポート
output_columns ベクタのベクタは未サポート
offset 負の値は未サポート
10
2015年11月29日(日) Groonga Meatup 2015
grn_ts でできること(裏技)
カラム同士の比較
--filter ‘?X < Y && Y < Z’
演算結果による整列
--sortby ‘X + Y, -(Z + Y)’
※ 先頭の ‘-’ は降順にする記号扱いなので注意
演算結果の出力
--output_columns ‘_id, X + Y, Z / 100.0’
※ 仕様として決まっているわけではありません
実装の都合や皆様のご意見により変わる可能性があります
11
2015年11月29日(日) Groonga Meatup 2015
grn_ts 開発者からのお願い
ご意見・ご質問・ご感想などをお待ちしております
○○ できるようにして欲しい
○○ みたいな使い方で速くなる?
○○ みたいな情報が欲しい
○○ には使えそう・使えなさそう
○○ が期待する結果にならない
Twitter: @groonga, @s5yata
GitHub: https://github.com/groonga/groonga
ML: groonga-dev@lists.osdn.me
12
どのくらい速くなるのか
2015年11月29日(日) Groonga Meatup 2015
実験設定
実験環境
CPU: Core i7 3720QM, RAM: 4GB
Ubuntu 15.10 on VMWare Fusion 8.0.2
実験データ
1,000 万行
データは擬似乱数により生成
Bool: false or true
Int64: [0, 100)
Text: 長さ [4, 8] の大文字アルファベット列
14
2015年11月29日(日) Groonga Meatup 2015
実験結果(--filter, Bool)
キャッシュを無効にしてベストタイムを計測
select Table --filter ‘???’ --limit 0
15
??? 従来[秒] grn_ts[秒]
X 1.839 0.162
X && Y 2.608 0.214
X && Y && Z 3.303 0.240
X || Y 2.637 0.240
X || Y || Z 3.523 0.298
2015年11月29日(日) Groonga Meatup 2015
実験結果(--filter, Int64)
キャッシュを無効にしてベストタイムを計測
select Table --filter ‘???’ --limit 0
16
??? 従来[秒] grn_ts[秒]
X < 1 1.777 0.134
X < 10 1.919 0.141
X < 99 2.300 0.132
X + Y + Z < 150 3.863 0.283
X < Y N/A 0.207
2015年11月29日(日) Groonga Meatup 2015
実験結果(--filter, Text)
キャッシュを無効にしてベストタイムを計測
select Table --filter ‘???’ --limit 0
17
??? 従来[秒] grn_ts[秒]
X < “B” 2.066 0.529
X < “N” 2.433 0.554
X < “Z” 2.579 0.519
X < “N” && Y < “N” 3.544 0.805
X < Y && Y < Z N/A 1.506
2015年11月29日(日) Groonga Meatup 2015
実験結果(--sortby)
キャッシュを無効にしてベストタイムを計測
select Table --sortby ‘???’ --limit 1
18
??? 従来[秒] grn_ts[秒]
IntX 0.560 0.298
IntX, IntY 0.665 0.304
IntX + IntY N/A 0.383
TextX 0.652 0.795
IntX, TextX 0.691 0.256
今後の予定
2015年11月29日(日) Groonga Meatup 2015
grn_ts の今後
現状
フィルタ・整列をサポート
整列は要改善
今後の予定
整列の効率化
索引のサポート
全文検索のサポート
ドリルダウンのサポート
※ ご意見・ご質問・ご感想などをお待ちしております
20

More Related Content

What's hot

pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
 
小ゼミ進捗 0601
小ゼミ進捗 0601小ゼミ進捗 0601
小ゼミ進捗 0601
robo_lab
 
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ  .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会わしわし的おすすめ  .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
Yukinori KITADAI
 
TensorFlow XLA とハードウェア
TensorFlow XLA とハードウェアTensorFlow XLA とハードウェア
TensorFlow XLA とハードウェア
Mr. Vengineer
 
自作GPUへの道
自作GPUへの道自作GPUへの道
自作GPUへの道
Daisuke Kamikawa
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
智啓 出川
 
Gitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stashGitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stashKazuki Sakai
 
Lispmeetup #45 Common Lispで音声合成
Lispmeetup #45 Common Lispで音声合成Lispmeetup #45 Common Lispで音声合成
Lispmeetup #45 Common Lispで音声合成
Satoshi imai
 
Lisp meetup #29 cl-online-learningの紹介
Lisp meetup #29 cl-online-learningの紹介Lisp meetup #29 cl-online-learningの紹介
Lisp meetup #29 cl-online-learningの紹介
Satoshi imai
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみた
Yosuke Onoue
 
LKFT作ってみた
LKFT作ってみたLKFT作ってみた
LKFT作ってみた
sirrow
 
最近のRust関連の活動
最近のRust関連の活動最近のRust関連の活動
最近のRust関連の活動
Hattori Hideo
 
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
Preferred Networks
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
Deep Learning JP
 
Shib: WebUI tool provides crossover of Hive and MPP
Shib: WebUI tool provides crossover of Hive and MPPShib: WebUI tool provides crossover of Hive and MPP
Shib: WebUI tool provides crossover of Hive and MPPSATOSHI TAGOMORI
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
智啓 出川
 
Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミングRustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
yoshrc
 
オセロの終盤ソルバーを100倍以上高速化した話
オセロの終盤ソルバーを100倍以上高速化した話オセロの終盤ソルバーを100倍以上高速化した話
オセロの終盤ソルバーを100倍以上高速化した話
京大 マイコンクラブ
 

What's hot (20)

pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
 
小ゼミ進捗 0601
小ゼミ進捗 0601小ゼミ進捗 0601
小ゼミ進捗 0601
 
Sc13 gpu
Sc13 gpuSc13 gpu
Sc13 gpu
 
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ  .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会わしわし的おすすめ  .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
 
TensorFlow XLA とハードウェア
TensorFlow XLA とハードウェアTensorFlow XLA とハードウェア
TensorFlow XLA とハードウェア
 
自作GPUへの道
自作GPUへの道自作GPUへの道
自作GPUへの道
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
 
Gitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stashGitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stash
 
Lispmeetup #45 Common Lispで音声合成
Lispmeetup #45 Common Lispで音声合成Lispmeetup #45 Common Lispで音声合成
Lispmeetup #45 Common Lispで音声合成
 
Lisp meetup #29 cl-online-learningの紹介
Lisp meetup #29 cl-online-learningの紹介Lisp meetup #29 cl-online-learningの紹介
Lisp meetup #29 cl-online-learningの紹介
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみた
 
LKFT作ってみた
LKFT作ってみたLKFT作ってみた
LKFT作ってみた
 
最近のRust関連の活動
最近のRust関連の活動最近のRust関連の活動
最近のRust関連の活動
 
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
Shib: WebUI tool provides crossover of Hive and MPP
Shib: WebUI tool provides crossover of Hive and MPPShib: WebUI tool provides crossover of Hive and MPP
Shib: WebUI tool provides crossover of Hive and MPP
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
 
Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミングRustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
 
オセロの終盤ソルバーを100倍以上高速化した話
オセロの終盤ソルバーを100倍以上高速化した話オセロの終盤ソルバーを100倍以上高速化した話
オセロの終盤ソルバーを100倍以上高速化した話
 

Similar to grn_ts の紹介 - Groonga Meatup 2015

[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
Insight Technology, Inc.
 
xFlow分析の基礎と実例
xFlow分析の基礎と実例xFlow分析の基礎と実例
xFlow分析の基礎と実例
Hirotaka Tajima
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
 
Introduction to argo
Introduction to argoIntroduction to argo
Introduction to argo
Shunya Ueta
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
 
みんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extrasみんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extras
Takuji Tahara
 
xFlow tutorial
xFlow tutorialxFlow tutorial
xFlow tutorial
Hirotaka Tajima
 
CatBoost on GPU のひみつ
CatBoost on GPU のひみつCatBoost on GPU のひみつ
CatBoost on GPU のひみつ
Takuji Tahara
 
サーバ性能改善事例
サーバ性能改善事例サーバ性能改善事例
サーバ性能改善事例
KLab Inc. / Tech
 
Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3
Uehara Junji
 
20161210_第8回jenkins勉強会
20161210_第8回jenkins勉強会20161210_第8回jenkins勉強会
20161210_第8回jenkins勉強会
Kyohei Oki
 
ABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組みABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組み
Yusuke Goto
 
AWS Webinar 20201224
AWS Webinar 20201224AWS Webinar 20201224
AWS Webinar 20201224
陽平 山口
 
Groonga改良型Ngramトークナイザー
Groonga改良型NgramトークナイザーGroonga改良型Ngramトークナイザー
Groonga改良型Ngramトークナイザー
Naoya Murakami
 
78tch
78tch78tch
78tch
78tch
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋Takuya Ueda
 
momentum紹介資料【中文】
momentum紹介資料【中文】momentum紹介資料【中文】
momentum紹介資料【中文】
Jim Zhang
 
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
智啓 出川
 
Groonga族2015
Groonga族2015Groonga族2015
Groonga族2015
Kouhei Sutou
 
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjpChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
K Kinzal
 

Similar to grn_ts の紹介 - Groonga Meatup 2015 (20)

[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
 
xFlow分析の基礎と実例
xFlow分析の基礎と実例xFlow分析の基礎と実例
xFlow分析の基礎と実例
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
Introduction to argo
Introduction to argoIntroduction to argo
Introduction to argo
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
 
みんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extrasみんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extras
 
xFlow tutorial
xFlow tutorialxFlow tutorial
xFlow tutorial
 
CatBoost on GPU のひみつ
CatBoost on GPU のひみつCatBoost on GPU のひみつ
CatBoost on GPU のひみつ
 
サーバ性能改善事例
サーバ性能改善事例サーバ性能改善事例
サーバ性能改善事例
 
Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3
 
20161210_第8回jenkins勉強会
20161210_第8回jenkins勉強会20161210_第8回jenkins勉強会
20161210_第8回jenkins勉強会
 
ABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組みABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組み
 
AWS Webinar 20201224
AWS Webinar 20201224AWS Webinar 20201224
AWS Webinar 20201224
 
Groonga改良型Ngramトークナイザー
Groonga改良型NgramトークナイザーGroonga改良型Ngramトークナイザー
Groonga改良型Ngramトークナイザー
 
78tch
78tch78tch
78tch
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
 
momentum紹介資料【中文】
momentum紹介資料【中文】momentum紹介資料【中文】
momentum紹介資料【中文】
 
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
 
Groonga族2015
Groonga族2015Groonga族2015
Groonga族2015
 
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjpChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
 

Recently uploaded

NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
ooishi1
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
fisuda
 

Recently uploaded (6)

NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 

grn_ts の紹介 - Groonga Meatup 2015

  • 2. Turbo Selector (grn_ts - ぐるんたす) の概要
  • 3. 2015年11月29日(日) Groonga Meatup 2015 Grnxx の構想(旧プロジェクト) 次期 Groonga として開発 モダンな設計 オンメモリ ☒ 永続化サポートなし シングルスレッド ☒ Groonga 非互換 列指向クエリエンジン ☑ 超高速 → かなり高速化できるものの Groonga の代替としては使えない 3
  • 4. 2015年11月29日(日) Groonga Meatup 2015 grn_ts の構想(現プロジェクト) Groonga の検索用モジュールとして開発 モダンな設計 オンメモリ ☒ 永続化サポートなし シングルスレッド ☒ Groonga 非互換 列指向クエリエンジン ☑ 超高速 → Groonga の使い勝手はそのままに 検索を高速化する 4
  • 5. 2015年11月29日(日) Groonga Meatup 2015 grn_ts の位置づけ 5 Groonga コマンド MySQL MariaDB Mroonga Ruby ユーザ Rroonga etc. データストアキー管理 転置索引 検索用モジュール(grn_ts) 今までどおり
  • 6. 2015年11月29日(日) Groonga Meatup 2015 grn_ts の目標 インタフェースはそのまま → アプリケーションは変更しなくて大丈夫 データストアや索引もそのまま → DB は作り直さなくて大丈夫 検索用モジュールを使い分け → 一部の検索クエリは高速化 6
  • 8. 2015年11月29日(日) Groonga Meatup 2015 grn_ts の使い方 ビルド時にマクロ GRN_WITH_TS を定義 $ ./configure CFLAGS="-g -O2 -DGRN_WITH_TS" $ make フィルタの先頭に ‘?’ を挿入 $ groonga tmp/db > select Items --filter ‘?X < 50 && Y < 50’ … [...] http://groonga.org/ja/blog/2015/10/22/grn_ts.html (参考) 8 デフォルトで有効になっていま す
  • 9. 2015年11月29日(日) Groonga Meatup 2015 grn_ts でできること 使えるコマンド select 使える引数と例 --filter ‘?X && Y < 50 || Z > 50’ --scorer ‘_score = X + Y * Z’ --sortby ‘X, -Y, Z’ --output_columns ‘_id, _score, X, Y, Z’ --offset 10 --limit 10 9
  • 10. 2015年11月29日(日) Groonga Meatup 2015 grn_ts でできないこと 使えないコマンド・引数 できること以外 引数の制限事項 filter 一部の演算のみサポート 索引の使用は未サポート scorer 一部の演算のみサポート sortby 一部の演算のみサポート output_columns ベクタのベクタは未サポート offset 負の値は未サポート 10
  • 11. 2015年11月29日(日) Groonga Meatup 2015 grn_ts でできること(裏技) カラム同士の比較 --filter ‘?X < Y && Y < Z’ 演算結果による整列 --sortby ‘X + Y, -(Z + Y)’ ※ 先頭の ‘-’ は降順にする記号扱いなので注意 演算結果の出力 --output_columns ‘_id, X + Y, Z / 100.0’ ※ 仕様として決まっているわけではありません 実装の都合や皆様のご意見により変わる可能性があります 11
  • 12. 2015年11月29日(日) Groonga Meatup 2015 grn_ts 開発者からのお願い ご意見・ご質問・ご感想などをお待ちしております ○○ できるようにして欲しい ○○ みたいな使い方で速くなる? ○○ みたいな情報が欲しい ○○ には使えそう・使えなさそう ○○ が期待する結果にならない Twitter: @groonga, @s5yata GitHub: https://github.com/groonga/groonga ML: groonga-dev@lists.osdn.me 12
  • 14. 2015年11月29日(日) Groonga Meatup 2015 実験設定 実験環境 CPU: Core i7 3720QM, RAM: 4GB Ubuntu 15.10 on VMWare Fusion 8.0.2 実験データ 1,000 万行 データは擬似乱数により生成 Bool: false or true Int64: [0, 100) Text: 長さ [4, 8] の大文字アルファベット列 14
  • 15. 2015年11月29日(日) Groonga Meatup 2015 実験結果(--filter, Bool) キャッシュを無効にしてベストタイムを計測 select Table --filter ‘???’ --limit 0 15 ??? 従来[秒] grn_ts[秒] X 1.839 0.162 X && Y 2.608 0.214 X && Y && Z 3.303 0.240 X || Y 2.637 0.240 X || Y || Z 3.523 0.298
  • 16. 2015年11月29日(日) Groonga Meatup 2015 実験結果(--filter, Int64) キャッシュを無効にしてベストタイムを計測 select Table --filter ‘???’ --limit 0 16 ??? 従来[秒] grn_ts[秒] X < 1 1.777 0.134 X < 10 1.919 0.141 X < 99 2.300 0.132 X + Y + Z < 150 3.863 0.283 X < Y N/A 0.207
  • 17. 2015年11月29日(日) Groonga Meatup 2015 実験結果(--filter, Text) キャッシュを無効にしてベストタイムを計測 select Table --filter ‘???’ --limit 0 17 ??? 従来[秒] grn_ts[秒] X < “B” 2.066 0.529 X < “N” 2.433 0.554 X < “Z” 2.579 0.519 X < “N” && Y < “N” 3.544 0.805 X < Y && Y < Z N/A 1.506
  • 18. 2015年11月29日(日) Groonga Meatup 2015 実験結果(--sortby) キャッシュを無効にしてベストタイムを計測 select Table --sortby ‘???’ --limit 1 18 ??? 従来[秒] grn_ts[秒] IntX 0.560 0.298 IntX, IntY 0.665 0.304 IntX + IntY N/A 0.383 TextX 0.652 0.795 IntX, TextX 0.691 0.256
  • 20. 2015年11月29日(日) Groonga Meatup 2015 grn_ts の今後 現状 フィルタ・整列をサポート 整列は要改善 今後の予定 整列の効率化 索引のサポート 全文検索のサポート ドリルダウンのサポート ※ ご意見・ご質問・ご感想などをお待ちしております 20