rabbit-slide-komainu8-postgresql-conference-japan-2019 2019.11.15.0
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/Images/1.png +0 -0
- data/Images/2.png +0 -0
- data/Images/3.png +0 -0
- data/Images/4.png +0 -0
- data/Images/5.png +0 -0
- data/Images/6.png +0 -0
- data/Images/7.png +0 -0
- data/Images/8.png +0 -0
- data/Images/9.png +0 -0
- data/Images/Amazon_RDS.png +0 -0
- data/Images/Amazon_RDS_backup.png +0 -0
- data/Images/Amazon_RDS_hw_change.png +0 -0
- data/Images/Amazon_RDS_optimization.png +0 -0
- data/Images/Amazon_RDS_replication.png +0 -0
- data/Images/Amazon_RDS_scaling1.png +0 -0
- data/Images/Amazon_RDS_scaling2.png +0 -0
- data/Images/Amazon_RDS_structure.png +0 -0
- data/Images/PostgreSQL_logo.3colors.120x120.png +0 -0
- data/Images/Self-introduction.png +0 -0
- data/Images/can_not_install.png +0 -0
- data/Images/element_pgroonga.png +0 -0
- data/Images/elements1.png +0 -0
- data/Images/elements2.png +0 -0
- data/Images/elements3.png +0 -0
- data/Images/logical_replication1.png +0 -0
- data/Images/logical_replication2.png +0 -0
- data/Images/logical_replication_EC2_destroy.png +0 -0
- data/Images/logical_replication_EC2_new.png +0 -0
- data/Images/logical_replication_cannot_search.png +0 -0
- data/Images/logical_replication_load_barance.png +0 -0
- data/Images/logical_replication_load_up.png +0 -0
- data/Images/logical_replication_read_only.png +0 -0
- data/Images/logical_replication_slow.png +0 -0
- data/Images/logical_replication_write_only.png +0 -0
- data/Images/pgroonga_sql.png +0 -0
- data/Images/pgroonga_vs_pg_bigm.png +0 -0
- data/Images/search-pgroonga-pg-bigm.pdf +0 -0
- data/Images/structure1.png +0 -0
- data/README.md +61 -0
- data/Rakefile +17 -0
- data/config.yaml +28 -0
- data/logical-replication-and-full-text-search.rab +513 -0
- data/pdf/postgresql-conference-japan-2019-logical-replication-and-full-text-search.pdf +0 -0
- data/theme.rb +5 -0
- metadata +129 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 733c5d87e69d4fe150a00a691ccae3a0717e30116fd6b47a438bc318da286be8
|
4
|
+
data.tar.gz: e1e7bb417331f1c388c433a847d97f1b31fe08af61ee846be3bce6b72f3cceec
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 604237ade89dd330889f595a78c30bf45fe3bdb445ee38818b30df34291c114ac7616f97aeeed2422683e9147b86d912a1e0f8c5105633f73079cfb52c8178df
|
7
|
+
data.tar.gz: 0d665bb1e501ba4385bf9a5ed84dae332cd1743739f13824626eb0bb463f4ebc378191d3faf92b713abfef7b5d06899eb6db1816043f6fdf051f855cb80f8006
|
data/.rabbit
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
logical-replication-and-full-text-search.rab
|
data/Images/1.png
ADDED
Binary file
|
data/Images/2.png
ADDED
Binary file
|
data/Images/3.png
ADDED
Binary file
|
data/Images/4.png
ADDED
Binary file
|
data/Images/5.png
ADDED
Binary file
|
data/Images/6.png
ADDED
Binary file
|
data/Images/7.png
ADDED
Binary file
|
data/Images/8.png
ADDED
Binary file
|
data/Images/9.png
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/README.md
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# Amazon RDS+EC2+PGroonga+ロジカルレプリケーションを使った低コスト高速全文検索
|
2
|
+
|
3
|
+
PostgreSQL で使用できる全文検索の拡張に PGroonga という高速で高性能な拡張があります。 PGroonga は、全言語対応の超高速全文検索機能を PostgreSQL で使えるようにする拡張で、 安定して高速で、かつ高機能(同義語、表記ゆれや異字体への対応、類似文書検索などが使えます)です。
|
4
|
+
|
5
|
+
Amazon RDS は Amazon がクラウド上で提供する RDBS サービスで、データベースのインストールや パッチ適用、スケールアウト、バックアップなどを Amazon が面倒をみてくれるため、 運用上の手間を大幅に減らすことができます。
|
6
|
+
|
7
|
+
Amazon RDS は、とても便利なのですが、拡張機能を自由にインストールすることができません。 以下の URL の一覧にある拡張しか使えません。
|
8
|
+
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.Extensions.11x
|
9
|
+
|
10
|
+
PGroonga も使えないため、日本語を始めとする多言語対応の超高速全文検索機能を Amazon RDS では使うことができません。
|
11
|
+
|
12
|
+
そこで、PostgreSQL 10 から使えるようになった、ロジカルレプリケーションと Amazon EC2 上にインストールした PostgreSQL と PGroonga を使って RDS のメリットである、 運用の負担を少なくしつつ、PGroonga を使用して高速で高機能な全文検索ができるような構成を考えました。
|
13
|
+
|
14
|
+
本発表では、どのような構成で Amazon RDS のメリットを活かしつつ、Amazon EC2 上で PGroonga を使った全文検索ができるのかを紹介します。
|
15
|
+
|
16
|
+
## ライセンス
|
17
|
+
|
18
|
+
### スライド
|
19
|
+
|
20
|
+
CC BY-SA 4.0
|
21
|
+
|
22
|
+
原著作者:堀本泰弘
|
23
|
+
|
24
|
+
### Groonga・PGroonga・Mroonga・Rroongaのロゴ
|
25
|
+
|
26
|
+
CC BY 3.0
|
27
|
+
|
28
|
+
原著作者:Groongaプロジェクト
|
29
|
+
|
30
|
+
### クリアコードのロゴ
|
31
|
+
|
32
|
+
CC BY-SA 4.0
|
33
|
+
|
34
|
+
原著作者:株式会社クリアコード
|
35
|
+
|
36
|
+
### PostgreSQL Elephant ロゴ
|
37
|
+
|
38
|
+
The PostgreSQL Licence
|
39
|
+
|
40
|
+
原著作者:The PostgreSQL Community Association of Canada
|
41
|
+
|
42
|
+
## 作者向け
|
43
|
+
|
44
|
+
### 表示
|
45
|
+
|
46
|
+
rake
|
47
|
+
|
48
|
+
### 公開
|
49
|
+
|
50
|
+
rake publish
|
51
|
+
|
52
|
+
## 閲覧者向け
|
53
|
+
|
54
|
+
### インストール
|
55
|
+
|
56
|
+
gem install rabbit-slide-komainu8-postgresql-conference-japan-2019
|
57
|
+
|
58
|
+
### 表示
|
59
|
+
|
60
|
+
rabbit rabbit-slide-komainu8-postgresql-conference-japan-2019.gem
|
61
|
+
|
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("Images/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
spec.add_runtime_dependency("rabbit-theme-groonga")
|
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,28 @@
|
|
1
|
+
---
|
2
|
+
id: postgresql-conference-japan-2019
|
3
|
+
base_name: logical-replication-and-full-text-search
|
4
|
+
tags:
|
5
|
+
- rabbit
|
6
|
+
- postgresql
|
7
|
+
- pgcon19j
|
8
|
+
- fts
|
9
|
+
- search
|
10
|
+
- pgroonga
|
11
|
+
- groonga
|
12
|
+
presentation_date: 2019-11-15
|
13
|
+
version: 2019.11.15.0
|
14
|
+
licenses:
|
15
|
+
- CC-BY-SA-4.0
|
16
|
+
- CC-BY-3.0
|
17
|
+
slideshare_id:
|
18
|
+
speaker_deck_id:
|
19
|
+
ustream_id:
|
20
|
+
vimeo_id:
|
21
|
+
youtube_id:
|
22
|
+
author:
|
23
|
+
markup_language: :rd
|
24
|
+
name: 堀本泰弘
|
25
|
+
email: horimoto@clear-code.com
|
26
|
+
rubygems_user: komainu8
|
27
|
+
slideshare_user:
|
28
|
+
speaker_deck_user:
|
@@ -0,0 +1,513 @@
|
|
1
|
+
= Amazon RDS+EC2+PGroonga+ロジカルレプリケーション\nを使った低コスト\n高速全文検索
|
2
|
+
|
3
|
+
: author
|
4
|
+
堀本泰弘
|
5
|
+
: institution
|
6
|
+
クリアコード
|
7
|
+
: content-source
|
8
|
+
PostgreSQL Conference Japan 2019
|
9
|
+
: date
|
10
|
+
2019-11-15
|
11
|
+
: start-time
|
12
|
+
2019-11-15T14:10:00+09:00
|
13
|
+
: end-time
|
14
|
+
2019-11-15T14:52:00+09:00
|
15
|
+
: theme
|
16
|
+
.
|
17
|
+
|
18
|
+
= 自己紹介
|
19
|
+
|
20
|
+
# image
|
21
|
+
# src = Images/Self-introduction.png
|
22
|
+
# relative_height = 107
|
23
|
+
|
24
|
+
= 自己紹介
|
25
|
+
|
26
|
+
* 他のOSSへもコントリビュート
|
27
|
+
* 昨日、PostgreSQLのドキュメントの改善を提案
|
28
|
+
* 問題は((*「開発元」*))で修正が弊社の\nポリシー
|
29
|
+
|
30
|
+
= 今日のテーマ
|
31
|
+
|
32
|
+
なるべく((*楽*))に\n((*高機能で高速な全文検索*))\nがしたい
|
33
|
+
|
34
|
+
= 実現のための要素
|
35
|
+
|
36
|
+
# image
|
37
|
+
# src = Images/elements1.png
|
38
|
+
# relative_height = 108
|
39
|
+
|
40
|
+
= 特に大事な要素
|
41
|
+
|
42
|
+
# image
|
43
|
+
# src = Images/elements2.png
|
44
|
+
# relative_height = 108
|
45
|
+
|
46
|
+
= 楽
|
47
|
+
|
48
|
+
# image
|
49
|
+
# src = Images/Amazon_RDS.png
|
50
|
+
# relative_height = 108
|
51
|
+
|
52
|
+
= 楽
|
53
|
+
|
54
|
+
なぜ楽なのか?
|
55
|
+
|
56
|
+
= 設定が楽
|
57
|
+
|
58
|
+
# image
|
59
|
+
# src = Images/Amazon_RDS_optimization.png
|
60
|
+
# relative_height = 120
|
61
|
+
|
62
|
+
= 構築が楽
|
63
|
+
|
64
|
+
# image
|
65
|
+
# src = Images/Amazon_RDS_structure.png
|
66
|
+
# relative_height = 100
|
67
|
+
|
68
|
+
= スケールアップが楽
|
69
|
+
|
70
|
+
# image
|
71
|
+
# src = Images/Amazon_RDS_scaling1.png
|
72
|
+
# relative_height = 105
|
73
|
+
|
74
|
+
= スケールアップが楽
|
75
|
+
|
76
|
+
# image
|
77
|
+
# src = Images/Amazon_RDS_scaling2.png
|
78
|
+
# relative_height = 105
|
79
|
+
|
80
|
+
= 障害対策が楽
|
81
|
+
|
82
|
+
# image
|
83
|
+
# src = Images/Amazon_RDS_replication.png
|
84
|
+
# relative_height = 105
|
85
|
+
|
86
|
+
= 障害対策が楽
|
87
|
+
|
88
|
+
# image
|
89
|
+
# src = Images/Amazon_RDS_backup.png
|
90
|
+
# relative_height = 105
|
91
|
+
|
92
|
+
= 障害対策が楽
|
93
|
+
|
94
|
+
# image
|
95
|
+
# src = Images/Amazon_RDS_hw_change.png
|
96
|
+
# relative_height = 105
|
97
|
+
|
98
|
+
= 今日のテーマ
|
99
|
+
|
100
|
+
なるべく((*楽*))に\n((*高機能で高速な全文検索*))\nがしたい
|
101
|
+
|
102
|
+
= 全文検索
|
103
|
+
|
104
|
+
# image
|
105
|
+
# src = Images/element_pgroonga.png
|
106
|
+
# relative_height = 108
|
107
|
+
|
108
|
+
= 全文検索
|
109
|
+
|
110
|
+
なぜPGroongaなのか?
|
111
|
+
|
112
|
+
= 対応言語
|
113
|
+
|
114
|
+
全言語対応
|
115
|
+
|
116
|
+
= 速い
|
117
|
+
|
118
|
+
高速
|
119
|
+
|
120
|
+
= 速い
|
121
|
+
|
122
|
+
ベンチマーク
|
123
|
+
|
124
|
+
= 速い
|
125
|
+
|
126
|
+
* 日本語Wikipedia
|
127
|
+
* レコード数:約90万レコード
|
128
|
+
* 平均テキストサイズ:6.7KiB
|
129
|
+
|
130
|
+
= 速い
|
131
|
+
|
132
|
+
# image
|
133
|
+
# src = Images/pgroonga_vs_pg_bigm.png
|
134
|
+
# relative_height = 108
|
135
|
+
|
136
|
+
= 速い
|
137
|
+
|
138
|
+
* ベンチマークの詳細な条件は\n以下を参照
|
139
|
+
|
140
|
+
(('tag:x-small'))
|
141
|
+
((<"https://pgroonga.github.io/ja/reference/pgroonga-versus-pg-bigm.html"|URL:https://pgroonga.github.io/ja/reference/pgroonga-versus-pg-bigm.html>))
|
142
|
+
|
143
|
+
= SQLが使える
|
144
|
+
|
145
|
+
# image
|
146
|
+
# src = Images/pgroonga_sql.png
|
147
|
+
# relative_height = 108
|
148
|
+
|
149
|
+
= 実例
|
150
|
+
|
151
|
+
具体的に\nどう書くのか?
|
152
|
+
|
153
|
+
= 実行例:テーブル定義
|
154
|
+
|
155
|
+
# coderay sql
|
156
|
+
|
157
|
+
CREATE TABLE entries (
|
158
|
+
title text,
|
159
|
+
content text
|
160
|
+
);
|
161
|
+
|
162
|
+
= 実行例:\nインデックス定義
|
163
|
+
|
164
|
+
# coderay sql
|
165
|
+
|
166
|
+
-- 全文検索用インデックス
|
167
|
+
CREATE INDEX entries_full_text_search
|
168
|
+
ON entries
|
169
|
+
--「USING pgroonga」=「PGroongaを使う」
|
170
|
+
USING pgroonga (title, content);
|
171
|
+
|
172
|
+
= 実行例:データ挿入
|
173
|
+
|
174
|
+
# coderay sql
|
175
|
+
|
176
|
+
-- 普通に挿入するだけでよい
|
177
|
+
INSERT INTO entries
|
178
|
+
VALUES ('PGroongaで高速全文検索!',
|
179
|
+
'高速に全文検索したいですね!');
|
180
|
+
|
181
|
+
= 実行例:全文検索
|
182
|
+
|
183
|
+
# coderay sql
|
184
|
+
|
185
|
+
SELECT title FROM entries
|
186
|
+
WHERE
|
187
|
+
-- &@~で全文検索
|
188
|
+
-- 「検索」と「高速」をAND検索
|
189
|
+
title &@~ '検索 高速' OR
|
190
|
+
content &@~ '検索 高速';
|
191
|
+
|
192
|
+
= 実行例:LIKE
|
193
|
+
|
194
|
+
# coderay sql
|
195
|
+
|
196
|
+
SELECT title FROM entries
|
197
|
+
WHERE
|
198
|
+
-- LIKEでもインデックスが効く
|
199
|
+
--=アプリを書き換えずに高速化可能
|
200
|
+
-- ただし&@~より性能が落ちる
|
201
|
+
title LIKE '%検索%' OR
|
202
|
+
content LIKE '%検索%';
|
203
|
+
|
204
|
+
= 機能
|
205
|
+
|
206
|
+
* 全文検索に必要そうな機能は\n一通り揃っている
|
207
|
+
* 同義語検索
|
208
|
+
* 類似文書検索
|
209
|
+
* 読みがな検索
|
210
|
+
* 入力補完 etc..
|
211
|
+
|
212
|
+
= 読みがな検索
|
213
|
+
|
214
|
+
「やきにく」\nってどう書きますか?
|
215
|
+
|
216
|
+
= 読みがな検索
|
217
|
+
|
218
|
+
* やきにく
|
219
|
+
* 焼き肉
|
220
|
+
* 焼肉
|
221
|
+
* やき肉
|
222
|
+
* ヤキニク
|
223
|
+
|
224
|
+
= 読みがな検索
|
225
|
+
|
226
|
+
当然ですがどれも「やきにく」と読みます
|
227
|
+
|
228
|
+
= 読みがな検索
|
229
|
+
|
230
|
+
* 読みが同じなので、以下は全部同じものとして扱えます
|
231
|
+
* やきにく
|
232
|
+
* 焼き肉
|
233
|
+
* 焼肉
|
234
|
+
* やき肉
|
235
|
+
* ヤキニク
|
236
|
+
|
237
|
+
= 読みがな検索
|
238
|
+
|
239
|
+
例えば\n「やきにく」で検索すると
|
240
|
+
|
241
|
+
= 読みがな検索
|
242
|
+
|
243
|
+
* 「やきにく」((*Hit!*))
|
244
|
+
* 「焼き肉」((*Hit!*))
|
245
|
+
* 「焼肉」((*Hit!*))
|
246
|
+
* 「やき肉」((*Hit!*))
|
247
|
+
* 「ヤキニク」((*Hit!*))
|
248
|
+
|
249
|
+
= 読みがな検索
|
250
|
+
|
251
|
+
異体字
|
252
|
+
|
253
|
+
= 読みがな検索
|
254
|
+
|
255
|
+
「広」と「廣」
|
256
|
+
|
257
|
+
= 読みがな検索
|
258
|
+
|
259
|
+
例えば人名の\n検索
|
260
|
+
|
261
|
+
= 読みがな検索
|
262
|
+
|
263
|
+
検索キーワード「広瀬」で
|
264
|
+
* 「広瀬」((*Hit*))
|
265
|
+
* 「廣瀬」((*Hit*))
|
266
|
+
となってほしい
|
267
|
+
|
268
|
+
= 読みがな検索
|
269
|
+
|
270
|
+
通常の検索\n
|
271
|
+
検索キーワード「広瀬」で
|
272
|
+
* 「広瀬」のみ((*Hit*))
|
273
|
+
|
274
|
+
= 読みがな検索
|
275
|
+
|
276
|
+
読みがな検索なら\n
|
277
|
+
検索キーワード「広瀬」で
|
278
|
+
* 「広瀬」((*Hit*))
|
279
|
+
* 「廣瀬」((*Hit*))
|
280
|
+
|
281
|
+
= 読みがな検索
|
282
|
+
|
283
|
+
両方ヒット!
|
284
|
+
|
285
|
+
= 読みがな検索
|
286
|
+
|
287
|
+
「広瀬」も\n「廣瀬」も\n読みが同じ
|
288
|
+
|
289
|
+
= 他にも
|
290
|
+
|
291
|
+
* それっぽい順でソート
|
292
|
+
* キーワードハイライト
|
293
|
+
* キーワードの周辺テキスト表示
|
294
|
+
|
295
|
+
= 他にも
|
296
|
+
|
297
|
+
* 電話番号検索
|
298
|
+
* 090-1234-5678 と 090 1234 5678、(090)1234-5678 等
|
299
|
+
* fuzzy検索
|
300
|
+
* typo対策
|
301
|
+
* テクノロジーとテノクロジー
|
302
|
+
|
303
|
+
= 他にも
|
304
|
+
|
305
|
+
継続的に\nメンテナンス\nされている
|
306
|
+
|
307
|
+
= 他にも
|
308
|
+
|
309
|
+
PostgreSQL12に対応!(昨日)
|
310
|
+
|
311
|
+
= 高機能で高速
|
312
|
+
|
313
|
+
PGroongaなら((*高機能で高速に全文検索*))できる
|
314
|
+
|
315
|
+
= Amazon RDS + PGroonga
|
316
|
+
|
317
|
+
しかし。。。
|
318
|
+
|
319
|
+
= Amazon RDS + PGroonga
|
320
|
+
|
321
|
+
# image
|
322
|
+
# src = Images/can_not_install.png
|
323
|
+
# relative_height = 108
|
324
|
+
|
325
|
+
= Amazon RDS + PGroonga
|
326
|
+
|
327
|
+
他の2つの要素の出番!
|
328
|
+
|
329
|
+
= Amazon RDS + PGroonga
|
330
|
+
|
331
|
+
# image
|
332
|
+
# src = Images/elements3.png
|
333
|
+
# relative_height = 108
|
334
|
+
|
335
|
+
= 構成
|
336
|
+
|
337
|
+
# image
|
338
|
+
# src = Images/structure1.png
|
339
|
+
# relative_height = 108
|
340
|
+
|
341
|
+
= ロジカル\nレプリケーションの特徴
|
342
|
+
|
343
|
+
複製元と複製先の構造が同一でなくてもよい
|
344
|
+
|
345
|
+
= ロジカル\nレプリケーションの特徴
|
346
|
+
|
347
|
+
# image
|
348
|
+
# src = Images/logical_replication1.png
|
349
|
+
# relative_height = 108
|
350
|
+
|
351
|
+
= ロジカル\nレプリケーションの特徴
|
352
|
+
|
353
|
+
# image
|
354
|
+
# src = Images/logical_replication2.png
|
355
|
+
# relative_height = 108
|
356
|
+
|
357
|
+
= 検索
|
358
|
+
|
359
|
+
# image
|
360
|
+
# src = Images/logical_replication_read_only.png
|
361
|
+
# relative_height = 105
|
362
|
+
|
363
|
+
= 更新
|
364
|
+
|
365
|
+
# image
|
366
|
+
# src = Images/logical_replication_write_only.png
|
367
|
+
# relative_height = 105
|
368
|
+
|
369
|
+
= 問題点
|
370
|
+
|
371
|
+
Subscriberが\n1台しかない
|
372
|
+
|
373
|
+
= 問題点
|
374
|
+
|
375
|
+
* リクエストが増加しつづけた場合、この構成では耐えられない
|
376
|
+
|
377
|
+
= 負荷分散
|
378
|
+
|
379
|
+
# image
|
380
|
+
# src = Images/logical_replication_load_barance.png
|
381
|
+
# relative_height = 105
|
382
|
+
|
383
|
+
= 復旧
|
384
|
+
|
385
|
+
検索できなくなったら
|
386
|
+
|
387
|
+
= 復旧
|
388
|
+
|
389
|
+
使い捨てる\n
|
390
|
+
復旧は\nがんばらない
|
391
|
+
|
392
|
+
= 復旧
|
393
|
+
|
394
|
+
# image
|
395
|
+
# src = Images/logical_replication_cannot_search.png
|
396
|
+
# relative_height = 105
|
397
|
+
|
398
|
+
= 復旧
|
399
|
+
|
400
|
+
# image
|
401
|
+
# src = Images/logical_replication_EC2_destroy.png
|
402
|
+
# relative_height = 105
|
403
|
+
|
404
|
+
= 復旧
|
405
|
+
|
406
|
+
# image
|
407
|
+
# src = Images/logical_replication_EC2_new.png
|
408
|
+
# relative_height = 105
|
409
|
+
|
410
|
+
= サービス開始時間
|
411
|
+
|
412
|
+
もう一つの問題
|
413
|
+
|
414
|
+
= サービス開始時間
|
415
|
+
|
416
|
+
データが増えると復旧が遅延
|
417
|
+
|
418
|
+
= サービス開始時間
|
419
|
+
|
420
|
+
# image
|
421
|
+
# src = Images/logical_replication_slow.png
|
422
|
+
# relative_height = 105
|
423
|
+
|
424
|
+
= 停止時間の見積もり
|
425
|
+
|
426
|
+
許容できる停止時間は?
|
427
|
+
|
428
|
+
= 停止時間の見積もり
|
429
|
+
|
430
|
+
停止時間を\n見積もる
|
431
|
+
|
432
|
+
= 停止時間の見積もり
|
433
|
+
|
434
|
+
* 例えば...
|
435
|
+
* サービス復旧時間:1日
|
436
|
+
* 新しくAmazon EC2を作成して、サービス開始できるまでの時間
|
437
|
+
* 故障:1ヶ月に1回の頻度で故障
|
438
|
+
|
439
|
+
= 停止時間の見積もり
|
440
|
+
|
441
|
+
* リクエスト:
|
442
|
+
* 各EC2には均等にリクエストが振り分けられる
|
443
|
+
* サービス継続:
|
444
|
+
* Amazon EC2が3台あれば、サービスを提供可能なくらいの負荷
|
445
|
+
|
446
|
+
= 停止時間の見積もり
|
447
|
+
|
448
|
+
* Amazon EC2を3台で運用する場合
|
449
|
+
* 1台でも故障するとサービス継続不可
|
450
|
+
|
451
|
+
= 停止時間の見積もり
|
452
|
+
|
453
|
+
# image
|
454
|
+
# src = Images/logical_replication_load_up.png
|
455
|
+
# relative_height = 105
|
456
|
+
|
457
|
+
= 停止時間の見積もり
|
458
|
+
|
459
|
+
* この場合の稼働率
|
460
|
+
|
461
|
+
* 平均故障間隔 = \n365*24/12 = 730時間
|
462
|
+
* 平均復旧時間 = 24時間
|
463
|
+
* 稼働率 = 730/754 = 0.9681697612732095 ≒96.8%
|
464
|
+
|
465
|
+
= 停止時間の見積もり
|
466
|
+
|
467
|
+
つまり
|
468
|
+
|
469
|
+
= 停止時間の見積もり
|
470
|
+
|
471
|
+
* この構成では、1ヶ月に1日程度システムが停止する
|
472
|
+
|
473
|
+
= 停止時間の見積もり
|
474
|
+
|
475
|
+
* では、4台運用の場合ではどうなるのか?
|
476
|
+
|
477
|
+
= 停止時間の見積もり
|
478
|
+
|
479
|
+
* 1台あたりの稼働率:96.8%
|
480
|
+
* 1台あたりの故障率:\n 100% - 96.8% = 3.2%
|
481
|
+
* 2台同時に故障する確率:\n 0.032*0.032≒0.001=0.1%
|
482
|
+
|
483
|
+
= 停止時間の見積もり
|
484
|
+
|
485
|
+
* したがって、1ヶ月に約45分程度システムが停止する
|
486
|
+
|
487
|
+
= まとめ
|
488
|
+
|
489
|
+
# image
|
490
|
+
# src = Images/logical_replication_load_barance.png
|
491
|
+
# relative_height = 105
|
492
|
+
|
493
|
+
= まとめ
|
494
|
+
|
495
|
+
なるべく((*楽*))に\n((*高機能で高速な全文検索*))が\nできました!
|
496
|
+
|
497
|
+
= 最後に
|
498
|
+
|
499
|
+
* PGroongaについての疑問等は、GitHub、Gitterにて
|
500
|
+
* ドキュメントも充実
|
501
|
+
* ((<"https://pgroonga.github.io/ja/"|URL:https://pgroonga.github.io/ja/>))
|
502
|
+
|
503
|
+
= 最後に
|
504
|
+
|
505
|
+
より突っ込んだお話がしたい場合は↓↓\n
|
506
|
+
問い合わせ先:
|
507
|
+
|
508
|
+
(('tag:x-small'))
|
509
|
+
((<"https://www.clear-code.com/contact/?type=groonga"|URL:https://www.clear-code.com/contact/?type=groonga>))
|
510
|
+
|
511
|
+
= 最後に
|
512
|
+
|
513
|
+
ご静聴ありがとうございました
|
Binary file
|
data/theme.rb
ADDED
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-komainu8-postgresql-conference-japan-2019
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2019.11.15.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- 堀本泰弘
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-11-18 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
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rabbit-theme-groonga
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: |-
|
42
|
+
PostgreSQL で使用できる全文検索の拡張に PGroonga という高速で高性能な拡張があります。 PGroonga は、全言語対応の超高速全文検索機能を PostgreSQL で使えるようにする拡張で、 安定して高速で、かつ高機能(同義語、表記ゆれや異字体への対応、類似文書検索などが使えます)です。
|
43
|
+
|
44
|
+
Amazon RDS は Amazon がクラウド上で提供する RDBS サービスで、データベースのインストールや パッチ適用、スケールアウト、バックアップなどを Amazon が面倒をみてくれるため、 運用上の手間を大幅に減らすことができます。
|
45
|
+
|
46
|
+
Amazon RDS は、とても便利なのですが、拡張機能を自由にインストールすることができません。 以下の URL の一覧にある拡張しか使えません。
|
47
|
+
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.Extensions.11x
|
48
|
+
|
49
|
+
PGroonga も使えないため、日本語を始めとする多言語対応の超高速全文検索機能を Amazon RDS では使うことができません。
|
50
|
+
|
51
|
+
そこで、PostgreSQL 10 から使えるようになった、ロジカルレプリケーションと Amazon EC2 上にインストールした PostgreSQL と PGroonga を使って RDS のメリットである、 運用の負担を少なくしつつ、PGroonga を使用して高速で高機能な全文検索ができるような構成を考えました。
|
52
|
+
|
53
|
+
本発表では、どのような構成で Amazon RDS のメリットを活かしつつ、Amazon EC2 上で PGroonga を使った全文検索ができるのかを紹介します。
|
54
|
+
email:
|
55
|
+
- horimoto@clear-code.com
|
56
|
+
executables: []
|
57
|
+
extensions: []
|
58
|
+
extra_rdoc_files: []
|
59
|
+
files:
|
60
|
+
- ".rabbit"
|
61
|
+
- Images/1.png
|
62
|
+
- Images/2.png
|
63
|
+
- Images/3.png
|
64
|
+
- Images/4.png
|
65
|
+
- Images/5.png
|
66
|
+
- Images/6.png
|
67
|
+
- Images/7.png
|
68
|
+
- Images/8.png
|
69
|
+
- Images/9.png
|
70
|
+
- Images/Amazon_RDS.png
|
71
|
+
- Images/Amazon_RDS_backup.png
|
72
|
+
- Images/Amazon_RDS_hw_change.png
|
73
|
+
- Images/Amazon_RDS_optimization.png
|
74
|
+
- Images/Amazon_RDS_replication.png
|
75
|
+
- Images/Amazon_RDS_scaling1.png
|
76
|
+
- Images/Amazon_RDS_scaling2.png
|
77
|
+
- Images/Amazon_RDS_structure.png
|
78
|
+
- Images/PostgreSQL_logo.3colors.120x120.png
|
79
|
+
- Images/Self-introduction.png
|
80
|
+
- Images/can_not_install.png
|
81
|
+
- Images/element_pgroonga.png
|
82
|
+
- Images/elements1.png
|
83
|
+
- Images/elements2.png
|
84
|
+
- Images/elements3.png
|
85
|
+
- Images/logical_replication1.png
|
86
|
+
- Images/logical_replication2.png
|
87
|
+
- Images/logical_replication_EC2_destroy.png
|
88
|
+
- Images/logical_replication_EC2_new.png
|
89
|
+
- Images/logical_replication_cannot_search.png
|
90
|
+
- Images/logical_replication_load_barance.png
|
91
|
+
- Images/logical_replication_load_up.png
|
92
|
+
- Images/logical_replication_read_only.png
|
93
|
+
- Images/logical_replication_slow.png
|
94
|
+
- Images/logical_replication_write_only.png
|
95
|
+
- Images/pgroonga_sql.png
|
96
|
+
- Images/pgroonga_vs_pg_bigm.png
|
97
|
+
- Images/search-pgroonga-pg-bigm.pdf
|
98
|
+
- Images/structure1.png
|
99
|
+
- README.md
|
100
|
+
- Rakefile
|
101
|
+
- config.yaml
|
102
|
+
- logical-replication-and-full-text-search.rab
|
103
|
+
- pdf/postgresql-conference-japan-2019-logical-replication-and-full-text-search.pdf
|
104
|
+
- theme.rb
|
105
|
+
homepage: https://slide.rabbit-shocker.org/authors/komainu8/postgresql-conference-japan-2019/
|
106
|
+
licenses:
|
107
|
+
- CC-BY-SA-4.0
|
108
|
+
- CC-BY-3.0
|
109
|
+
metadata: {}
|
110
|
+
post_install_message:
|
111
|
+
rdoc_options: []
|
112
|
+
require_paths:
|
113
|
+
- lib
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
requirements: []
|
125
|
+
rubygems_version: 3.0.3
|
126
|
+
signing_key:
|
127
|
+
specification_version: 4
|
128
|
+
summary: Amazon RDS+EC2+PGroonga+ロジカルレプリケーションを使った低コスト高速全文検索
|
129
|
+
test_files: []
|