SlideShare a Scribd company logo
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
Droonga  
分散Groongaで
快適レプリケーション生活
結城洋志 株式会社クリアコード
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
Droongaって?
Distributed
Groonga
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
要旨
1年間の進捗報告
「分散Groonga」としての
Droonga 1.0.8の現状紹介
実際に試してみる
(できれば)
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
今日話すこと
分散型データ処理エンジン
Droongaの
組み込みプラグインの1つ
Groongaプラグイン
使い方
Groonga v.s. Droonga
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
今日話さないこと
Droongaの設計のこと
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
Part1
-Part1-
1年間の
進捗報告
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
昨年の発表
設計方針
実装
(当時の)現状
(当時の)今後の予定
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
大まかに言って
全く新しい・汎用の分散型
データ処理エンジンとして
「こういう設計でこう動きます」
「こういう事も
やろうと思えばできます」
「こうやって今すぐ試せます」
という話はあまり無かった
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
なんで?
どっちかというとフレームワーク
具体的な用途を先に
決めないと話が始まらない
全文検索をやりたいだけでも
やり方がGroongaとは全く違う
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
ハードル高すぎ
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
使うとしても
設計を熟知した人が
用途ごとの最適な構成を考え
ログ保存&検索用?
掲示板のバックエンド用?
丁寧な手作業でひとつひとつ
セットアップ&設定
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
職人芸の世界
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
問題
ユーザにとって
気軽に試せない
Groongaユーザには馴染みにくい
開発者にとって
「汎用かつ便利」は作るのが大変
Groongaユーザを長く放置してしまう
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
当初の開発方針
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
進め方を見直し
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
どう変わった?
変わらないこと
最終的に作る物
変わったこと
作る順番
プロジェクト外への見せ方
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
ここまでの成果(1)
Groongaとの互換性向上
簡単インストール&
セットアップ
管理コマンドによる
簡単クラスタ管理
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
すぐ使える
$ curl "http://...engine.../install.sh" | 
sudo bash
$ curl "http://...http-server.../install.sh" | 
sudo bash
$ service droonga-engine start
$ service droonga-http-server start
$ droonga-engine-join --host=node1 
--replica-soruce-host=node0
$ droonga-engine-join --host=node2 
--replica-soruce-host=node0
$ curl "http://hostname:10041/d/select?..."
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
ここまでの成果(2)
オーケストレーション
(based on Serf)
一部のノードが死んでも
クラスタとして動作し続ける
チュートリアルの充実
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
結果
レプリケーションできるGroonga
としてそこそこ
使えるようになってきたはず
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
Part2
-Part2-
分散Groonga
としての
Droongaの紹介
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
特徴
特徴
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
Groonga互換
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
データベースを分散
レプリケーション
現在の開発はここに注力
パーティショニング
現在は部分的に対応(これから改善)
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
レプリケーション
システムの冗長性や
耐障害性が高まる
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
パーティショニング
より多くの量のデータを管理できる
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
実際の性能は?
Groonga v.s. Droonga
ベンチマーク
Wikipedia日本語版
150万ページ
全文検索+ドリルダウン
キャッシュヒット率50%
詳細はリポジトリを参照
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
スループットの比較
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
レイテンシーの比較
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
性能の傾向
スループット性能は良好
レイテンシーは若干ある
同時接続数が多いと性能が逆転
ノード追加でGroongaの
性能上の限界を超えられる
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
これからのDroonga
Groonga互換
Suggest(ローマ字前方一致検索)
汎用分散データ処理エンジン
完全無停止でのクラスタ構成変更
パーティショニング有りの構成
プラグイン開発をより容易に
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
まとめ
まとめ
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
まとめ
Droongaは汎用の
分散型データ処理エンジン
組み込みのプラグインによって
レプリケーション有りの
Groongaとして使える
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
質問?
質問?
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
Part3
-Part3-
Droongaを
試してみよう
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
試してみよう
インストールと起動
Groongaからのデータ移行
Groongaアプリケーションの
バックエンドを
Droongaに切り替え
クラスタにノードを追加
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
ノードのセットアップ
インストールスクリプト
(Ubuntu、CentOS7のみ対応)
# curl 
https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | 
bash
# curl 
https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | 
bash
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
サービスの起動
serviceコマンドを使用
# service droonga-engine start
# service droonga-http-server start
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
サービスの終了
serviceコマンドを使用
# service droonga-engine stop
# service droonga-http-server stop
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
データの移行
% sudo gem install rroonga grn2drn droonga-client
% grndump --no-dump-tables /path/to/groonga/db | 
grn2drn | 
droonga-send --server=node0 
--report-throughput)
% grndump --no-dump-schema --no-dump-indexes 
/path/to/groonga/db | 
grn2drn | 
droonga-send --server=node0 
--server=node1 
--server=node2 
...
--report-throughput)
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
アプリケーションの移行
GroongaのHTTPインターフェースと
互換性あり
curl "http://hostname:10041/d/select?..."
アプリケーションは接続先を
Droongaに変えるだけでOK
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
クラスタへのノード追加
% droonga-engine-join --host=cccc 
--replica-source-host=bbbb
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
ノードの切り離し
% droonga-engine-unjoin --host=cccc
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
再度まとめ
Droongaは汎用の
分散型データ処理エンジン
組み込みのプラグインによって
レプリケーション有りの
Groongaとして使える
HTTPインターフェースは
Groongaと互換性有り
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
宣伝
宣伝
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
株式会社クリアコード
Groonga有償サポート
Groonga以外のGroonga族も
Mozilla有償サポート
Firefox, Thunderbird, Firefox OS
その他OSS開発全般
コードリーダー育成支援
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
個人の活動
日経Linux誌にて
シェルスクリプト
解説マンガ
#!シス管系女子
連載中
Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3
おわり
Droonga, Groonga,
株式会社クリアコード
を宜しくお願いします
使用画像
写真素材 足成:秋葉原
職人のおじいちゃん by Neil_Scottuk

