rabbit-slide-Piro-droonga-as-groonga-with-replication 2014.11.29

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: af665b12f3e84e2e6f79c2ddcfbc7154ff957a31
4
+ data.tar.gz: f08ea847cfe146d774a46f33f4fd2b72baa88da9
5
+ SHA512:
6
+ metadata.gz: 7b417431fc5a256b986bacd608b4c375fced205a546935fcdae20335411079b229f7020c74866ef3cadbf041312f458da3d099af04196ff93b83f35fb9308610
7
+ data.tar.gz: 9b21d32912e1ae3c7e8e9548e5b1591327a15ed7aa10304bb3b3a4b71e45fc7e94dc3f6536fca60dfbd2c7bfa7e08e2c4be3a88ee5ff964a48278e94f4012829
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ droonga-as-groonga-with-replication.md
data/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # Droonga - 分散Groongaで快適レプリケーション生活(仮)
2
+
3
+ [全文検索エンジンGroongaを囲む夕べ5](http://groonga.doorkeeper.jp/events/15816)用の発表資料です。
4
+ Groongaユーザ向けのDroongaの簡単な紹介と、Groongaを利用したアプリケーションをDroongaに移行する手順の解説です。
5
+
6
+ ## 作者向け
7
+
8
+ ### 表示
9
+
10
+ rake
11
+
12
+ ### 公開
13
+
14
+ rake publish
15
+
16
+ ## 閲覧者向け
17
+
18
+ ### インストール
19
+
20
+ gem install rabbit-slide-Piro-droonga-as-groonga-with-replication
21
+
22
+ ### 表示
23
+
24
+ rabbit rabbit-slide-Piro-droonga-as-groonga-with-replication.gem
25
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # task.spec.files += Dir.glob("doc/**/*.*")
9
+ # task.spec.files -= Dir.glob("private/**/*.*")
10
+ # task.spec.add_runtime_dependency("YOUR THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/config.yaml ADDED
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: droonga-as-groonga-with-replication
3
+ base_name: droonga-as-groonga-with-replication
4
+ tags:
5
+ - droonga
6
+ - groonga
7
+ presentation_date: 2014/11/29
8
+ version: 2014.11.29
9
+ licenses: []
10
+ slideshare_id: droonga-as-groonga-with-replication
11
+ speaker_deck_id:
12
+ ustream_id:
13
+ vimeo_id:
14
+ youtube_id:
15
+ author:
16
+ markup_language: :markdown
17
+ name: 結城洋志
18
+ email: yuki@clear-code.com
19
+ rubygems_user: Piro
20
+ slideshare_user: pirooutsiderreflex
21
+ speaker_deck_user:
@@ -0,0 +1,383 @@
1
+ # Droonga
2
+
3
+ subtitle
4
+ :   
5
+ 分散Groongaで
6
+ 快適レプリケーション生活
7
+
8
+ author
9
+ : 結城洋志
10
+
11
+ institution
12
+ : 株式会社クリアコード
13
+
14
+ allotted_time
15
+ : 30m
16
+
17
+ theme
18
+ : groonga
19
+
20
+ # Droongaって?
21
+
22
+ *D*istributed G*roonga*
23
+
24
+ # 要旨
25
+
26
+ * 1年間の*進捗報告*
27
+ * *「分散Groonga」としての
28
+ Droonga 1.0.8の現状*紹介
29
+ * 実際に試してみる
30
+ (できれば)
31
+
32
+ # 今日話すこと
33
+
34
+ * 分散型データ処理エンジン
35
+ *Droonga*の
36
+ * 組み込みプラグインの1つ
37
+ *Groongaプラグイン*
38
+ * 使い方
39
+ * Groonga v.s. Droonga
40
+
41
+ # 今日話さないこと
42
+
43
+ * Droongaの*設計*のこと
44
+
45
+
46
+ # Part1
47
+
48
+ -Part1-
49
+ 1年間の
50
+ *進捗報告*
51
+
52
+ # 昨年の発表
53
+
54
+ * 設計方針
55
+ * 実装
56
+ * (当時の)現状
57
+ * (当時の)今後の予定
58
+
59
+ # 大まかに言って
60
+
61
+ * *全く新しい・汎用の*分散型
62
+ データ処理エンジンとして
63
+ * 「こういう*設計*でこう動きます」
64
+ * 「こういう事も
65
+ *やろうと思えばできます*」
66
+ * 「こうやって*今すぐ試せます*」
67
+ という話はあまり無かった
68
+
69
+ # なんで?
70
+
71
+ * どっちかというと*フレームワーク*
72
+ * *具体的な用途*を先に
73
+ 決めないと話が始まらない
74
+ * 全文検索をやりたいだけでも
75
+ やり方が*Groongaとは全く違う*
76
+
77
+ # ハードル高すぎ
78
+
79
+ ![](images/parts.jpg){:relative_height="95"}
80
+
81
+ # 使うとしても
82
+
83
+ * 設計を*熟知*した人が
84
+ * 用途ごとの*最適な構成*を考え
85
+ * ログ保存&検索用?
86
+ * 掲示板のバックエンド用?
87
+ * 丁寧な*手作業*でひとつひとつ
88
+ セットアップ&設定
89
+
90
+ # 職人芸の世界
91
+
92
+ ![](images/syokunin.jpg){:relative_height="95"}
93
+
94
+ # 問題
95
+
96
+ * ユーザにとって
97
+ * *気軽*に試せない
98
+ * *Groongaユーザ*には馴染みにくい
99
+ * 開発者にとって
100
+ * 「汎用かつ便利」は作るのが大変
101
+ * *Groongaユーザ*を長く放置してしまう
102
+
103
+ # 当初の開発方針
104
+
105
+ ![](images/development-policy-before.png){:relative_height="95"}
106
+
107
+ # 進め方を見直し
108
+
109
+ ![](images/development-policy-after.png){:relative_height="95"}
110
+
111
+ # どう変わった?
112
+
113
+ * 変わらないこと
114
+ * 最終的に作る*物*
115
+ * 変わったこと
116
+ * 作る*順番*
117
+ * プロジェクト外への*見せ方*
118
+
119
+ # ここまでの成果(1)
120
+
121
+ * *Groongaとの互換性*向上
122
+ * *簡単インストール&
123
+ セットアップ*
124
+ * 管理コマンドによる
125
+ *簡単クラスタ管理*
126
+
127
+ # すぐ使える
128
+
129
+ $ curl "http://...engine.../install.sh" | \
130
+ sudo bash
131
+ $ curl "http://...http-server.../install.sh" | \
132
+ sudo bash
133
+ $ service droonga-engine start
134
+ $ service droonga-http-server start
135
+
136
+ $ droonga-engine-join --host=node1 \
137
+ --replica-soruce-host=node0
138
+ $ droonga-engine-join --host=node2 \
139
+ --replica-soruce-host=node0
140
+
141
+ $ curl "http://hostname:10041/d/select?..."
142
+
143
+ # ここまでの成果(2)
144
+
145
+ * *オーケストレーション*
146
+ (based on Serf)
147
+ * 一部のノードが死んでも
148
+ クラスタとして動作し続ける
149
+ * *チュートリアル*の充実
150
+
151
+ # 結果
152
+
153
+ *レプリケーションできるGroonga*
154
+
155
+ としてそこそこ
156
+ 使えるようになってきたはず
157
+
158
+
159
+
160
+ # Part2
161
+
162
+ -Part2-
163
+ *分散Groonga*
164
+ としての
165
+ Droongaの紹介
166
+
167
+ # 特徴
168
+
169
+ 特徴
170
+
171
+ # Groonga互換
172
+
173
+ ![](images/groonga-vs-droonga-compatible-http.png){:relative_height='95'}
174
+
175
+ # データベースを分散
176
+
177
+ * *レプリケーション*
178
+ * 現在の開発はここに注力
179
+ * *パーティショニング*
180
+ * 現在は部分的に対応(これから改善)
181
+
182
+ # レプリケーション
183
+
184
+ ![](images/replication-write.png){:relative_width="35" align="left" relative_margin_left="-20"}
185
+
186
+ ![](images/replication-read.png){:relative_width="45" align="right"}
187
+
188
+ システムの冗長性や
189
+ 耐障害性が高まる
190
+
191
+ # パーティショニング
192
+
193
+ ![](images/partition-write.png){:relative_width="40" align="left" relative_margin_left="-20"}
194
+
195
+ ![](images/partition-read.png){:relative_width="50" align="right"}
196
+
197
+ より多くの量のデータを管理できる
198
+
199
+
200
+ # 実際の性能は?
201
+
202
+ Groonga v.s. Droonga
203
+ ベンチマーク
204
+
205
+ * Wikipedia日本語版
206
+ *150万ページ*
207
+ * *全文検索*+*ドリルダウン*
208
+ * キャッシュヒット率50%
209
+ * [詳細はリポジトリを参照](https://github.com/droonga/presentation-groonga-night-5-droonga-as-groonga-with-replication/tree/master/benchmark)
210
+
211
+ # スループットの比較
212
+
213
+ ![](images/throughput.png){:relative_height='95'}
214
+
215
+ # レイテンシーの比較
216
+
217
+ ![](images/latency.png){:relative_height='95'}
218
+
219
+ # 性能の傾向
220
+
221
+ * *スループット性能*は良好
222
+ * *レイテンシー*は若干ある
223
+ * 同時接続数が多いと性能が逆転
224
+ * ノード追加で*Groongaの
225
+ 性能上の限界*を超えられる
226
+
227
+ # これからのDroonga
228
+
229
+ * Groonga互換
230
+ * *Suggest*(ローマ字前方一致検索)
231
+ * 汎用分散データ処理エンジン
232
+ * 完全*無停止*でのクラスタ構成変更
233
+ * *パーティショニング*有りの構成
234
+ * *プラグイン開発*をより容易に
235
+
236
+
237
+ # まとめ
238
+
239
+ まとめ
240
+
241
+ # まとめ
242
+
243
+ * Droongaは*汎用の
244
+ 分散型データ処理エンジン*
245
+ * 組み込みのプラグインによって
246
+ *レプリケーション有りの
247
+ Groonga*として使える
248
+
249
+ # 質問?
250
+
251
+ 質問?
252
+
253
+
254
+ # Part3
255
+
256
+ -Part3-
257
+ Droongaを
258
+ *試してみよう*
259
+
260
+ # 試してみよう
261
+
262
+ * インストールと起動
263
+ * Groongaからのデータ移行
264
+ * Groongaアプリケーションの
265
+ バックエンドを
266
+ Droongaに切り替え
267
+ * クラスタにノードを追加
268
+
269
+ # ノードのセットアップ
270
+
271
+ インストールスクリプト
272
+ (Ubuntu、CentOS7のみ対応)
273
+
274
+ # curl \
275
+ https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | \
276
+ bash
277
+ # curl \
278
+ https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | \
279
+ bash
280
+
281
+ # サービスの起動
282
+
283
+ serviceコマンドを使用
284
+
285
+ # service droonga-engine start
286
+ # service droonga-http-server start
287
+
288
+ # サービスの終了
289
+
290
+ serviceコマンドを使用
291
+
292
+ # service droonga-engine stop
293
+ # service droonga-http-server stop
294
+
295
+ # データの移行
296
+
297
+ % sudo gem install rroonga grn2drn droonga-client
298
+
299
+ % grndump --no-dump-tables /path/to/groonga/db | \
300
+ grn2drn | \
301
+ droonga-send --server=node0 \
302
+ --report-throughput)
303
+ % grndump --no-dump-schema --no-dump-indexes \
304
+ /path/to/groonga/db | \
305
+ grn2drn | \
306
+ droonga-send --server=node0 \
307
+ --server=node1 \
308
+ --server=node2 \
309
+ ...
310
+ --report-throughput)
311
+
312
+ # アプリケーションの移行
313
+
314
+ GroongaのHTTPインターフェースと
315
+ 互換性あり
316
+
317
+ curl "http://hostname:10041/d/select?..."
318
+
319
+ アプリケーションは接続先を
320
+ Droongaに変えるだけでOK
321
+
322
+ # クラスタへのノード追加
323
+
324
+ % droonga-engine-join --host=cccc \
325
+ --replica-source-host=bbbb
326
+
327
+ ![](images/join.png){:relative_height='100'}
328
+
329
+ # ノードの切り離し
330
+
331
+ % droonga-engine-unjoin --host=cccc
332
+
333
+ ![](images/unjoin.png){:relative_height='100'}
334
+
335
+
336
+
337
+
338
+ # 再度まとめ
339
+
340
+ * Droongaは*汎用の
341
+ 分散型データ処理エンジン*
342
+ * 組み込みのプラグインによって
343
+ *レプリケーション有りの
344
+ Groonga*として使える
345
+ * HTTPインターフェースは
346
+ *Groongaと互換性有り*
347
+
348
+
349
+
350
+ # 宣伝
351
+
352
+ 宣伝
353
+
354
+ # 株式会社クリアコード
355
+
356
+ * *Groonga有償サポート*
357
+ * Groonga以外のGroonga族も
358
+ * Mozilla有償サポート
359
+ * Firefox, Thunderbird, Firefox OS
360
+ * その他OSS開発全般
361
+ * *コードリーダー育成支援*
362
+
363
+ # 個人の活動
364
+
365
+ *日経Linux*誌にて
366
+
367
+ シェルスクリプト
368
+ 解説マンガ
369
+ *#!シス管系女子*
370
+ 連載中
371
+
372
+ ![](images/syskan.jpg){:relative_width="30" align="right" relative_margin_right="-10"}
373
+
374
+ # おわり
375
+
376
+ *Droonga, Groonga,
377
+ 株式会社クリアコード*
378
+ を宜しくお願いします
379
+
380
+ * 使用画像
381
+ * [写真素材 足成:秋葉原](http://www.ashinari.com/2009/07/12-024265.php)
382
+ * [職人のおじいちゃん by Neil_Scottuk](http://free-photos.gatag.net/2014/07/06/100000.html)
383
+
Binary file
data/images/join.png ADDED
Binary file
Binary file
Binary file
Binary file
data/images/parts.jpg ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/images/syskan.jpg ADDED
Binary file
Binary file
data/images/unjoin.png ADDED
Binary file
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-Piro-droonga-as-groonga-with-replication
3
+ version: !ruby/object:Gem::Version
4
+ version: 2014.11.29
5
+ platform: ruby
6
+ authors:
7
+ - 結城洋志
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: |-
28
+ [全文検索エンジンGroongaを囲む夕べ5](http://groonga.doorkeeper.jp/events/15816)用の発表資料です。
29
+ Groongaユーザ向けのDroongaの簡単な紹介と、Groongaを利用したアプリケーションをDroongaに移行する手順の解説です。
30
+ email:
31
+ - yuki@clear-code.com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - .rabbit
37
+ - README.md
38
+ - Rakefile
39
+ - config.yaml
40
+ - droonga-as-groonga-with-replication.md
41
+ - images/development-policy-after.png
42
+ - images/development-policy-before.png
43
+ - images/groonga-vs-droonga-compatible-http.png
44
+ - images/join.png
45
+ - images/latency.png
46
+ - images/partition-and-replication-actual.png
47
+ - images/partition-and-replication.png
48
+ - images/partition-read.png
49
+ - images/partition-write.png
50
+ - images/parts.jpg
51
+ - images/replication-read-dead.png
52
+ - images/replication-read.png
53
+ - images/replication-write.png
54
+ - images/service-droonga-dead.png
55
+ - images/service-droonga-overload.png
56
+ - images/syokunin.jpg
57
+ - images/syskan.jpg
58
+ - images/throughput.png
59
+ - images/unjoin.png
60
+ - pdf/droonga-as-groonga-with-replication-droonga-as-groonga-with-replication.pdf
61
+ homepage: http://slide.rabbit-shocker.org/authors/Piro/droonga-as-groonga-with-replication/
62
+ licenses: []
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubyforge_project:
80
+ rubygems_version: 2.4.1
81
+ signing_key:
82
+ specification_version: 4
83
+ summary: Droonga - 分散Groongaで快適レプリケーション生活(仮)
84
+ test_files: []