SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
Copyright © 2013 NTT DATA Corporation
NTTデータ
基盤システム事業本部
澤田雅彦
pg_bigm(ピージーバイグラム)を用いた
全文検索のしくみ (後編)
第27回しくみ+アプリケーション勉強会(10/5)
2Copyright © 2013NTT DATA Corporation
自己紹介
 名前
澤田 雅彦(さわだ まさひこ)
 所属
NTTデータ 基盤システム事業本部
2年目です
やっていること
去年:pg_bigmの開発、サポート
今年:レプリケーション関係
3Copyright © 2013NTT DATA Corporation
INDEX
1.前編の復習
2.性能測定(後編)
3.pg_bigm独自機能
4.デモ
5.まとめ
Copyright © 2013 NTT DATA Corporation 4
前編の復習
5Copyright © 2013 NTT DATA Corporation
DBの全文検索ってなに?
SQL発行
DB
:
:
 テキスト型の列を持つテーブルから、キーワードを含むレコードを検索すること
 全文検索では検索対象のデータが多い
 全文検索用のインデックスを作成することで高速にできる
キーワード:「オープンソース」
6Copyright © 2013 NTT DATA Corporation
pg_bigmとpg_trgm
pg_bigm pg_trgm
対応バージョン 9.1~ 9.1~
開発主体 NTTデータ
PostgreSQL
コミュニティ
日本語対応 ○ △
1,2文字検索 ○ ×
(インデックスを有効に使えない)
類似度検索 × ○
利用できるインデックス
の種類
GINのみ GINとGiST
7Copyright © 2013 NTT DATA Corporation
pg_bigm
pg_trgm
 pg_bigmとpg_trgmのインデックス登録時の
挙動の説明をしていきます
 pg_bigmではキーを文字列で持つ
 pg_trgmではキーをINT値で持つ
pg_bigm,pg_trgmのインデックス登録
キー TID
△△O 100
△OS 100
OSS 100
SSS 100
CRC1 100
CRC2 100
①3文字分割
「△△O」、「△OS」、
「OSS」、「SSS」、
「SSあ」、「Sあ△」
②重複削除
「△△O」、「△OS」、
「OSS」、「SSS」、
「CRC1」、「CRC2」
①2文字分割
「△O」、「OS」、
「SS」、「SS」、
「Sあ」、「あ△」
②重複削除
「△O」、「OS」、
「SS」
「Sあ」、「あ△」
キー TID
△O 100
OS 100
SS 100
Sあ 100
あ△ 100
TID データ
100 OSSSあ
キーワード
‘OSSSあ’
INSERT
3Byte以上の場合は
ハッシュ変換される
INT型で格納される
TEXT型で格納される
8Copyright © 2013 NTT DATA Corporation
インデックス検索時の挙動
①2文字分割
「OS」
「Sぐ」
「ぐれ」
 キーワード‘OSぐれ’からTID100のデータが検索されるまでの
挙動を解説します
②インデックススキャン
TID データ
100 POSぐれ
200 POSぐる
300 ぽSぐれ
キー TID
△P 100, 200
△ぽ 300
OS 100, 200
PO 100, 200
Sぐ 100, 200, 300
る△ 200
れ△ 100, 300
ぐれ 100, 300
: :
③TID候補決
定
→TID 100
④Recheck
検索
キーワード
‘OSぐれ’
pg_bigmの場合
Copyright © 2013 NTT DATA Corporation 9
性能測定(後編)
10Copyright © 2013 NTT DATA Corporation
性能測定の概要
1.インデックス作成時間
2.インデックスサイズ
3.検索時間
4.データ挿入時間
測定対象
pg_bigm
pg_trgm
測定項目
以下の項目を実施
11Copyright © 2013 NTT DATA Corporation
測定環境
項目 詳細
CPU Core i7-3630QM
メモリ 16GB
ディスク 512GB SSD
OS CentOS 6.4
DBMS PostgreSQL 9.2.4
ハードウェア環境
ソフトウェア環境
12Copyright © 2013 NTT DATA Corporation
テストデータ
項目 詳細
データソース 日本語Wikipedia
テーブルサイズ 34GB
データ件数 2.5億件
テーブル定義 CREATE TABLE hoge (col text)
 以下のデータを用いて性能測定を実施した
13Copyright © 2013 NTT DATA Corporation
作成時間とインデックスサイズ
対象 インデックス作成クエリ
pg_bigm CREATE INDEX hoge_idx ON hoge USING gin(col gin_bigm_ops);
pg_trgm CREATE INDEX hoge_idx ON hoge USING gin(col gin_trgm_ops);
データ全件をロード後、以下のクエリでインデックスを作成
それぞれの作成時間と、インデックスサイズを10回計測
14Copyright © 2013 NTT DATA Corporation
作成時間とインデックスサイズ
pg_bigm pg_trgm
インデックスサイズ 63GB 78GB
インデックス作成時間 約3時間 約5時間
結果
pg_bigmの方がインデックスサイズが小さく、作成時間が短
い結果となった
考察
2文字ずつの分割の方がキーの重複が多いため、pg_bigmの方
がインデックスサイズが小さい
→詳細は次のスライド
 pg_trgmではインデックス作成時に各3-gram文字列をハッ
