rabbit-slide-kou-postgresql-unconference-tokyo-2015 2015.5.30.0

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: f5e53912160ba5bc587ebde036b4e1deab20f76e
4
+ data.tar.gz: 8c1c02fe2600c5cfd751d2b798b9c45ddeda9440
5
+ SHA512:
6
+ metadata.gz: 06cc8578f2c80bdb02ccf2eaa1c774d3cd82602acd6db557ab84bb4e6af85b05835cdf37921ee05961641fc9b611a95b34e43d55d16b433065a40993ba39b8e9
7
+ data.tar.gz: 8b1b8b2ba69a2d8581738c046980919e95f5f38951cb5ada45cc8c143df854875f4d980d1a0255106b35407d381a1c02f3a9490c50d6e7e1ade02ac8f3065010
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ postgresql-japanese-full-text-search-like-pg-bigm-pgroonga.rab
data/README.rd ADDED
@@ -0,0 +1,33 @@
1
+ = PostgreSQLで日本語全文検索 - LIKEとpg_bigmとPGroonga
2
+
3
+ PostgreSQLアンカンファレンス@東京(2015/5/30)でPostgreSQLの日本語全文検索まわりについて紹介した資料です。
4
+
5
+ == ライセンス
6
+
7
+ CC BY-SA 4.0
8
+
9
+ 原著作者名には以下のどちらかを使ってください。
10
+
11
+ * 須藤功平
12
+ * Kouhei Sutou
13
+
14
+ == 作者向け
15
+
16
+ === 表示
17
+
18
+ rake
19
+
20
+ === 公開
21
+
22
+ rake publish
23
+
24
+ == 閲覧者向け
25
+
26
+ === インストール
27
+
28
+ gem install rabbit-slide-kou-postgresql-unconference-tokyo-2015
29
+
30
+ === 表示
31
+
32
+ rabbit rabbit-slide-kou-postgresql-unconference-tokyo-2015.gem
33
+
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
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # 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,26 @@
1
+ ---
2
+ id: postgresql-unconference-tokyo-2015
3
+ base_name: postgresql-japanese-full-text-search-like-pg-bigm-pgroonga
4
+ tags:
5
+ - rabbit
6
+ - full-text-search
7
+ - pgunconf
8
+ - pgroonga
9
+ - pg_bigm
10
+ - groonga
11
+ presentation_date: 2015-05-30
12
+ version: 2015.5.30.0
13
+ licenses:
14
+ - CC BY-SA 4.0
15
+ slideshare_id:
16
+ speaker_deck_id:
17
+ ustream_id:
18
+ vimeo_id:
19
+ youtube_id:
20
+ author:
21
+ markup_language: :rd
22
+ name: Kouhei Sutou
23
+ email: kou@clear-code.com
24
+ rubygems_user: kou
25
+ slideshare_user: kou
26
+ speaker_deck_user: kou
@@ -0,0 +1,305 @@
1
+ = PostgreSQLで\n日本語全文検索
2
+
3
+ : subtitle
4
+ LIKEとpg_bigmとPGroonga
5
+ : author
6
+ 須藤功平
7
+ : institution
8
+ 株式会社クリアコード
9
+ : content-source
10
+ PostgreSQLアンカンファレンス@東京
11
+ : date
12
+ 2015-05-30
13
+ : allotted-time
14
+ 20m
15
+ : theme
16
+ .
17
+
18
+ = 内容
19
+
20
+ (('tag:center'))
21
+ (('tag:large'))
22
+ PostgreSQLで使える\n
23
+ 日本語全文検索方法を\n
24
+ 順に紹介
25
+
26
+ ((' '))
27
+
28
+ = 1: LIKE
29
+
30
+ * メリット
31
+ * 標準で使える
32
+ * インデックス作成不要\n
33
+ (('note:(データ更新が遅くならない)'))
34
+ * データが少なければ十分速い
35
+ * デメリット
36
+ * データ量に比例して遅くなる
37
+
38
+ = 「少ない」データ?
39
+
40
+ どのくらいなら少ないのか\n
41
+ ↓\n
42
+ 計測結果と要件で判断
43
+
44
+ = 計測
45
+
46
+ pg_bigmでいろんなデータを\n
47
+ 日本語検索してみよう!\n
48
+ (('note:http://qiita.com/fujii_masao/items/87f1d94ff4d350a718aa'))
49
+
50
+ * 青空文庫の書籍一覧データ
51
+ * 住所データ
52
+ * 日本版Wikipediaの\n
53
+ タイトル一覧データ
54
+
55
+ = 青空文庫:作品名
56
+
57
+ * データ:
58
+ * 11,818件
59
+ * 1レコード平均17バイト
60
+ * 速度:
61
+ * 6.673ms
62
+
63
+ (('wait'))
64
+ (('tag:center'))
65
+ (('tag:x-large'))
66
+ 十分速い
67
+
68
+ = 住所データ:市区町村
69
+
70
+ * データ:
71
+ * 147,769件
72
+ * 1レコード平均14バイト
73
+ * 速度:
74
+ * 70.684ms
75
+
76
+ (('wait'))
77
+ (('tag:center'))
78
+ (('tag:x-large'))
79
+ 十分速い
80
+
81
+ = Wikipedia:タイトル
82
+
83
+ * データ:
84
+ * 2,461,588件
85
+ * 1レコード平均20バイト
86
+ * 速度:
87
+ * 943.450ms
88
+
89
+ (('wait'))
90
+ (('tag:center'))
91
+ (('tag:x-large'))
92
+ 十分速い?
93
+
94
+ = LIKEの計測結果
95
+
96
+ # RT
97
+ delimiter = [|]
98
+
99
+ 件数 | 平均サイズ | 速度
100
+
101
+ 11,818 | 17バイト | 6.673ms
102
+ 147,769 | 14バイト | 70.684ms
103
+ 2,461,588 | 20バイト | 943.450ms
104
+
105
+ (('tag:center'))
106
+ (('tag:margin-top'))
107
+ (('tag:large'))
108
+ 十分速いならLIKEでOK!
109
+
110
+ = LIKE以外の選択肢
111
+
112
+ * pg_bigm
113
+ * PGroonga
114
+
115
+ = 2: pg_bigm
116
+
117
+ * メリット
118
+ * データ量が多くても高速
119
+ * ストリーミングレプリケーション可
120
+ * デメリット
121
+ * 別途インストールしないといけない
122
+ * インデックス作成が遅い
123
+ * ヒット数に比例して遅くなる
124
+
125
+ = 遅い?
126
+
127
+ (('tag:center'))
128
+ (('tag:x-large'))
129
+ 計測して確認
130
+
131
+ (('tag:margin-top'))
132
+ (('tag:margin-top'))
133
+ (('note:備考:'))
134
+ * (('note:LIKEでは計測していないがLIKEよりは確実に速い'))
135
+ * (('note:LIKEはヒット数に依らずすべて同程度の検索時間になる'))
136
+
137
+ = 計測
138
+
139
+ PGroongaとpg_bigmの\n
140
+ ベンチマーク結果\n
141
+ (('note:https://github.com/groonga/wikipedia-search/issues/2'))
142
+
143
+ * データ
144
+ * 日本語版Wikipediaの本文
145
+ * 1,846,514件
146
+ * 1レコード平均
147
+
148
+ = インデックス作成
149
+
150
+ # RT
151
+ delimiter = [|]
152
+
153
+ 元データの\nロード時間 | インデックス\n作成時間
154
+
155
+ 16分31秒 | 5時間56分15秒
156
+
157
+ (('wait'))
158
+ (('tag:center'))
159
+ 遅い?そうでもない?
160
+
161
+ = ヒット数と検索時間
162
+
163
+ # RT
164
+ delimiter = [|]
165
+
166
+ ヒット数 | 検索時間
167
+
168
+ 361 | 0.107s
169
+ 17,168 | 1.224s
170
+ 22,885 | 2.472s
171
+ 625,792 | 15.195s
172
+
173
+ (('wait'))
174
+ (('tag:center'))
175
+ 遅い?そうでもない?
176
+
177
+ = pg_bigmの計測結果
178
+
179
+ インデックス作成時間: 約6時間
180
+
181
+ # RT
182
+ caption = 検索時間
183
+ delimiter = [|]
184
+
185
+ ヒット数 | 検索時間
186
+
187
+ 361 | 0.107s
188
+ 17,168 | 1.224s
189
+ 22,885 | 2.472s
190
+ 625,792 | 15.195s
191
+
192
+ (('tag:center'))
193
+ (('tag:margin-top'))
194
+ 遅くないならpg_bigmでOK!
195
+
196
+ = 残りの選択肢
197
+
198
+ * PGroonga
199
+
200
+ = 3: PGroonga
201
+
202
+ * メリット
203
+ * インデックス作成が速い
204
+ * データ量が多くても高速
205
+ * ヒット数に多くても高速
206
+ * デメリット
207
+ * 別途インストールしないといけない
208
+ * ストリーミングレプリケーション×
209
+
210
+ = インデックス作成
211
+
212
+ # RT
213
+ delimiter = [|]
214
+
215
+ 元データの\nロード時間 | インデックス\n作成時間
216
+
217
+ 16分31秒 | 25分37秒
218
+
219
+ = インデックス作成:比較
220
+
221
+ # RT
222
+ delimiter = [|]
223
+
224
+ PGroonga | pg_bigm
225
+
226
+ 25分37秒 | 5時間56分15秒
227
+
228
+ (('wait'))
229
+ (('tag:center'))
230
+ (('tag:margin-top'))
231
+ (('tag:x-large'))
232
+ 非常に高速
233
+
234
+ = ヒット数と検索時間
235
+
236
+ # RT
237
+ delimiter = [|]
238
+
239
+ ヒット数 | 検索時間
240
+
241
+ 368 | 0.030s
242
+ 17,172 | 0.121s
243
+ 22,885 | 0.179s
244
+ 625,792 | 0.646s
245
+
246
+ = 検索時間:比較
247
+
248
+ # RT
249
+ delimiter = [|]
250
+
251
+ ヒット数 | PGroonga | pg_bigm
252
+
253
+ 368 | 0.030s | 0.107s
254
+ 17,172 | 0.121s | 1.224s
255
+ 22,885 | 0.179s | 2.472s
256
+ 625,792 | 0.646s | 15.195s
257
+
258
+ (('wait'))
259
+ (('tag:center'))
260
+ (('tag:margin-top'))
261
+ (('tag:x-large'))
262
+ 非常に高速
263
+
264
+ = おねがい
265
+
266
+ (('tag:center'))
267
+ 同じベンチマークを実行して\n
268
+ 結果を貼ってください!\n
269
+ (('note:同じ傾向があるか確認したい'))
270
+
271
+ (('tag:margin-top'))
272
+ (('tag:margin-top'))
273
+ ベンチマークの実行方法↓\n
274
+ (('note:(ここでまとめたデータの生データも貼ってある)'))\n
275
+ (('note:https://github.com/groonga/wikipedia-search/issues/2'))
276
+
277
+ = まとめ1
278
+
279
+ * データが少ないならLIKEで十分
280
+ * 1レコード数十バイトなら\n
281
+ 百万件はいける
282
+ * データが多いならLIKEはツライ
283
+
284
+ = まとめ2
285
+
286
+ * データ多→pg_bigmかPGroonga
287
+ * ヒット件数が多い→PGroonga
288
+ * レコードサイズが大きい→PGroonga
289
+ * 更新が多い→PGroonga\n
290
+ (('note:(インデックス作成が速いから)'))
291
+ * ストリーミングレプリケーション要\n
292
+ →pg_bigm
293
+
294
+ = 参考情報
295
+
296
+ (('tag:center'))
297
+ PGroongaでも\n
298
+ レプリケーションできる!
299
+
300
+ (('tag:margin-top'))
301
+ pg_shardとPGroongaを使った\n
302
+ レプリケーション対応の\n
303
+ 高速日本語全文検索可能な\n
304
+ PostgreSQLクラスターの作り方\n
305
+ (('note:http://www.clear-code.com/blog/2015/5/18.html'))
data/theme.rb ADDED
@@ -0,0 +1,5 @@
1
+ @groonga_product = "pgroonga"
2
+
3
+ @title_slide_title_font_size = @xx_large_font_size * 0.8
4
+
5
+ include_theme("groonga")
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-kou-postgresql-unconference-tokyo-2015
3
+ version: !ruby/object:Gem::Version
4
+ version: 2015.5.30.0
5
+ platform: ruby
6
+ authors:
7
+ - Kouhei Sutou
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-24 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: PostgreSQLアンカンファレンス@東京(2015/5/30)でPostgreSQLの日本語全文検索まわりについて紹介した資料です。
28
+ email:
29
+ - kou@clear-code.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - README.rd
36
+ - Rakefile
37
+ - config.yaml
38
+ - pdf/postgresql-unconference-tokyo-2015-postgresql-japanese-full-text-search-like-pg-bigm-pgroonga.pdf
39
+ - postgresql-japanese-full-text-search-like-pg-bigm-pgroonga.rab
40
+ - theme.rb
41
+ homepage: http://slide.rabbit-shocker.org/authors/kou/postgresql-unconference-tokyo-2015/
42
+ licenses:
43
+ - CC BY-SA 4.0
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.2.2
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: PostgreSQLで日本語全文検索 - LIKEとpg_bigmとPGroonga
65
+ test_files: []