Rabbit Slide Show

はじめてのDroonga

2014-07-30

Description

Droonga Meetupで発表した、Groongaユーザ向けのDroongaの簡単な紹介と、Groongaを利用したアプリケーションをDroongaに移行する手順の解説です。

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

Other slides