シュ変換するため、pg_bigmよりも時間がかかる
15Copyright © 2013 NTT DATA Corporation
インデックスキーの重複
「あいあい」を2文字、3文字分割する場合
pg_bigm
△あ
あい
いあ
あい
い△
pg_trgm
△△あ
△あい
あいあ
いあい
あい△
16Copyright © 2013 NTT DATA Corporation
インデックスキーの重複
「あいあい」を2文字、3文字分割して追加する場合
pg_bigm
△あ
あい
いあ
あい
い△
pg_trgm
△△あ
△あい
あいあ
いあい
あい△
5個4個
重複を削除
17Copyright © 2013 NTT DATA Corporation
インデックスキーの重複
さらに「あいとあい」を2文字、3文字分割して追加する場合
pg_bigm
△あ
あい
いあ
い△
pg_trgm
△△あ
△あい
あいあ
いあい
あい△
5個
4個
18Copyright © 2013 NTT DATA Corporation
インデックスキーの重複
さらに「あいとあい」を2文字、3文字分割して追加する場合
pg_bigm
△あ
あい
いあ
い△
いと
とあ
2個追加
pg_trgm
△△あ
△あい
あいあ
いあい
あい△
あいと
いとあ
とあい
3個追加新しく作られる
キーの数が違う
19Copyright © 2013 NTT DATA Corporation
検索時間の検証概要
検索時間の検証では以下の2つの検索時間をそれぞ
れ20回測定
①検索結果が0件、1件、100件…での検索
②検索文字数が1文字、2文字、3文字…での検索
検索クエリはpg_bigm、pg_trgm共に下記のクエリを実行
対象 検索クエリ
pg_bigm
SELECT col FROM hoge WHERE col LIKE ‘%東京都%’;
pg_trgm
20Copyright © 2013 NTT DATA Corporation
検索時間の検証概要 ~検索文字列①~
検索文字列 結果件数
一日分 0件
明治五 1件
平成一 100件
上野駅 1万件
衆議院 10万件
東京都 60万件
 検索結果件数が0件、1件、100件…となる検索文字列(3文字)を検索条件とする
 検索結果数の変化が、どのように検索時間に影響するのかを確認
21Copyright © 2013 NTT DATA Corporation
検索時間結果①
検索文字列 結果件数 pg_bigm pg_trgm SeqScan
一日分 0件 10ms 1ms 138s
明治五 1件 36ms 4ms 136s
平成一 100件 46ms 9ms 136s
上野駅 1万件 36ms 24ms 145s
衆議院 10万件 210ms 190ms 147s
東京都 60万件 1510ms 1050ms 136s
 結果
 検索結果が多い検索条件では、pg_bigmとpg_trgmとの差が開きやすい
結果となった
 考察
 次のスライドから
22Copyright © 2013 NTT DATA Corporation
pg_bigmとpg_trgmのインデックスの違い
キー TID
△東 1,2,4
東京 1,2,4
京都 1,2,3,4
都と 1
と京 1,4
都府 1,3
△京 3
京と 4
キー TID
△△東 1
△東京 1
東京都 1,2
京都と 1
都と京 1
と京都 1,4
△△京 3
△京都 3
京都府 1,3
: :
pg_trgm
pg_bigm
1 : 東京都と京都府
2 : 東京都
3 : 京都府
4 : 東京と京都
23Copyright © 2013 NTT DATA Corporation
pg_bigmとpg_trgmのインデックスの違い
一つのキーあたりの
TIDの数はpg_bigm
の方が多い
検索に影響
1 : 東京都と京都府
2 : 東京都
3 : 京都府
4 : 東京と京都
キー TID
△東 1,2,4
東京 1,2,4
京都 1,2,3,4
都と 1
と京 1,4
都府 1,3
△京 3
京と 4
pg_bigm
キー TID
△△東 1
△東京 1
東京都 1,2
京都と 1
都と京 1
と京都 1,4
△△京 3
△京都 3
京都府 1,3
: :
pg_trgm
24Copyright © 2013 NTT DATA Corporation
キー TID
△△東 1
△東京 1
東京都 1,2
京都と 1
都と京 1
と京都 1,4
△△京 3
△京都 3
京都府 1,3
: :
pg_trgm
検索への影響
1 : 東京都と京都府
2 : 東京都
3 : 京都府
4 : 東京と京都
1個TID
を参照
「京都と」で検索する場合
キー TID
△東 1,2,4
東京 1,2,4
京都 1,2,3,4
都と 1
と京 1,4
都府 1,3
△京 3
京と 4
pg_bigm
5個TID
を参照
25Copyright © 2013 NTT DATA Corporation
検索時間の検証概要 ~検索文字列②~
 1文字、2文字、3文字…の検索文字列を検索条件とする
 検索文字数の変化が、どのように検索時間に影響するかを確認
検索文字列 文字数 結果件数
駅 1文字 150万件
横浜 2文字 40万件
東京都 3文字 60万件
世田谷区 4文字 4万件
秋葉原駅前 5文字 3000件
東京特許許可局 7文字 5000件
とうきょうスカ
イツリー
11文字 50件
26Copyright © 2013 NTT DATA Corporation
検索時間結果
検索文字列 結果件数 pg_bigm pg_trgm SeqScan
駅
(1文字)
150万件 2440ms 2173000ms 141s
横浜
(2文字)
40万件 780ms 2182000ms 146s
東京都
(3文字)
60万件 1580ms 1010ms 136s
世田谷区
(4文字)
4万件 80ms 70ms 139s
秋葉原駅前
(5文字)
3000件 20ms 10ms 136s
東京特許許可局
(7文字)
5000件 390ms 140ms 133s
とうきょう
スカイツリー
(11文字)
50件 2780ms 60ms 161s
 1文字、2文字の検索では、インデックスが使えるpg_bigmが早い
 3文字以上の検索では、pg_trgmの方が早い
27Copyright © 2013 NTT DATA Corporation
pg_bigm.gin_key_limitでチューニング
 pg_bigm.gin_key_limitパラメータで検索時に使用する2-
gram文字列の個数の最大数を指定することでチューニングが可
能
「とうきょうスカイツリー」で全文検索をした場合、
2-gram文字列は、
うき,うス,きょ,とう,ょう,イツ,カイ,スカ,ツリ,リー,ー△,△と
12個 pg_bigm.gin_key_limitで
この最大数を指定
28Copyright © 2013 NTT DATA Corporation
pg_bigm.gin_key_limitでチューニング
0
500
1000
1500
2000
2500
3000
1 3 5 7 9 10 12(全て)
処
理
時
間
pg_bigm.gin_key_limit
キーワード:とうきょうスカイツリー
pg_bigm
pg_trgm
<2-gram文字列>
うき,うス,きょ,とう,ょう,イツ,カイ,スカ,ツリ,リー,ー△,△と
 pg_bigm.gin_key_limitの値を調整することで、性能改善が可能
 値が1の時は、recheck処理で多くの候補行を除いている(約21万件)
 値が3の時はpg_trgmよりも高速に処理ができた
