Download - Rubyを使った分散全文検索ミドルウェア
![Page 1: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/1.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Rubyを使った分散全文検索ミドルウェア
須藤功平株式会社クリアコード
RubyWorld Conference 20142014/11/13
![Page 2: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/2.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
趣意書
Rubyを普通の人々に浸透させたい!
![Page 3: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/3.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
この発表の内容
浸透促進案の提案
![Page 4: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/4.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
浸透対象の普通の人々
よくプログラムを書く人
ただしRubyとは縁遠い✓
→よくRubyを書くようになる✓
✓
たまにプログラムを書く人インフラの人とか✓
→たまにRubyを書くようになる✓
✓
![Page 5: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/5.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
浸透方法
技術的な攻め方多機能・高機能・高性能✓
他よりいいですよ✓
✓
心理的・政治的な攻め方流行り✓
「みんな」使っていますよ✓
✓
![Page 6: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/6.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
提案方針
技術的な攻め方多機能・高機能・高性能✓
他よりいいですよ✓
✓
心理的・政治的な攻め方流行り✓
「みんな」使っていますよ✓
✓
![Page 7: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/7.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
流行っている状態
シェアを独占している
キラーアプリがある
例:Ruby on Rails✓
✓
有用アプリの多くがRuby製例:Chef, Puppet, Vagrant, Serverspec
✓
✓
![Page 8: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/8.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
キラーアプリは難しい
シェアを独占している
キラーアプリがある
例:Ruby on Rails✓
✓
有用アプリの多くがRuby製例:Chef, Puppet, Vagrant, Serverspec
✓
✓
![Page 9: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/9.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
多有用アプリ状況を目指す
Ruby製アプリ使うRuby製アプリを優先して選ぶ✓
使っていることを広くアピール✓
✓
Ruby製アプリを作るそこそこ有用で十分✓
たくさん作る✓
✓
![Page 10: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/10.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Ruby製アプリ作りを促す
成功事例(きっかけ)後続が真似したくなればよい✓
そんなに流行らなくてもよい✓
✓
開発ノウハウ(助け)後続が開発しやすくなる✓
ライブラリー化されていると尚よし✓
✓
![Page 11: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/11.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
どんなアプリがよいか
ミドルウェア↓
自作のアプリは好きな言語で書ける
(言語による採用障壁が低め)(例:RabbitMQはErlang製だがアプリはErlang以外が多い)
![Page 12: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/12.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ミドルウェア
データストア(RDBMSやKVS)✓
検索システム✓
メールシステム✓
メッセージキュー✓
ログ活用(分析や監視)✓
![Page 13: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/13.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Rubyでミドルウェア
成功事例
Fluentd, ROMA✓
milter manager✓
分散全文検索エンジンを開発中(Droonga)
✓
✓
開発ノウハウ→これから紹介✓
✓
![Page 14: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/14.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
開発ノウハウ:方針
トレードオフと向き合うどこを強みにするか✓
どこは競合と戦わないか✓
✓
全方位で勝つことはできない
Rubyだって速さじゃCに勝てない✓
でも楽しさならCに勝てる✓
✓
![Page 15: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/15.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
強みの選び方
使いやすさで勝負する✓
最高速で勝負しない✓
多機能で勝負しない✓
![Page 16: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/16.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ミドルウェアの使いやすさ
導入・設定・運用の簡単さ多くのミドルウェアは大変←ヒント✓
例:設定なしで動くと簡単✓
✓
止めないことが前提無停止で設定再読み込み✓
無停止でアップグレード✓
✓
![Page 17: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/17.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
強みの選び方 - 使いやすさ
使いやすさで勝負するユーザーの手間を減らす✓
かゆいところに手が届く✓
✓
最高速で勝負しない✓
多機能で勝負しない✓
![Page 18: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/18.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
性能
最高速は目指さない
C/C++とかJavaに負ける✓
✓
十分な速度は目指すミドルウェアがボトルネックにならない程度
✓
✓
![Page 19: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/19.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ミドルウェアと性能
ミドルウェア=サーバー並行処理をいかにがんばるか✓
✓
評価基準レイテンシー(1リクエストに注目)✓
スループット(単位時間に注目)✓
✓
![Page 20: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/20.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ボトルネックの解消方法
なりやすい箇所
CPU✓
ネットワーク✓
✓
なるかもしれない箇所
I/Oとメモリー✓
✓
![Page 21: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/21.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
CPUネック
処理を減らす✓
マルチプロセス後述✓
✓
Cで拡張ライブラリーを書くFluentd: MessagePack✓
Droonga: MessagePack, Groonga✓
✓
![Page 22: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/22.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
マルチプロセス実装
ServerEngine(ライブラリー)nスレッド+シグナル+fork(spawn)✓
✓
Droonga1スレッド+パイプ+spawn+イベントループ✓
↑の方がオススメ✓
✓
![Page 23: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/23.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ServerEngine
SupervisorWorkerfork
signal
Process Thread
Logging
Heartbeat
Signal
heartbeatWorker
Worker
![Page 24: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/24.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ServerEngineモデル1
基本はSupervisor→Worker✓
gracefulな再起動をしにくい(無停止で設定再読み込みできれば必要ない)
新Workerの準備完了を知れない✓
✓
無停止アップグレード×✓
![Page 25: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/25.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ServerEngineモデル2
スレッドは難しいエラーをちゃんと処理しないと問題を見逃す
✓
✓
シグナルは難しい
終了中に何度でもSIGINT✓
✓
forkは難しい✓
![Page 26: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/26.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ServerEngineモデル3
ライブラリー化していてえらい✓
![Page 27: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/27.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droonga
Supervisor
Workerspawn
Process Event loop
command
Worker
Worker
pipe
(ready)(stop)
![Page 28: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/28.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droongaモデル1
通信はSupervisor↔Worker✓
gracefulな再起動をしやすい新Workerが準備完了→Supervisorに通知→旧Workerをgracefulに終了
✓
✓
無停止更新ができる✓
![Page 29: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/29.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droongaモデル2
シンプルになる1スレッド・シグナルなし✓
stop中にn回stopがこない✓
終了処理中に割り込まれない✓
✓
イベント駆動は複雑✓
![Page 30: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/30.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ネットワークネック
通信量を減らすデータを減らす(ムリなら圧縮)(LZ4で十分ならLZ4、ムリならzlib)
✓
✓
ノンブロッキングI/Oと多重化拡張ライブラリー必須✓
→Cool.io, nio4r, EventMachine✓
イベント駆動なコードは複雑✓
✓
![Page 31: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/31.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
イベント駆動なコード
Coolio::TCPServer.new(HOST, PORT) do |client| n_reads = 0 client.on_read do |data| p data client.write(data) n_reads += 1 if n_reads == 2 client.on_write_complete {client.close} end endend
![Page 32: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/32.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
同期っぽく書けるAPI
Coolio::TCPServer.new(HOST, PORT) do |client| Fiber.run do # <- 並行にしたい処理を明示 client.extend(Synchronizable) # <- 42行 2.times do data = client.read p data client.write(data) end client.close endend
![Page 33: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/33.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
同期っぽく書けるAPI
ユーザーがFiberを書くのがカッコ悪い
✓
同期っぽい中で並行に処理したくなったら?
pubsubっぽいことをしたいとか✓
✓
![Page 34: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/34.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Promiseな世界
server.accept.then do |client| client.read.then do |data| p data client.write(data) end.then do client.close endend.catch do |error|end
![Page 35: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/35.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Promiseな世界
繰り返しを書きにくい✓
メソッドチェーンがカッコ悪い✓
catchがカッコ悪い✓
![Page 36: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/36.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
API案:基本
# 同期っぽいAPIclinet = server.accept# 非同期APIserver.accept do |request| begin client = request.socket rescue endend
![Page 37: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/37.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
API案:組み合わせ
server.accept do |request| client = request.socket 2.times do data = client.read p data client.write(data) end client.closeend
![Page 38: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/38.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
API案
Fiberが見えない✓
書き方の組み合わせが自然
ブロックなし→同期っぽいAPI✓
ブロックあり→非同期API✓
✓
実装していない😜✓
![Page 39: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/39.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
I/Oとメモリーネック
データストアをCで書くDroonga: Groonga✓
ROMA: Tokyo Cabinet, SQLite3✓
✓
コアの機能もCで書くデータコピーも減らしたいとき✓
✓
![Page 40: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/40.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
強みの選び方 - 性能
使いやすさで勝負する✓
最高速で勝負しないでも、十分な速度は目指す✓
ボトルネックにならなければよい✓
✓
多機能で勝負しない✓
![Page 41: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/41.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
機能
多機能をウリにしない多機能だと遅くなる(ことが多い)✓
✓
組み込みの機能より拡張性→プラグイン機能✓
Fluentd, ROMA, Droonga✓
✓
![Page 42: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/42.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
プラグイン機能のポイント
開発者向け作りやすい✓
テストしやすい✓
リリースしやすい✓
✓
ユーザー向けインストールしやすい✓
設定しやすい✓
✓
![Page 43: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/43.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
開発者向け
作りやすさ
scaffoldいらずのAPI✓
✓
テストしやすさドライバー・スタブを提供✓
✓
リリースしやすさ
gem✓
✓
![Page 44: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/44.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
ユーザー向け
インストールのしやすさ
Rubyをそんなに知らない前提なのに直接gemを使ってもらうのってアリ?
✓
✓
設定のしやすさできるだけ少なく✓
できればno configuration✓
✓
![Page 45: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/45.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
強みの選び方 - 機能
使いやすさで勝負する✓
最高速で勝負しない✓
多機能で勝負しない組込機能よりも簡単拡張で勝負✓
Ruby初心者でも開発できる簡単さ✓
→プラグイン開発でRubyデビュー(tDiaryスタイルのRuby浸透方法)
✓
✓
![Page 46: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/46.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
まとめ1
趣意書
Rubyを浸透させたい!✓
✓
この発表浸透促進案の提案✓
ミドルウェア分野での促進案✓
✓
![Page 47: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/47.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
まとめ2:促進案
たくさんの人が使う他の方がよさそうでもRuby製を優先して使う
✓
使っていることを広める✓
✓
たくさん作る✓
![Page 48: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/48.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
まとめ3:作るノウハウ
使いやすさで勝負するユーザーの手間を減らす✓
✓
最高速で勝負しないボトルネックにならなければよい✓
✓
多機能で勝負しない組込機能より拡張性✓
✓
![Page 49: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/49.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
おまけ
Droongaの紹介
![Page 50: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/50.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droongaとは
Ruby製✓
分散全文検索エンジン✓
SPOFなしの構成✓
![Page 51: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/51.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droongaの特徴
処理をパイプラインとしてつなげられる予定
✓
処理はプラグイン可能
Rubyで簡単に(予定)書ける✓
✓
Groonga互換API提供Groonga = 既存全文検索エンジン✓
✓
![Page 52: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/52.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droongaの実装:性能
レイテンシー
Groongaより高いけど気になるほどではない
✓
✓
スループット
ノード数を増やせばGroongaより速い✓
✓
![Page 53: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/53.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droongaの実装:機能
プラグインで拡張可能✓
![Page 54: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/54.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droongaの実装:使いやすさ
インストールインストーラー提供で簡易化✓
✓
これからがんばる設定・更新・運用✓
プラグインの作りやすさ✓
✓
![Page 55: Rubyを使った分散全文検索ミドルウェア](https://reader033.vdocuments.pub/reader033/viewer/2022060123/5596f7001a28ab190b8b45ee/html5/thumbnails/55.jpg)
Rubyを使った分散全文検索ミドルウェア Powered by Rabbit 2.1.4
Droonga
http://droonga.org/
11/29(いい肉の日)Groongaイベント開催
(東京)http://groonga.doorkeeper.jp/events/15816