More Related Content

Similar to Droonga as-groonga-with-replication-droonga-as-groonga-with-replication

Groonga族2014
Groonga族2014Groonga族2014
Groonga族2014
Kouhei Sutou
 
HerokuでGroonga
HerokuでGroongaHerokuでGroonga
HerokuでGroonga
Kouhei Sutou
 
Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29
kenhys
 
Droongaのはじめかた
DroongaのはじめかたDroongaのはじめかた
Droongaのはじめかた
Kouhei Sutou
 
MroongaとPGroonga
MroongaとPGroongaMroongaとPGroonga
MroongaとPGroonga
Kouhei Sutou
 
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
Kouhei Sutou
 
Groonga族2016
Groonga族2016Groonga族2016
Groonga族2016
Kouhei Sutou
 

Similar to Droonga as-groonga-with-replication-droonga-as-groonga-with-replication (7)

Groonga族2014
Groonga族2014Groonga族2014
Groonga族2014
 
HerokuでGroonga
HerokuでGroongaHerokuでGroonga
HerokuでGroonga
 
Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29
 
Droongaのはじめかた
DroongaのはじめかたDroongaのはじめかた
Droongaのはじめかた
 
MroongaとPGroonga
MroongaとPGroongaMroongaとPGroonga
MroongaとPGroonga
 
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
 
Groonga族2016
Groonga族2016Groonga族2016
Groonga族2016
 