29Copyright © 2013 NTT DATA Corporation
データ挿入時間
新規にwikipediaのデータを1000件 (約250kBのテキストファ
イル)を挿入した時の
WAL発生量
処理時間
を測定
対象 挿入クエリ
pg_bigm
COPY hoge FROM ‘/home/postgres/10000.txt’;
pg_trgm
30Copyright © 2013 NTT DATA Corporation
データ挿入時間
pg_bigm pg_trgm
WAL発生量 9*16MB 11*16MB
処理時間 10914.53ms 22906.03ms
結果
pg_bigmの方がWALの発生量が小さい
pg_bigmの方がデータ挿入時間が短い
考察
pg_trgmではキー登録時にハッシュ変換があるため、処理時
間に差が出た
Copyright © 2013 NTT DATA Corporation 31
pg_bigm独自機能
32Copyright © 2013 NTT DATA Corporation
likequery()
=# SELECT likequery(‘pg_bigmで性能が200%向上');
likequery
-----------
%pg¥_bigmで性能が200¥%向上%
(1 row)
文字列内の「%」、「_」、「¥」はエスケープされる
AP側で検索文字列のエスケープ処理を作らなくていい
実行例
33Copyright © 2013 NTT DATA Corporation
show_bigm()
=# SELECT show_bigm('全文検索モジュール');
show_bigm
-------------------------------------------------------
{ジュ,モジ,ュー,"ル ",ール,全文,文検,検索,索モ," 全"}
(1 row)
実行例
34Copyright © 2013 NTT DATA Corporation
pg_bigm.gin_key_limit
 どのユーザからでも変更可能
 2-gram文字列の個数が大きくなりやすいシステムでは、検索性能が劣化しやすい
→このパラメータで使用する最大個数を指定することで、性能問題を解決できる
 ただし、2-gram文字列の個数を減らすとrecheck処理への負担が大きくなること
に注意
 デフォルトは0(すべて使用)
=# SET pg_bigm.gin_key_limit to 10;
実行例
35Copyright © 2013 NTT DATA Corporation
pg_bigm.enable_recheck
どのユーザからでも変更可能
運用時は必ずON(デフォルト)
recheck処理のオーバーヘッドを評価するなどの、デバック時に
OFFにする
=# SET pg_bigm.enable_recheck to on;
実行例
Copyright © 2013 NTT DATA Corporation 36
デモ
37Copyright © 2013 NTT DATA Corporation
デモ
以下のデモを通して、pg_bigmのインストールや、全
文検索実行まで紹介いたします。
pg_bigmインストール
全文検索インデックス作成
全文検索
インデックスを用いた検索
SeqScanとの速度の違い
1文字、2文字での検索
Copyright © 2013 NTT DATA Corporation 38
まとめ
39Copyright © 2013 NTT DATA Corporation
まとめ
全文検索を高速に行うために、pg_bigmやpg_trgmを
用いて全文検索用インデックスを作成する
インデックスサイズ
pg_bigmの方が小さい
インデックス作成時間
pg_bigmの方が早い
検索
検索結果数が多いほど、pg_trgmの方が早い
→pg_bigm.gin_key_limit等でチューニング可能
1,2文字検索ではインデックスを使えるため
pg_bigmの方が早い
pg_bigm新バージョンリリース!
40Copyright © 2013 NTT DATA Corporation
pg_bigm新バージョンがリリース予定
 pg_bigm新バージョンでは主に以下の内容が更新されています
類似度検索も
現在開発中
Copyright © 2011 NTT DATA Corporation
Copyright © 2013 NTT DATA Corporation
Copyright © 2013 NTT DATA Corporation 42
参考資料
43Copyright © 2013 NTT DATA Corporation
(参考)ワイルドカードの有無による検索の挙動の違い
キー TID
△A 1, 2
△X 3
AB 1, 2, 3
BC 1, 2, 3
C△ 1, 3
CD 2
D△ 2
XA 1
TID データ
1 ABC
2 ABCD
3 XABC
検索キーワード キー 決定タプル
完全一致 ABC
△A
AB
C△
1
前方一致 %ABC
AB
BC
C△
1, 2
中間一致 %ABC%
AB
BC
1, 2, 3
後方一致 ABC%
△A
AB
BC
1
44Copyright © 2013 NTT DATA Corporation
(参考)Recheck処理の必要性
キー TID
東京 1
京都 1
京と 1
: :
検索ワード:
‘%東京都%’
「東京」 : TID1
「京都」 : TID1
TABL
E
INDEX
間違った結果を取って
きてしまう
INDEXを検索 TID決定
Recheck処理で再検査!
例えばこんな時。。
1 東京と京都
: :
45Copyright © 2013 NTT DATA Corporation
(参考)pg_bigm.gin_key_limitを変えた時の処理時間
pg_bigm pg_trgm
1 473.04ms
60ms
3 47.64ms
5 467.30ms
7 738.47ms
9 1015.46ms
10 2738.24ms
12(全て) 2737.42ms
46Copyright © 2013 NTT DATA Corporation
(参考)部分一致とは?
①2文字分割
「本」
②インデックススキャン
キー TID
: :
末尾 100, 200
本日 200, 300
本屋 500
本当 400
札束 200
: :
③TID候補決
定
④
Recheck
キーワード
‘%本%’
 2文字分割後、1文字のキーワードが生成された場合、部分一致を行う関数が実行される
(例)検索キーワードが’%東%’の場合など
 部分一致では1文字の検索キーワードと各キーの先頭を比較して、一致、不一致を判断す
る
 pg_bigmでは部分一致関数を実装しているため、2文字”以下”の検索ができる

