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 +7 -0
- data/.rabbit +1 -0
- data/README.md +25 -0
- data/Rakefile +17 -0
- data/config.yaml +21 -0
- data/droonga-as-groonga-with-replication.md +383 -0
- data/images/development-policy-after.png +0 -0
- data/images/development-policy-before.png +0 -0
- data/images/groonga-vs-droonga-compatible-http.png +0 -0
- data/images/join.png +0 -0
- data/images/latency.png +0 -0
- data/images/partition-and-replication-actual.png +0 -0
- data/images/partition-and-replication.png +0 -0
- data/images/partition-read.png +0 -0
- data/images/partition-write.png +0 -0
- data/images/parts.jpg +0 -0
- data/images/replication-read-dead.png +0 -0
- data/images/replication-read.png +0 -0
- data/images/replication-write.png +0 -0
- data/images/service-droonga-dead.png +0 -0
- data/images/service-droonga-overload.png +0 -0
- data/images/syokunin.jpg +0 -0
- data/images/syskan.jpg +0 -0
- data/images/throughput.png +0 -0
- data/images/unjoin.png +0 -0
- data/pdf/droonga-as-groonga-with-replication-droonga-as-groonga-with-replication.pdf +0 -0
- metadata +84 -0
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
|
Binary file
|
Binary file
|
data/images/join.png
ADDED
Binary file
|
data/images/latency.png
ADDED
Binary file
|
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
|
data/images/syokunin.jpg
ADDED
Binary file
|
data/images/syskan.jpg
ADDED
Binary file
|
Binary file
|
data/images/unjoin.png
ADDED
Binary file
|
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: []
|