rabbit-slide-kou-postgresql-unconference-tokyo-2015 2015.5.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rabbit +1 -0
- data/README.rd +33 -0
- data/Rakefile +17 -0
- data/config.yaml +26 -0
- data/pdf/postgresql-unconference-tokyo-2015-postgresql-japanese-full-text-search-like-pg-bigm-pgroonga.pdf +0 -0
- data/postgresql-japanese-full-text-search-like-pg-bigm-pgroonga.rab +305 -0
- data/theme.rb +5 -0
- metadata +65 -0
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
|
Binary file
|
@@ -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
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: []
|