Contenu connexe

Tendances

PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
問合せ最適化インサイド
問合せ最適化インサイド問合せ最適化インサイド
問合せ最適化インサイドTakahiro Itagaki
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)NTT DATA Technology & Innovation
 
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことMasahiko Sawada
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)NTT DATA Technology & Innovation
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報Masahiko Sawada
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くPostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くHiroya Kabata
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)NTT DATA Technology & Innovation
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャKohei KaiGai
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)NTT DATA Technology & Innovation
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
Google Cloud ベストプラクティス:Google BigQuery 編 - 03 : パフォーマンスとコストの最適化
Google Cloud ベストプラクティス:Google BigQuery 編 - 03 : パフォーマンスとコストの最適化Google Cloud ベストプラクティス:Google BigQuery 編 - 03 : パフォーマンスとコストの最適化
Google Cloud ベストプラクティス:Google BigQuery 編 - 03 : パフォーマンスとコストの最適化Google Cloud Platform - Japan
 

Tendances (20)

PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
問合せ最適化インサイド
問合せ最適化インサイド問合せ最適化インサイド
問合せ最適化インサイド
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くPostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解く
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
 
systemd 再入門
systemd 再入門systemd 再入門
systemd 再入門
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
Google Cloud ベストプラクティス:Google BigQuery 編 - 03 : パフォーマンスとコストの最適化
Google Cloud ベストプラクティス:Google BigQuery 編 - 03 : パフォーマンスとコストの最適化Google Cloud ベストプラクティス:Google BigQuery 編 - 03 : パフォーマンスとコストの最適化
Google Cloud ベストプラクティス:Google BigQuery 編 - 03 : パフォーマンスとコストの最適化
 

En vedette

トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介
Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介
Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介Ryuichiro Munechika
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)NTT DATA OSS Professional Services
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成Hiroshi Yamaguchi
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
How to Help a Jamaican Come on Time - Time-Based Productivity via Psychology ...
How to Help a Jamaican Come on Time - Time-Based Productivity via Psychology ...How to Help a Jamaican Come on Time - Time-Based Productivity via Psychology ...
How to Help a Jamaican Come on Time - Time-Based Productivity via Psychology ...Francis Wade
 
Get to Inbox Zero
Get to Inbox ZeroGet to Inbox Zero
Get to Inbox ZeroPurple Dog
 
Como submeter seu case - CONIP 2017
Como submeter seu case - CONIP 2017Como submeter seu case - CONIP 2017
Como submeter seu case - CONIP 2017Informa TI GOV
 
PPACA: Staying Compliant & Strategic
PPACA: Staying Compliant & StrategicPPACA: Staying Compliant & Strategic
PPACA: Staying Compliant & StrategicCBIZ, Inc.
 
7 Reasons Why Your Association Needs an Expert Calling Network (ECN)
7 Reasons Why Your Association Needs an Expert Calling Network (ECN)7 Reasons Why Your Association Needs an Expert Calling Network (ECN)
7 Reasons Why Your Association Needs an Expert Calling Network (ECN)Brainsy, Inc.
 
Lawyer in Myanmar Oliver Massmann The Most Important Clause in Any Commercial...
Lawyer in Myanmar Oliver Massmann The Most Important Clause in Any Commercial...Lawyer in Myanmar Oliver Massmann The Most Important Clause in Any Commercial...
Lawyer in Myanmar Oliver Massmann The Most Important Clause in Any Commercial...Dr. Oliver Massmann
 

En vedette (17)

トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介
Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介
Incoming PostgreSQL 9.4 次バージョンの新機能をご紹介
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
How to Help a Jamaican Come on Time - Time-Based Productivity via Psychology ...
How to Help a Jamaican Come on Time - Time-Based Productivity via Psychology ...How to Help a Jamaican Come on Time - Time-Based Productivity via Psychology ...
How to Help a Jamaican Come on Time - Time-Based Productivity via Psychology ...
 
Get to Inbox Zero
Get to Inbox ZeroGet to Inbox Zero
Get to Inbox Zero
 
Aja wooldridge - Press Kit
Aja wooldridge - Press KitAja wooldridge - Press Kit
Aja wooldridge - Press Kit
 
Como submeter seu case - CONIP 2017
Como submeter seu case - CONIP 2017Como submeter seu case - CONIP 2017
Como submeter seu case - CONIP 2017
 
PPACA: Staying Compliant & Strategic
PPACA: Staying Compliant & StrategicPPACA: Staying Compliant & Strategic
PPACA: Staying Compliant & Strategic
 
Guia do Desenvolvimento de Brindes
Guia do Desenvolvimento de BrindesGuia do Desenvolvimento de Brindes
Guia do Desenvolvimento de Brindes
 
7 Reasons Why Your Association Needs an Expert Calling Network (ECN)
7 Reasons Why Your Association Needs an Expert Calling Network (ECN)7 Reasons Why Your Association Needs an Expert Calling Network (ECN)
7 Reasons Why Your Association Needs an Expert Calling Network (ECN)
 
Lawyer in Myanmar Oliver Massmann The Most Important Clause in Any Commercial...
Lawyer in Myanmar Oliver Massmann The Most Important Clause in Any Commercial...Lawyer in Myanmar Oliver Massmann The Most Important Clause in Any Commercial...
Lawyer in Myanmar Oliver Massmann The Most Important Clause in Any Commercial...
 
Vud del 06 al 10 de marzo de 2017
Vud del 06 al 10 de marzo de 2017Vud del 06 al 10 de marzo de 2017
Vud del 06 al 10 de marzo de 2017
 

Similaire à pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)

PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスPydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスShoichi Taguchi
 
ビックデータとシリコンバレースタートアップ事情
ビックデータとシリコンバレースタートアップ事情ビックデータとシリコンバレースタートアップ事情
ビックデータとシリコンバレースタートアップ事情Osaka University
 
