Text
Page: 1
はじめての
Droonga
Droongaの簡単な紹介と
Groongaからの移行手順
結城洋志
はじめてのDroonga -
株式会社クリアコード
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 2
要旨
「自作のアプリケーションを
GroongaからDroongaへ
今すぐ移行できるのか?」
にお答えします
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 3
気になる点、疑問点
気になる事があったら:
メモして後から質問
その場で質問してもOK
どこが気になったかを
教えてください!
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 4
アジェンダ
Droongaとは?
Droongaの何が嬉しい?
Droongaの何が嬉しくない?
デモ
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 5
Groongaの困った所
分散が流行ってる
Groongaは分散処理に
対応していない
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 6
Droongaとは
Distributed
Groonga
=分散Groonga
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 7
サーバ構成の違い
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 8
Groonga互換
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 9
Groonga互換
今までと同じ感覚で使える
Groongaベースの
既存のアプリケーションを
最小の工数で分散対応できる
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 10
データベースを分散
レプリケーション
現在の開発はここに注力
パーティショニング
現在は部分的に対応(これから改善)
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 11
レプリケーション?
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 12
パーティショニング?
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 13
Groonga→Droonga
今現在得られるメリット
レプリケーションできる
ようになる
ノードを簡単に追加・削除できる
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 14
レプリケーション無しだと(1)
単一のGroongaサーバに
サービスが依存
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 15
レプリケーション無しだと(1)
Groongaが死ぬと……
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 16
レプリケーション無しだと(1)
サービスも道連れになる
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 17
レプリケーション無しだと(2)
負荷が増大すると……
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 18
レプリケーション無しだと(2)
サービスレベルが落ちる
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 19
レプリケーション有りだと(1)
データが自動的に複製される
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 20
レプリケーション有りだと(1)
耐障害性が高くなる
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 21
レプリケーション有りだと(1)
単一のサーバに依存しなくなる
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 22
レプリケーション有りだと(1)
障害があってもサービスを
提供し続けられる
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 23
レプリケーション有りだと(2)
負荷が分散される
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 24
レプリケーション有りだと(2)
負荷の増大に対応しやすい
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 25
クラスタ構成の変更
付属のコマンドラインユーティリティ
を使用
droonga-engine-join
droonga-engine-unjoin
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 26
ノードの追加
% droonga-engine-join --host=cccc --replica-source-host=bbbb
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 27
ノードの切り離し
% droonga-engine-unjoin --host=cccc
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 28
デモ
Groongaベースの
アプリケーションを作成
Droongaクラスタを構築
バックエンドをDroongaに移行
(Groongaユーザ向けの、はじめて
のDroonga
と同内容です)
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 29
デモ:用意する物
サーバ2つ
192.168.100.50
192.168.100.51
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 30
Groonga→Droonga
今現在あるデメリット
レイテンシーが低下する
処理のオーバーヘッドがある
Groonga非互換の部分が
まだある
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 31
Groongaとの性能比較
検索対象
Wikipedia日本語版のページ
30万件/150万件
(データベースサイズ 1.1GiB/4.3GiB)
検索クエリ
ページのタイトル200件
(キャッシュヒット率50%)
ベンチマーク取得手順
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 32
Groongaとの性能比較
スループット(30万件)
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 33
Groongaとの性能比較
スループット(150万件)
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 34
Groongaとの性能比較
レイテンシー(30万件)
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 35
Groongaとの性能比較
レイテンシー(150万件)
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 36
それぞれの傾向
Groonga
✓ サーバ1台の処理能力では有利
✓ 負荷が増えるとスループットが
頭打ちになる
Droonga
✓ サーバ1台の処理能力では不利
✓ ノード追加でスループットの
上限が増える
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 37
傾向の分析
検索処理そのものが軽い時
✓ オーバーヘッドの影響が相対的に大
✓ Groongaの方が有利
検索処理そのものが重い時
✓ オーバーヘッドの影響が相対的に小
✓ Droongaの方が有利
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 38
Droongaの方が有利な場面
データベースが大きい
重いクエリが多い
…
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 39
今分かっている遅くなる理由
ドリルダウンがあると遅くなる
レスポンスのサイズが大きくなる
と遅くなる
クラスタ構成に合わせた処理の
最適化が不十分
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 40
現時点での互換性(概要)
スキーマ変更系
load, delete
select
それ以外は未対応(今後の課題)
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 41
現時点での互換性(詳細)
table操作系
table_create
table_remove
table_list
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 42
現時点での互換性(詳細)
column操作系
column_create
column_remove
column_rename
column_list
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 43
現時点での互換性(詳細)
データ更新系
load
ただし、以下は未対応
--ifexists, --input_type
delete
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 44
現時点での互換性(詳細)
検索系
select
ただし、以下は未対応
--scorer, --cache,
--match_escalation_threshold,
--query_expansion,
--query_flags, --query_expander,
--adjuster
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 45
とはいえ
Groongaの利用状況次第では
今すぐにでもDroongaに移行できる!
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 46
改善にご協力を!
様々な条件でのベンチマーク結果
できればGroongaでの
ベンチマーク結果も添えて
開発チームで認識できていない
ボトルネックを明らかにしたい
ベンチマーク取得手順公開中
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 47
改善にご協力を!
実際のWebアプリケーションからの
使い勝手レポート
互換性向上の作業の
優先順位付けの参考にしたい
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2
Page: 48
改善にご協力を!
フィードバックは
droonga-engineのissue
tracker
もしくは
groonga-dev ML
までお寄せ下さい
はじめてのDroonga -
Droongaの簡単な紹介と Groongaからの移行手順
Powered by Rabbit 2.1.2