Droonga as-groonga-with-replication-droonga-as-groonga-with-replication

  • 1. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 Droonga   分散Groongaで 快適レプリケーション生活 結城洋志 株式会社クリアコード
  • 2. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 Droongaって? Distributed Groonga
  • 3. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 要旨 1年間の進捗報告 「分散Groonga」としての Droonga 1.0.8の現状紹介 実際に試してみる (できれば)
  • 4. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 今日話すこと 分散型データ処理エンジン Droongaの 組み込みプラグインの1つ Groongaプラグイン 使い方 Groonga v.s. Droonga
  • 5. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 今日話さないこと Droongaの設計のこと
  • 6. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 Part1 -Part1- 1年間の 進捗報告
  • 7. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 昨年の発表 設計方針 実装 (当時の)現状 (当時の)今後の予定
  • 8. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 大まかに言って 全く新しい・汎用の分散型 データ処理エンジンとして 「こういう設計でこう動きます」 「こういう事も やろうと思えばできます」 「こうやって今すぐ試せます」 という話はあまり無かった
  • 9. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 なんで? どっちかというとフレームワーク 具体的な用途を先に 決めないと話が始まらない 全文検索をやりたいだけでも やり方がGroongaとは全く違う
  • 10. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 ハードル高すぎ
  • 11. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 使うとしても 設計を熟知した人が 用途ごとの最適な構成を考え ログ保存&検索用? 掲示板のバックエンド用? 丁寧な手作業でひとつひとつ セットアップ&設定
  • 12. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 職人芸の世界
  • 13. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 問題 ユーザにとって 気軽に試せない Groongaユーザには馴染みにくい 開発者にとって 「汎用かつ便利」は作るのが大変 Groongaユーザを長く放置してしまう
  • 14. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 当初の開発方針
  • 15. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 進め方を見直し
  • 16. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 どう変わった? 変わらないこと 最終的に作る物 変わったこと 作る順番 プロジェクト外への見せ方
  • 17. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 ここまでの成果(1) Groongaとの互換性向上 簡単インストール& セットアップ 管理コマンドによる 簡単クラスタ管理
  • 18. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 すぐ使える $ curl "http://...engine.../install.sh" | sudo bash $ curl "http://...http-server.../install.sh" | sudo bash $ service droonga-engine start $ service droonga-http-server start $ droonga-engine-join --host=node1 --replica-soruce-host=node0 $ droonga-engine-join --host=node2 --replica-soruce-host=node0 $ curl "http://hostname:10041/d/select?..."
  • 19. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 ここまでの成果(2) オーケストレーション (based on Serf) 一部のノードが死んでも クラスタとして動作し続ける チュートリアルの充実
  • 20. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 結果 レプリケーションできるGroonga としてそこそこ 使えるようになってきたはず
  • 21. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 Part2 -Part2- 分散Groonga としての Droongaの紹介
  • 22. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 特徴 特徴
  • 23. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 Groonga互換
  • 24. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 データベースを分散 レプリケーション 現在の開発はここに注力 パーティショニング 現在は部分的に対応(これから改善)
  • 25. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 レプリケーション システムの冗長性や 耐障害性が高まる
  • 26. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 パーティショニング より多くの量のデータを管理できる
  • 27. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 実際の性能は? Groonga v.s. Droonga ベンチマーク Wikipedia日本語版 150万ページ 全文検索+ドリルダウン キャッシュヒット率50% 詳細はリポジトリを参照
  • 28. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 スループットの比較
  • 29. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 レイテンシーの比較
  • 30. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 性能の傾向 スループット性能は良好 レイテンシーは若干ある 同時接続数が多いと性能が逆転 ノード追加でGroongaの 性能上の限界を超えられる
  • 31. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 これからのDroonga Groonga互換 Suggest(ローマ字前方一致検索) 汎用分散データ処理エンジン 完全無停止でのクラスタ構成変更 パーティショニング有りの構成 プラグイン開発をより容易に
  • 32. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 まとめ まとめ
  • 33. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 まとめ Droongaは汎用の 分散型データ処理エンジン 組み込みのプラグインによって レプリケーション有りの Groongaとして使える
  • 34. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 質問? 質問?
  • 35. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 Part3 -Part3- Droongaを 試してみよう
  • 36. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 試してみよう インストールと起動 Groongaからのデータ移行 Groongaアプリケーションの バックエンドを Droongaに切り替え クラスタにノードを追加
  • 37. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 ノードのセットアップ インストールスクリプト (Ubuntu、CentOS7のみ対応) # curl https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | bash # curl https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | bash
  • 38. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 サービスの起動 serviceコマンドを使用 # service droonga-engine start # service droonga-http-server start
  • 39. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 サービスの終了 serviceコマンドを使用 # service droonga-engine stop # service droonga-http-server stop
  • 40. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 データの移行 % sudo gem install rroonga grn2drn droonga-client % grndump --no-dump-tables /path/to/groonga/db | grn2drn | droonga-send --server=node0 --report-throughput) % grndump --no-dump-schema --no-dump-indexes /path/to/groonga/db | grn2drn | droonga-send --server=node0 --server=node1 --server=node2 ... --report-throughput)
  • 41. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 アプリケーションの移行 GroongaのHTTPインターフェースと 互換性あり curl "http://hostname:10041/d/select?..." アプリケーションは接続先を Droongaに変えるだけでOK
  • 42. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 クラスタへのノード追加 % droonga-engine-join --host=cccc --replica-source-host=bbbb
  • 43. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 ノードの切り離し % droonga-engine-unjoin --host=cccc
  • 44. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 再度まとめ Droongaは汎用の 分散型データ処理エンジン 組み込みのプラグインによって レプリケーション有りの Groongaとして使える HTTPインターフェースは Groongaと互換性有り
  • 45. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 宣伝 宣伝
  • 46. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 株式会社クリアコード Groonga有償サポート Groonga以外のGroonga族も Mozilla有償サポート Firefox, Thunderbird, Firefox OS その他OSS開発全般 コードリーダー育成支援
  • 47. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 個人の活動 日経Linux誌にて シェルスクリプト 解説マンガ #!シス管系女子 連載中
  • 48. Droonga -    分散Groongaで 快適レプリケーション生活 Powered by Rabbit 2.1.3 おわり Droonga, Groonga, 株式会社クリアコード を宜しくお願いします 使用画像 写真素材 足成:秋葉原 職人のおじいちゃん by Neil_Scottuk