スマートライフのパートナーを目指すドコモr&d(予告編)
スマートライフのパートナーを目指すドコモr&d(予告編)スマートライフのパートナーを目指すドコモr&d(予告編)
スマートライフのパートナーを目指すドコモr&d(予告編)Osaka University
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_planMasao Fujii
 
ドコモのクラウドとビックデータJpi版
ドコモのクラウドとビックデータJpi版ドコモのクラウドとビックデータJpi版
ドコモのクラウドとビックデータJpi版Osaka University
 
ディープラーニングでラーメン二郎(全店舗)を識別してみた
ディープラーニングでラーメン二郎(全店舗)を識別してみたディープラーニングでラーメン二郎(全店舗)を識別してみた
ディープラーニングでラーメン二郎(全店舗)を識別してみたknjcode
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめOhyama Masanori
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜Yasuyuki Sugai
 
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像Hinemos
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Masahiko Sawada
 
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣aslead
 
Hoscon@2017(Taro Warita)
Hoscon@2017(Taro Warita)Hoscon@2017(Taro Warita)
Hoscon@2017(Taro Warita)Taro Warita
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
軽量開発プロセスにおけるTracを用いたメトリクスの収集・蓄積・利用
軽量開発プロセスにおけるTracを用いたメトリクスの収集・蓄積・利用軽量開発プロセスにおけるTracを用いたメトリクスの収集・蓄積・利用
軽量開発プロセスにおけるTracを用いたメトリクスの収集・蓄積・利用Naoki Ohsugi
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
Complex Event Processing on Ruby, Fluentd and Norikra #rubykaigi
Complex Event Processing on Ruby, Fluentd and Norikra #rubykaigiComplex Event Processing on Ruby, Fluentd and Norikra #rubykaigi
Complex Event Processing on Ruby, Fluentd and Norikra #rubykaigiSATOSHI TAGOMORI
 

Similaire à pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編) (20)

PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフGresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
 
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスPydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
 
ビックデータとシリコンバレースタートアップ事情
ビックデータとシリコンバレースタートアップ事情ビックデータとシリコンバレースタートアップ事情
ビックデータとシリコンバレースタートアップ事情
 
スマートライフのパートナーを目指すドコモr&d(予告編)
スマートライフのパートナーを目指すドコモr&d(予告編)スマートライフのパートナーを目指すドコモr&d(予告編)
スマートライフのパートナーを目指すドコモr&d(予告編)
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan
 
ドコモのクラウドとビックデータJpi版
ドコモのクラウドとビックデータJpi版ドコモのクラウドとビックデータJpi版
ドコモのクラウドとビックデータJpi版
 
ディープラーニングでラーメン二郎(全店舗)を識別してみた
ディープラーニングでラーメン二郎(全店舗)を識別してみたディープラーニングでラーメン二郎(全店舗)を識別してみた
ディープラーニングでラーメン二郎(全店舗)を識別してみた
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
 
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
 
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
 
Hoscon@2017(Taro Warita)
Hoscon@2017(Taro Warita)Hoscon@2017(Taro Warita)
Hoscon@2017(Taro Warita)
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
軽量開発プロセスにおけるTracを用いたメトリクスの収集・蓄積・利用
軽量開発プロセスにおけるTracを用いたメトリクスの収集・蓄積・利用軽量開発プロセスにおけるTracを用いたメトリクスの収集・蓄積・利用
軽量開発プロセスにおけるTracを用いたメトリクスの収集・蓄積・利用
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
Complex Event Processing on Ruby, Fluentd and Norikra #rubykaigi
Complex Event Processing on Ruby, Fluentd and Norikra #rubykaigiComplex Event Processing on Ruby, Fluentd and Norikra #rubykaigi
Complex Event Processing on Ruby, Fluentd and Norikra #rubykaigi
 

Plus de Masahiko Sawada

PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...Masahiko Sawada
 
Transparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQLTransparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQLMasahiko Sawada
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -Masahiko Sawada
 
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...Masahiko Sawada
 
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLBloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLMasahiko Sawada
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説Masahiko Sawada
 
Vacuum more efficient than ever
Vacuum more efficient than everVacuum more efficient than ever
Vacuum more efficient than everMasahiko Sawada
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~Masahiko Sawada
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説Masahiko Sawada
 
FDW-based Sharding Update and Future
FDW-based Sharding Update and FutureFDW-based Sharding Update and Future
FDW-based Sharding Update and FutureMasahiko Sawada
 
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributorWhat’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributorMasahiko Sawada
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介Masahiko Sawada
 
pg_bigmと類似度検索
pg_bigmと類似度検索pg_bigmと類似度検索
pg_bigmと類似度検索Masahiko Sawada
 
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundIntroduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundMasahiko Sawada
 
XID周回問題に潜む別の問題
XID周回問題に潜む別の問題XID周回問題に潜む別の問題
XID周回問題に潜む別の問題Masahiko Sawada
 

Plus de Masahiko Sawada (20)

PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
 
Transparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQLTransparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQL
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
 
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
 
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLBloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQL
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 
Vacuum more efficient than ever
Vacuum more efficient than everVacuum more efficient than ever
Vacuum more efficient than ever
 
Vacuumとzheap
VacuumとzheapVacuumとzheap
Vacuumとzheap
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Parallel Vacuum
Parallel VacuumParallel Vacuum
Parallel Vacuum
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
FDW-based Sharding Update and Future
FDW-based Sharding Update and FutureFDW-based Sharding Update and Future
FDW-based Sharding Update and Future
 
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributorWhat’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributor
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
 
pg_bigmと類似度検索
pg_bigmと類似度検索pg_bigmと類似度検索
pg_bigmと類似度検索
 
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundIntroduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparound
 
XID周回問題に潜む別の問題
XID周回問題に潜む別の問題XID周回問題に潜む別の問題
XID周回問題に潜む別の問題
 

Dernier

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Dernier (10)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)

  • 1. Copyright © 2013 NTT DATA Corporation NTTデータ 基盤システム事業本部 澤田雅彦 pg_bigm(ピージーバイグラム)を用いた 全文検索のしくみ (後編) 第27回しくみ+アプリケーション勉強会(10/5)
  • 2. 2Copyright © 2013NTT DATA Corporation 自己紹介  名前 澤田 雅彦(さわだ まさひこ)  所属 NTTデータ 基盤システム事業本部 2年目です やっていること 去年:pg_bigmの開発、サポート 今年:レプリケーション関係
  • 3. 3Copyright © 2013NTT DATA Corporation INDEX 1.前編の復習 2.性能測定(後編) 3.pg_bigm独自機能 4.デモ 5.まとめ
  • 4. Copyright © 2013 NTT DATA Corporation 4 前編の復習
  • 5. 5Copyright © 2013 NTT DATA Corporation DBの全文検索ってなに? SQL発行 DB : :  テキスト型の列を持つテーブルから、キーワードを含むレコードを検索すること  全文検索では検索対象のデータが多い  全文検索用のインデックスを作成することで高速にできる キーワード:「オープンソース」
  • 6. 6Copyright © 2013 NTT DATA Corporation pg_bigmとpg_trgm pg_bigm pg_trgm 対応バージョン 9.1~ 9.1~ 開発主体 NTTデータ PostgreSQL コミュニティ 日本語対応 ○ △ 1,2文字検索 ○ × (インデックスを有効に使えない) 類似度検索 × ○ 利用できるインデックス の種類 GINのみ GINとGiST
  • 7. 7Copyright © 2013 NTT DATA Corporation pg_bigm pg_trgm  pg_bigmとpg_trgmのインデックス登録時の 挙動の説明をしていきます  pg_bigmではキーを文字列で持つ  pg_trgmではキーをINT値で持つ pg_bigm,pg_trgmのインデックス登録 キー TID △△O 100 △OS 100 OSS 100 SSS 100 CRC1 100 CRC2 100 ①3文字分割 「△△O」、「△OS」、 「OSS」、「SSS」、 「SSあ」、「Sあ△」 ②重複削除 「△△O」、「△OS」、 「OSS」、「SSS」、 「CRC1」、「CRC2」 ①2文字分割 「△O」、「OS」、 「SS」、「SS」、 「Sあ」、「あ△」 ②重複削除 「△O」、「OS」、 「SS」 「Sあ」、「あ△」 キー TID △O 100 OS 100 SS 100 Sあ 100 あ△ 100 TID データ 100 OSSSあ キーワード ‘OSSSあ’ INSERT 3Byte以上の場合は ハッシュ変換される INT型で格納される TEXT型で格納される
  • 8. 8Copyright © 2013 NTT DATA Corporation インデックス検索時の挙動 ①2文字分割 「OS」 「Sぐ」 「ぐれ」  キーワード‘OSぐれ’からTID100のデータが検索されるまでの 挙動を解説します ②インデックススキャン TID データ 100 POSぐれ 200 POSぐる 300 ぽSぐれ キー TID △P 100, 200 △ぽ 300 OS 100, 200 PO 100, 200 Sぐ 100, 200, 300 る△ 200 れ△ 100, 300 ぐれ 100, 300 : : ③TID候補決 定 →TID 100 ④Recheck 検索 キーワード ‘OSぐれ’ pg_bigmの場合
  • 9. Copyright © 2013 NTT DATA Corporation 9 性能測定(後編)
  • 10. 10Copyright © 2013 NTT DATA Corporation 性能測定の概要 1.インデックス作成時間 2.インデックスサイズ 3.検索時間 4.データ挿入時間 測定対象 pg_bigm pg_trgm 測定項目 以下の項目を実施
  • 11. 11Copyright © 2013 NTT DATA Corporation 測定環境 項目 詳細 CPU Core i7-3630QM メモリ 16GB ディスク 512GB SSD OS CentOS 6.4 DBMS PostgreSQL 9.2.4 ハードウェア環境 ソフトウェア環境
  • 12. 12Copyright © 2013 NTT DATA Corporation テストデータ 項目 詳細 データソース 日本語Wikipedia テーブルサイズ 34GB データ件数 2.5億件 テーブル定義 CREATE TABLE hoge (col text)  以下のデータを用いて性能測定を実施した
  • 13. 13Copyright © 2013 NTT DATA Corporation 作成時間とインデックスサイズ 対象 インデックス作成クエリ pg_bigm CREATE INDEX hoge_idx ON hoge USING gin(col gin_bigm_ops); pg_trgm CREATE INDEX hoge_idx ON hoge USING gin(col gin_trgm_ops); データ全件をロード後、以下のクエリでインデックスを作成 それぞれの作成時間と、インデックスサイズを10回計測
  • 14. 14Copyright © 2013 NTT DATA Corporation 作成時間とインデックスサイズ pg_bigm pg_trgm インデックスサイズ 63GB 78GB インデックス作成時間 約3時間 約5時間 結果 pg_bigmの方がインデックスサイズが小さく、作成時間が短 い結果となった 考察 2文字ずつの分割の方がキーの重複が多いため、pg_bigmの方 がインデックスサイズが小さい →詳細は次のスライド  pg_trgmではインデックス作成時に各3-gram文字列をハッ シュ変換するため、pg_bigmよりも時間がかかる
  • 15. 15Copyright © 2013 NTT DATA Corporation インデックスキーの重複 「あいあい」を2文字、3文字分割する場合 pg_bigm △あ あい いあ あい い△ pg_trgm △△あ △あい あいあ いあい あい△
  • 16. 16Copyright © 2013 NTT DATA Corporation インデックスキーの重複 「あいあい」を2文字、3文字分割して追加する場合 pg_bigm △あ あい いあ あい い△ pg_trgm △△あ △あい あいあ いあい あい△ 5個4個 重複を削除
  • 17. 17Copyright © 2013 NTT DATA Corporation インデックスキーの重複 さらに「あいとあい」を2文字、3文字分割して追加する場合 pg_bigm △あ あい いあ い△ pg_trgm △△あ △あい あいあ いあい あい△ 5個 4個
  • 18. 18Copyright © 2013 NTT DATA Corporation インデックスキーの重複 さらに「あいとあい」を2文字、3文字分割して追加する場合 pg_bigm △あ あい いあ い△ いと とあ 2個追加 pg_trgm △△あ △あい あいあ いあい あい△ あいと いとあ とあい 3個追加新しく作られる キーの数が違う
  • 19. 19Copyright © 2013 NTT DATA Corporation 検索時間の検証概要 検索時間の検証では以下の2つの検索時間をそれぞ れ20回測定 ①検索結果が0件、1件、100件…での検索 ②検索文字数が1文字、2文字、3文字…での検索 検索クエリはpg_bigm、pg_trgm共に下記のクエリを実行 対象 検索クエリ pg_bigm SELECT col FROM hoge WHERE col LIKE ‘%東京都%’; pg_trgm
  • 20. 20Copyright © 2013 NTT DATA Corporation 検索時間の検証概要 ~検索文字列①~ 検索文字列 結果件数 一日分 0件 明治五 1件 平成一 100件 上野駅 1万件 衆議院 10万件 東京都 60万件  検索結果件数が0件、1件、100件…となる検索文字列(3文字)を検索条件とする  検索結果数の変化が、どのように検索時間に影響するのかを確認
  • 21. 21Copyright © 2013 NTT DATA Corporation 検索時間結果① 検索文字列 結果件数 pg_bigm pg_trgm SeqScan 一日分 0件 10ms 1ms 138s 明治五 1件 36ms 4ms 136s 平成一 100件 46ms 9ms 136s 上野駅 1万件 36ms 24ms 145s 衆議院 10万件 210ms 190ms 147s 東京都 60万件 1510ms 1050ms 136s  結果  検索結果が多い検索条件では、pg_bigmとpg_trgmとの差が開きやすい 結果となった  考察  次のスライドから
  • 22. 22Copyright © 2013 NTT DATA Corporation pg_bigmとpg_trgmのインデックスの違い キー TID △東 1,2,4 東京 1,2,4 京都 1,2,3,4 都と 1 と京 1,4 都府 1,3 △京 3 京と 4 キー TID △△東 1 △東京 1 東京都 1,2 京都と 1 都と京 1 と京都 1,4 △△京 3 △京都 3 京都府 1,3 : : pg_trgm pg_bigm 1 : 東京都と京都府 2 : 東京都 3 : 京都府 4 : 東京と京都
  • 23. 23Copyright © 2013 NTT DATA Corporation pg_bigmとpg_trgmのインデックスの違い 一つのキーあたりの TIDの数はpg_bigm の方が多い 検索に影響 1 : 東京都と京都府 2 : 東京都 3 : 京都府 4 : 東京と京都 キー TID △東 1,2,4 東京 1,2,4 京都 1,2,3,4 都と 1 と京 1,4 都府 1,3 △京 3 京と 4 pg_bigm キー TID △△東 1 △東京 1 東京都 1,2 京都と 1 都と京 1 と京都 1,4 △△京 3 △京都 3 京都府 1,3 : : pg_trgm
  • 24. 24Copyright © 2013 NTT DATA Corporation キー TID △△東 1 △東京 1 東京都 1,2 京都と 1 都と京 1 と京都 1,4 △△京 3 △京都 3 京都府 1,3 : : pg_trgm 検索への影響 1 : 東京都と京都府 2 : 東京都 3 : 京都府 4 : 東京と京都 1個TID を参照 「京都と」で検索する場合 キー TID △東 1,2,4 東京 1,2,4 京都 1,2,3,4 都と 1 と京 1,4 都府 1,3 △京 3 京と 4 pg_bigm 5個TID を参照
  • 25. 25Copyright © 2013 NTT DATA Corporation 検索時間の検証概要 ~検索文字列②~  1文字、2文字、3文字…の検索文字列を検索条件とする  検索文字数の変化が、どのように検索時間に影響するかを確認 検索文字列 文字数 結果件数 駅 1文字 150万件 横浜 2文字 40万件 東京都 3文字 60万件 世田谷区 4文字 4万件 秋葉原駅前 5文字 3000件 東京特許許可局 7文字 5000件 とうきょうスカ イツリー 11文字 50件
  • 26. 26Copyright © 2013 NTT DATA Corporation 検索時間結果 検索文字列 結果件数 pg_bigm pg_trgm SeqScan 駅 (1文字) 150万件 2440ms 2173000ms 141s 横浜 (2文字) 40万件 780ms 2182000ms 146s 東京都 (3文字) 60万件 1580ms 1010ms 136s 世田谷区 (4文字) 4万件 80ms 70ms 139s 秋葉原駅前 (5文字) 3000件 20ms 10ms 136s 東京特許許可局 (7文字) 5000件 390ms 140ms 133s とうきょう スカイツリー (11文字) 50件 2780ms 60ms 161s  1文字、2文字の検索では、インデックスが使えるpg_bigmが早い  3文字以上の検索では、pg_trgmの方が早い
  • 27. 27Copyright © 2013 NTT DATA Corporation pg_bigm.gin_key_limitでチューニング  pg_bigm.gin_key_limitパラメータで検索時に使用する2- gram文字列の個数の最大数を指定することでチューニングが可 能 「とうきょうスカイツリー」で全文検索をした場合、 2-gram文字列は、 うき,うス,きょ,とう,ょう,イツ,カイ,スカ,ツリ,リー,ー△,△と 12個 pg_bigm.gin_key_limitで この最大数を指定
  • 28. 28Copyright © 2013 NTT DATA Corporation pg_bigm.gin_key_limitでチューニング 0 500 1000 1500 2000 2500 3000 1 3 5 7 9 10 12(全て) 処 理 時 間 pg_bigm.gin_key_limit キーワード:とうきょうスカイツリー pg_bigm pg_trgm <2-gram文字列> うき,うス,きょ,とう,ょう,イツ,カイ,スカ,ツリ,リー,ー△,△と  pg_bigm.gin_key_limitの値を調整することで、性能改善が可能  値が1の時は、recheck処理で多くの候補行を除いている(約21万件)  値が3の時はpg_trgmよりも高速に処理ができた
  • 29. 29Copyright © 2013 NTT DATA Corporation データ挿入時間 新規にwikipediaのデータを1000件 (約250kBのテキストファ イル)を挿入した時の WAL発生量 処理時間 を測定 対象 挿入クエリ pg_bigm COPY hoge FROM ‘/home/postgres/10000.txt’; pg_trgm
  • 30. 30Copyright © 2013 NTT DATA Corporation データ挿入時間 pg_bigm pg_trgm WAL発生量 9*16MB 11*16MB 処理時間 10914.53ms 22906.03ms 結果 pg_bigmの方がWALの発生量が小さい pg_bigmの方がデータ挿入時間が短い 考察 pg_trgmではキー登録時にハッシュ変換があるため、処理時 間に差が出た
  • 31. Copyright © 2013 NTT DATA Corporation 31 pg_bigm独自機能
  • 32. 32Copyright © 2013 NTT DATA Corporation likequery() =# SELECT likequery(‘pg_bigmで性能が200%向上'); likequery ----------- %pg¥_bigmで性能が200¥%向上% (1 row) 文字列内の「%」、「_」、「¥」はエスケープされる AP側で検索文字列のエスケープ処理を作らなくていい 実行例
  • 33. 33Copyright © 2013 NTT DATA Corporation show_bigm() =# SELECT show_bigm('全文検索モジュール'); show_bigm ------------------------------------------------------- {ジュ,モジ,ュー,"ル ",ール,全文,文検,検索,索モ," 全"} (1 row) 実行例
  • 34. 34Copyright © 2013 NTT DATA Corporation pg_bigm.gin_key_limit  どのユーザからでも変更可能  2-gram文字列の個数が大きくなりやすいシステムでは、検索性能が劣化しやすい →このパラメータで使用する最大個数を指定することで、性能問題を解決できる  ただし、2-gram文字列の個数を減らすとrecheck処理への負担が大きくなること に注意  デフォルトは0(すべて使用) =# SET pg_bigm.gin_key_limit to 10; 実行例
  • 35. 35Copyright © 2013 NTT DATA Corporation pg_bigm.enable_recheck どのユーザからでも変更可能 運用時は必ずON(デフォルト) recheck処理のオーバーヘッドを評価するなどの、デバック時に OFFにする =# SET pg_bigm.enable_recheck to on; 実行例
  • 36. Copyright © 2013 NTT DATA Corporation 36 デモ
  • 37. 37Copyright © 2013 NTT DATA Corporation デモ 以下のデモを通して、pg_bigmのインストールや、全 文検索実行まで紹介いたします。 pg_bigmインストール 全文検索インデックス作成 全文検索 インデックスを用いた検索 SeqScanとの速度の違い 1文字、2文字での検索
  • 38. Copyright © 2013 NTT DATA Corporation 38 まとめ
  • 39. 39Copyright © 2013 NTT DATA Corporation まとめ 全文検索を高速に行うために、pg_bigmやpg_trgmを 用いて全文検索用インデックスを作成する インデックスサイズ pg_bigmの方が小さい インデックス作成時間 pg_bigmの方が早い 検索 検索結果数が多いほど、pg_trgmの方が早い →pg_bigm.gin_key_limit等でチューニング可能 1,2文字検索ではインデックスを使えるため pg_bigmの方が早い pg_bigm新バージョンリリース!
  • 40. 40Copyright © 2013 NTT DATA Corporation pg_bigm新バージョンがリリース予定  pg_bigm新バージョンでは主に以下の内容が更新されています 類似度検索も 現在開発中
  • 41. Copyright © 2011 NTT DATA Corporation Copyright © 2013 NTT DATA Corporation
  • 42. Copyright © 2013 NTT DATA Corporation 42 参考資料
  • 43. 43Copyright © 2013 NTT DATA Corporation (参考)ワイルドカードの有無による検索の挙動の違い キー TID △A 1, 2 △X 3 AB 1, 2, 3 BC 1, 2, 3 C△ 1, 3 CD 2 D△ 2 XA 1 TID データ 1 ABC 2 ABCD 3 XABC 検索キーワード キー 決定タプル 完全一致 ABC △A AB C△ 1 前方一致 %ABC AB BC C△ 1, 2 中間一致 %ABC% AB BC 1, 2, 3 後方一致 ABC% △A AB BC 1
  • 44. 44Copyright © 2013 NTT DATA Corporation (参考)Recheck処理の必要性 キー TID 東京 1 京都 1 京と 1 : : 検索ワード: ‘%東京都%’ 「東京」 : TID1 「京都」 : TID1 TABL E INDEX 間違った結果を取って きてしまう INDEXを検索 TID決定 Recheck処理で再検査! 例えばこんな時。。 1 東京と京都 : :
  • 45. 45Copyright © 2013 NTT DATA Corporation (参考)pg_bigm.gin_key_limitを変えた時の処理時間 pg_bigm pg_trgm 1 473.04ms 60ms 3 47.64ms 5 467.30ms 7 738.47ms 9 1015.46ms 10 2738.24ms 12(全て) 2737.42ms
  • 46. 46Copyright © 2013 NTT DATA Corporation (参考)部分一致とは? ①2文字分割 「本」 ②インデックススキャン キー TID : : 末尾 100, 200 本日 200, 300 本屋 500 本当 400 札束 200 : : ③TID候補決 定 ④ Recheck キーワード ‘%本%’  2文字分割後、1文字のキーワードが生成された場合、部分一致を行う関数が実行される (例)検索キーワードが’%東%’の場合など  部分一致では1文字の検索キーワードと各キーの先頭を比較して、一致、不一致を判断す る  pg_bigmでは部分一致関数を実装しているため、2文字”以下”の検索ができる