SlideShare una empresa de Scribd logo
1 de 79
Descargar para leer sin conexión
Copyright©2016 NTT corp. All Rights Reserved.
PostgreSQLによるデータ分析
ことはじめ
2016/12/03
PGConf.asia 2016 チュートリアル
NTT OSSセンタ DBMS担当
⼤⼭ 真実
2Copyright©2016 NTT corp. All Rights Reserved.
⾃⼰紹介
⼤⼭ 真実
おおやま まさのり
2012-2015
NTTデータ OSSプロフェッショナルサービス
Hadoopの検証・サポート
2015-現在
NTT OSSセンタ DBMS担当
PostgreSQLの検証・サポート
注)データ分析の専⾨家ではありません!
@ooyamams1987
3Copyright©2016 NTT corp. All Rights Reserved.
• PostgreSQLに関して、データ分析という観点で幅広
いトピックを扱います。
• 時間の制約上⼀つ⼀つを深く触れることはできません。
• この講義がこれから皆様がPostgreSQLを⼗⼆分に使
いこなしていく上での⼊り⼝になれば幸いです。
• もし後⽇ご質問があれば、JPUGのSlackにてご質問く
ださい。
はじめに
⽇本PostgreSQLユーザ会公式(?)Slack
https://postgresql-jp.slack.com/
4Copyright©2016 NTT corp. All Rights Reserved.
はじめに
PostgreSQLはデータ分析にも適したデータベースである!
l ⾼機能なSQL
l ⼤量データに対応するための機能
• 9.6 からは念願のパラレルクエリが導⼊!
l 豊富な関連ツール
l 他のDBとの連携機能
OSSだから今すぐ始められる!
5Copyright©2016 NTT corp. All Rights Reserved.
はじめに
今時データ分析と⾔えば、HadoopとかSparkでは?
本当に“ビッグ”なデータを分析したいのであればその通り。
・画像、映像
・IoT機器からのセンサーデータ
・⼤量のWebアクセスログ などなど。
6Copyright©2016 NTT corp. All Rights Reserved.
はじめに
Q. 分析したいデータはHadoopを使わなきゃいけないほどのサイズ?
企業に存在するデータはそんなに⼤きくない(かも?)
平成27年版 情報通信⽩書
図表5-4-3-9 各データを分析に活⽤している企業等の割合
https://data.cityofnewyork.us/view/gn7m-em8n
2014 Yellow Taxi Trip Data
NYの1年分のタクシーの
搭乗ログでも30GBほど。
7Copyright©2016 NTT corp. All Rights Reserved.
はじめに
データ活⽤の効果があった企業の特徴として次の特徴が挙げられている
「平成27年版情報通信⽩書」によると…
平成27年版 情報通信⽩書
図表 5-4-3-18 データ活⽤の効果達成率
8Copyright©2016 NTT corp. All Rights Reserved.
はじめに
1.データ分析の専⾨家が⾼度なツールを使って分析している
平成27年版 情報通信⽩書
図表 5-4-3-23 分析⼿法、分析⼈材による効果が得られた割合の⽐較
9Copyright©2016 NTT corp. All Rights Reserved.
はじめに
2.短い間隔でデータ分析を⾏っている
平成27年版 情報通信⽩書
図表 5-4-3-20 効果有無による⽐較(分析頻度)
10Copyright©2016 NTT corp. All Rights Reserved.
はじめに
3.様々な種類のデータを組み合わせてデータ分析を⾏っている
平成27年版 情報通信⽩書
図表 5-4-3-21 効果有無による⽐較 (分析に活⽤するデータの種類)
11Copyright©2016 NTT corp. All Rights Reserved.
はじめに
データ分析の専⾨家が、短い間隔で、様々なデータを組み合わせて
⾼度な分析を⾏うことが⼤事!
→PostgreSQLは良い選択肢です!
1.データ分析の専⾨家が⾼度なツールを使って分析している
2.短い間隔でデータ分析を⾏っている
3.様々な種類のデータを組み合わせてデータ分析を⾏っている
データ活⽤の効果があった企業の特徴
なぜ?
12Copyright©2016 NTT corp. All Rights Reserved.
はじめに
PostgreSQLでデータ分析を⾏うときのポイント
1.⾼機能なSQLを使いこなせ!
2.⼤容量データへの対応はこうだ!
3.他のデータベースと連携させろ!
4.豊富なツールを使いこなせ!
13Copyright©2016 NTT corp. All Rights Reserved.
1.⾼機能なSQLを使いこなせ!
14Copyright©2016 NTT corp. All Rights Reserved.
⾼機能なSQLを使いこなせ!
1. 統計・集約関数
2. ウィンドウ関数
3. CTE (With句)
省略!
きっとそーだいさんが話してくれるはず!
15Copyright©2016 NTT corp. All Rights Reserved.
⾼機能なSQLを使いこなせ!
16Copyright©2016 NTT corp. All Rights Reserved.
⾼機能なSQLを使いこなせ!
3.CTE (With句)
SELECT ...
FROM (SELECT ...
FROM t1
JOIN (SELECT ... FROM ...) a
ON (...)
) b
JOIN (SELECT ... FROM ...) c ON (...)
データ分析で使いがちな複雑な
⼊れ⼦構造のSQLでもわかりやすく
記述可能
WITH a AS (
SELECT ... FROM ...
), b AS (
SELECT ...
FROM t1 JOIN a ON (...)
), c AS (
SELECT ... FROM ...
)
SELECT ... FROM b JOIN c ON ...
CTEなし
CTEあり
t1
a
(select...)
b
t1 × a
c
(select...)
result
17Copyright©2016 NTT corp. All Rights Reserved.
2.⼤容量データへの対応はこうだ!
18Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
1. パラレルクエリ
2. パーティショニング
3. BRINインデックス
4. ストリーミングレプリケーション
19Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
1. パラレルクエリ
2. パーティショニング
3. BRINインデックス
4. ストリーミングレプリケーション
20Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
1.パラレルクエリ
澤⽥雅彦「PostgreSQL 9.6 新機能紹介」
http://www.slideshare.net/masahikosa
wada98/postgresql-96-69228794
21Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
1.パラレルクエリ
澤⽥雅彦「PostgreSQL 9.6 新機能紹介」
http://www.slideshare.net/masahikosa
wada98/postgresql-96-69228794
22Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
13Copyright©2016 NTT corp. All Rights Reserved.
• HPE ProLiant DL580 GEN9
• Intel Xeon E7-8890 v4 2.20GHz (4P/192 core (96-HT))
• 2TB RAM
• Workload Accelerator(PCIe SSD)
• Read : 715,000 IOPS, 3.0GB/s
• Write : 95,000 IOPS, 2.5GB/s
Evaluation on a great machine
Supported by
Thank you!
1.パラレルクエリ
23Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
17Copyright©2016 NTT corp. All Rights Reserved.
0
50
100
150
200
250
300
350
400
0 20 40 60 80 100 120 140 160 180 200
ExecutionTime(s)
Parallel Degree
Parallel Query on 192 cores machine
• All table data(400GB) is on the shared buffer; no disk access.
• Simple aggregation, count(*).
• Parallel query makes aggregation 19x faster!!
385 sec
21 sec
1.パラレルクエリ
24Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
19Copyright©2016 NTT corp. All Rights Reserved.
3,006
3,966
8,272
40
6,000
28 177
1,029
2,111
0
1,000
2,000
3,000
4,000
5,000
6,000
7,000
8,000
9,000
SF1 SF10 SF50 SF100
TotalExecutionTime(sec)
Hive PostgreSQL 9.1.3 PostgreSQL 9.6.0
• Compare DBT-3 benchmark result with Hive (SF1 - SF100)
• Hive flushes data to disk whenever finished each job, which could be overhead.
• Now in 2016 we should use Hive on Tez.
• On the other hand, PostgreSQL has the all table data in shared buffer.
• Parallel execution in memory bring us much performance improvement.
SF1 to SF100
- CDH4.1.2
- 24 cores (12-HT)
- 32G RAM
- 2TB SATA
- PostgresSQL 9.1.3
- 8 cores (4-HT)
- 16G RAM
- SATA
1.パラレルクエリ
25Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
1. パラレルクエリ
2. パーティショニング
3. BRINインデックス
4. ストリーミングレプリケーション
26Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
2.パーティショニング
PGECons「2013年度活動成果報告」
https://www.pgecons.org/wp-
content/uploads/2014/05/ca3a0b2d4d
00c62d43aa367594a72589.pdf
27Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
2.パーティショニング
https://www.pgecons.org/wp-content/uploads/2014/05/ca3a0b2d4d00c62d43aa367594a72589.pdf
PGECons「2013年度活動成果報告」
https://www.pgecons.org/wp-
content/uploads/2014/05/ca3a0b2d4d
00c62d43aa367594a72589.pdf
28Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
2.パーティショニング
メリット
デメリット
• (パーティション単位での)参照性能向上
• テーブルの保守性向上(⼀部の場⾯において)
• INSERT性能の低下、ON CONFLICT句との併⽤時の制約
• 別のパーティションに移るようなUPDATEにはUPDATE⽤の
トリガを別途する必要あり
• プランニングコスト上昇
(パーティション数は100までを推奨)
• 複雑なクエリだと不適切なプランになる可能性がある
(チェック制約は単純なものにすることを推奨)
詳細はPostgreSQLの公式マニュアルを参照してください
https://www.postgresql.jp/document/9.5/html/ddl-partitioning.html
29Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
2.パーティショニング
図 6.1: パーティション表作成フロー
パーティションの作成はちょっと大変
PGECons「2015年度活動成果報告」
https://www.pgecons.org/wp-
content/uploads/PGECons/2015/WG3/
PGECons_2015_WG3_DBTools.pdf
30Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
2.パーティショニング
パーティショニングを簡単に操作するためのツール
• pg_part
https://github.com/uptimejp/pg_part
• pg_partman
https://github.com/keithf4/pg_partman
• pg_pathman
https://github.com/postgrespro/pg_pathman
pg_part, pg_partman に関してはPGEConsに詳細な解説資料あり。
• 2015年度WG3活動報告書(データベースツール編)
https://www.pgecons.org/wp-
content/uploads/PGECons/2015/WG3/PGECons_2015_WG3_DBTools.pdf
• 付録_パーティションツール
https://www.pgecons.org/wp-
content/uploads/PGECons/2015/WG3/PGECons_2015_WG3_DBTools_appendix_chapter6.pdf
31Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
2.パーティショニング
pg_pathman
Pg_pathman UPDATE and DELETE Support and Benchmark
Alexander Korotkov「Pg_pathman
UPDATE and DELETE Support and
Benchmark」
http://akorotkov.github.io/blog/2016/0
3/18/pg_pathman-update-delete-
benchmark/
32Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
2.パーティショニング
PostgreSQL本体機能としてのパーティション機能は
NTT OSSセンタ の Amit Langote
が全⼒開発中!
PostgreSQL 10 をお楽しみに!
33Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
1. パラレルクエリ
2. パーティショニング
3. BRINインデックス
4. ストリーミングレプリケーション
34Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
3.BRINインデックス
澤⽥雅彦「 PostgreSQL 9.5 新機能紹介」
http://www.slideshare.net/hadoopxnttd
ata/postgresql-95-new-features-nttdata
35Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
3.BRINインデックス
http://www.slideshare.net/hadoopxnttdata/postgresql-95-new-features-nttdata
澤⽥雅彦「 PostgreSQL 9.5 新機能紹介」
http://www.slideshare.net/hadoopxnttd
ata/postgresql-95-new-features-nttdata
36Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
3.BRINインデックス
http://www.slideshare.net/hadoopxnttdata/postgresql-95-new-features-nttdata
澤⽥雅彦「 PostgreSQL 9.5 新機能紹介」
http://www.slideshare.net/hadoopxnttd
ata/postgresql-95-new-features-nttdata
37Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
3.BRINインデックス
0.00% 20.00% 40.00% 60.00% 80.00% 100.00%
0
5000
10000
15000
20000
BRIN vs. BTREE
Bitmap Index Scan on 100M rows (table sorted)
BTREE BRIN (128) BRIN (4)
fraction of table matching the condition
duration[miliseconds]
Tomas Vondra「PostgreSQL9.5,9.6,次期バージョンに
おける性能向上」http://www.pgconf.asia/JP/wp-
content/uploads/2016/12/performance-9.5-and-
beyond.pdf
38Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
3.BRINインデックス
btree BRIN (1) BRIN (4) BRIN (128)
0
500
1000
1500
2000
2500
2142
11 2.8 0.13
BRIN vs. BTREE
Index size on 100M rows (sorted)
size(MB)
http://www.pgconf.asia/JP/wp-
content/uploads/2016/12/performance-9.5-and-beyond.pdf
Tomas Vondra「PostgreSQL9.5,9.6,次期バージョンに
おける性能向上」http://www.pgconf.asia/JP/wp-
content/uploads/2016/12/performance-9.5-and-
beyond.pdf
39Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
1. パラレルクエリ
2. パーティショニング
3. BRINインデックス
4. ストリーミングレプリケーション
40Copyright©2016 NTT corp. All Rights Reserved.
Copyright © NTT COMWARE CORPORATION 2015
Copyright © 2015 NTT corp. All Rights Reserved.
開発プロジェクトの最大のミッション
最大のミッション、それは「性能の担保」
大量データの計算処理を確実に時間内で完了しつつ、処理時間の安定化も図れ
大規模な分析処理を行いつつ、関連システムからのオンライン処理をさばけ
6
DBMS
• 業務データ
• 過去履歴
• ...など
仮想化基盤
分析業務利用者
関連システム群
オペレータ
夜間帯
バッチ処理
日中帯
オンライン処理
情報分析処理
時間帯
処理内容
夜...
バ...
オンライン処理
AP
情報分析処理
AP
バッチ処理AP
⼤容量データへの対応はこうだ!
4.ストリーミングレプリケーション
朝倉 佑貴,⼭⽥ 達朗「料⾦系基幹システム
へのPostgreSQL導⼊事例」
https://www.pgecons.org/wp-
content/uploads/2015/09/PGECons3_N
TT_20150911.pdf
41Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
4.ストリーミングレプリケーション
https://www.pgecons.org/wp-content/uploads/2015/09/PGECons3_NTT_20150911.pdf
42Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
https://www.pgecons.org/wp-content/uploads/2015/09/PGECons3_NTT_20150911.pdf
Copyright © NTT COMWARE CORPORATION 2015
Copyright © 2015 NTT corp. All Rights Reserved.
性能特性の異なる業務が互いに影響しないよう設計せよ
12
常に最新のデータに対して大規模分析処理を行いたい
でも、オンライン処理の性能に影響を与えたくない
ストリーミングレプリケーションで分析処理用のリードレプリカを構築
情報分析処理
AP
オンライン処理
AP
バッチ処理AP
マスタ
リード
レプリカ
レプリケーション
DBが2つに分かれ
分析処理が
オンライン処理に
影響しない
DBが2つに分かれ
分析処理が
オンライン処理に
影響しない
レプリケーションで
最新データに対する
分析処理が可能
レプリケーション処理
によって、分析処理の
SQLが実行中に中断
されないよう設定(*)
する必要あり
レプリカ側で
テーブルへのデータ反映処理が
全く進まなくなった!!
NTT OSSセンタの助力もあり
無事解決
対処策は後半で
4.ストリーミングレプリケーション
43Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
Copyright © NTT COMWARE CORPORATION 2015
Copyright © 2015 NTT corp. All Rights Reserved.
WAL適用と競合する参照クエリとは何か?
◆競合の典型的な例 クエリ実行中に行削除が行われた場合
40
リード
レプリカ
①SELECT * FROM
HOGE;
②DELETE FROM
HOGE;
VACUUM HOGE;
⑤WAL適用
参照中のHOGEテーブル
に対し、WALはデータ
削除、と記載。
1つの対象に操作が2つ。
→ これが競合
③WAL転送
内容はHOGEテーブルの行削除(物理削除)
競合発生の場合、 WAL適用が優先されるため、
実行中の参照クエリは中断される。 競合は回避できないか?
マスタ
④SELECTのクエリを中断
4.ストリーミングレプリケーション
朝倉 佑貴,⼭⽥ 達朗「料⾦系基幹システム
へのPostgreSQL導⼊事例」
https://www.pgecons.org/wp-
content/uploads/2015/09/PGECons3_N
TT_20150911.pdf
44Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
Copyright © NTT COMWARE CORPORATION 2015
Copyright © 2015 NTT corp. All Rights Reserved.
フィードバックのパラメータを追加し解決へ!
◆本案件では以下のパラメータを組み合わせて採用
44
max_standby_streaming_delay=30秒 → -1
WALが到着してから何秒後にWAL適用を開始するかを設定する。
-1 : クエリ完了までWAL適用は行わない
リードレプリカ側はクエリ中断を回避しつつ、
データ反映処理が行われるようになり、課題は解決
hot_standby_feedback=OFF → ON
トランザクションIDをマスタに伝え、参照する可能性がある行の削除を待ってもらう。
ON : 有効
追加
4.ストリーミングレプリケーション
※マスタのテーブルの肥⼤化に注意
朝倉 佑貴,⼭⽥ 達朗「料⾦系基幹システム
へのPostgreSQL導⼊事例」
https://www.pgecons.org/wp-
content/uploads/2015/09/PGECons3_N
TT_20150911.pdf
45Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
37Copyright©2016 NTT corp. All Rights Reserved.
マルチ同期レプリケーション
マスタ
スタンバイ
A
スタンバイ
B
スタンバイ
C
同期
レプリケーション
同期
レプリケーション
⾮同期
レプリケーション
• 複数のスタンバイサーバに対して同期レプリケーションを使用可能
• より高可用な構成を組むことが可能に
スタンバイAとスタンバイBに
同期レプリケーションを使⽤
4.ストリーミングレプリケーション
PostgreSQL 9.6 ではレプリケーション機能がさらに進化!
澤⽥雅彦「PostgreSQL 9.6 新機能紹介」
http://www.slideshare.net/masahikosa
wada98/postgresql-96-69228794
46Copyright©2016 NTT corp. All Rights Reserved.
⼤容量データへの対応はこうだ!
4.ストリーミングレプリケーション
Quorum Commit マルチ同期レプリケーション機能は
NTT OSSセンタ の 澤⽥ 雅彦
が全⼒開発中!
PostgreSQL 10 をお楽しみに!
47Copyright©2016 NTT corp. All Rights Reserved.
3.他のデータベースと連携させろ!
48Copyright©2016 NTT corp. All Rights Reserved.
他のデータベースと連携させろ!
http://www.slideshare.net/babystarmonja/postgre-sql-11764943?from_action=save
・FDW - Foreign data wrappers
PostgreSQLの外部にあるデータに普通のSELECT⽂でアクセスするためのしくみ
花⽥ 茂「外部データラッパによる
PostgreSQL の拡張」
http://www.slideshare.net/babystarmo
nja/postgre-sql-
11764943?from_action=save
49Copyright©2016 NTT corp. All Rights Reserved.
他のデータベースと連携させろ!
・FDW - Foreign data wrappers
Postgres_fdw
file_fdw
については、PostgreSQL本体の追加モジュール(contrib)として
提供されているのですぐに利⽤可能。
# create extension postgres_fdw;
CREATE EXTENSION
※postgres_fdwではCREATE FOREIGN DATA WRAPPER は⾃動的に実⾏される
# ¥dew
外部データラッパーの一覧
名前 | 所有者 | ハンドラー | バリデータ
--------------+----------+----------------------+------------------------
postgres_fdw | postgres | postgres_fdw_handler | postgres_fdw_validator
50Copyright©2016 NTT corp. All Rights Reserved.
他のデータベースと連携させろ!
・FDW - Foreign data wrappers
ローカルPostgreSQL
リモートPostgreSQL リモートMySQL
PostgreSQL⽤外部データラッパ
# CREATE EXTENSION postgres_fdw;
(CREATE FOREIGN DATA WRAPPER …)
MySQL⽤
外部データ
ラッパ
外部サーバ
CREATE SERVER …
リモートサーバのホスト名、DB名、ポート番号など
ユーザーマッピング
CREATE USER MAPPING …
リモートサーバで使⽤する
ユーザ名、パスワードなど
外部テーブル
CREATE FOREIGN TABLE …
アクセスしたいリモートサーバの
テーブルを定義
51Copyright©2016 NTT corp. All Rights Reserved.
他のデータベースと連携させろ!
Demo various pushdown features etc.
======================================================================
1. Select 句ののプッシュダウン
select * from ft1; ローカルサーバから外部テーブルにSELECT
2. Where 句のプッシュダウン
select * from ft1 where val < 10; -- WHERE clause pushdown
3. DML プッシュダウン
delete from ft1 where val % 2 = 0; -- DML pushdown
update ft1 set val2 = val + 2;
4. Sortプッシュダウン
select * from ft1 order by val;
PGCon 2016 で⾏われた Ashutosh Bapat のチュートリアル
https://www.pgcon.org/2016/schedule/attachments/419_pgfdw_demo_script
FDWの設定⼿順は上記URL、または、PostgreSQLの公式マニュアルを参照。
52Copyright©2016 NTT corp. All Rights Reserved.
他のデータベースと連携させろ!
6. Joinプッシュダウン
select * from ft1 join ft2 on (ft1.val = ft2.val) where ft1.val2 < 15;
※ローカルのテーブルとリモートのテーブルのJoinも可能
7. Analyze 実行
analyze ft2;
select * from pg_statistic where starelid = 'ft2'::regclass;
※Analyze対象の全データをローカルPostgreSQLに転送することに注意
8. View、Materialized Viewの作製
create view ft_join
as select ft1.val ft1_val, ft1.val2 ft1_val2, ft2.val2 ft2_val2
from ft1 left join ft2 on (ft1.val = ft2.val);
create materialized view mv_ft_join
as select ft1.val ft1_val, ft1.val2 ft1_val2, ft2.val2 ft2_val2
from ft1 left join ft2 on (ft1.val = ft2.val);
select * from ft_join;
select * from mv_ft_join;
PGCon 2016 で⾏われた Ashutosh Bapat のpostgres_fdwチュートリアル
https://www.pgcon.org/2016/schedule/attachments/419_pgfdw_demo_script
53Copyright©2016 NTT corp. All Rights Reserved.
他のデータベースと連携させろ!
分析に必要なデータはRDBの中にある場合が多い。
→必要なデータを保持しているDBに透過的に直接アクセス!
基幹DB
データソース
SQL
ユーザー
基幹DB
基幹DB
BIツール
PostgreSQL
FDW
FDW
FDW
54Copyright©2016 NTT corp. All Rights Reserved.
他のデータベースと連携させろ!
http://www.slideshare.net/masahikosawada98/postgresql-96-69228794
澤⽥雅彦「PostgreSQL 9.6 新機能紹介」
http://www.slideshare.net/masahikosa
wada98/postgresql-96-69228794
55Copyright©2016 NTT corp. All Rights Reserved.
他のデータベースと連携させろ!
・FDW - Foreign data wrappers
FDWは
NTT OSSセンタ の
藤⽥ 悦郎
堀⼝ 恭太郎
⼭⽥ 達郎
も全⼒開発中!
PostgreSQL 10 をお楽しみに!
56Copyright©2016 NTT corp. All Rights Reserved.
4.豊富なツールを使いこなせ!
57Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
ここではデータ分析の観点で以下のツールをご紹介する。
1. Apache MADlib (Incubating)
2. その他
1. Orange
2. PostGIS
3. ⽇本語全⽂検索ツール
PostgreSQLをより便利にする多様なツールが
様々な組織・個⼈によって公開されている。
参考:NTT OSSセンタ が公開しているPostgreSQL関連のOSSはこちら
NTT OSS Center DBMS Development and Support Team
https://github.com/ossc-db
https://sourceforge.net/projects/pgstatsinfo/
58Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
http://madlib.incubator.apache.org/
59Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
・オープンソースソフトウェア(2-clause BSD license)
・豊富な統計・機械学習ライブラリをUDF(※)で簡単に利⽤可能
https://cwiki.apache.org/confluence/display/MADLIB/Architecture
※UDF:ユーザ定義関数
https://www.postgresql.jp/document/9.5/html/xfunc.html
http://pgsqldeepdive.blogspot.jp/2016/01/plpython-aggregation-function.html
60Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
http://madlib.incubator.apache.org/community-artifacts/Apache-
MADlib-user-survey-results-Oct-2016.pdf
61Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
http://madlib.incubator.apache.org/community-artifacts/Apache-
MADlib-user-survey-results-Oct-2016.pdf
11
Q5 - Frequently Used Algorithms
1.Apache MADlib (Incubating)
62Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
インストールは省略!
・PostgreSQL 9.6 へのインストールはソースコードからの
ビルドがお勧め。(RPMからはインストールできませんでした。私の環境起因?)
・PostgreSQL 9.5 へのインストールはRPMがお勧め。
https://cwiki.apache.org/confluence/display/MADLIB/Installation+Guide
Installation Guide
https://dist.apache.org/repos/dist/release/incubator/madlib/1.9.1-incubating/
# select madlib.version();
version
--------
MADlib version: 1.10.0-dev, git revision: rel/v1.9.1-8-g82e56a4,
cmake configuration time: ...
63Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
例1:相関係数
# select * from pearson_test;
ItemID | User1 | User2 | User3 | User4 | User5
--------+-------+-------+-------+-------+-------
101 | 5.0 | 2.0 | 2.5 | 5.0 | 4.0
102 | 3.0 | 4.4 | 2.0 | 4.0 | 3.0
103 | 2.5 | 5.0 | 2.0 | 3.0 | 2.0
104 | 4.0 | 1.0 | 4.0 | 4.5 | 4.0
105 | 2.5 | 5.0 | 2.5 | 2.0 | 3.5
106 | 2.5 | 4.5 | 3.0 | 4.0 | 5.0
107 | 2.5 | 1.0 | 5.0 | 3.5 | 2.0
# select corr("User1","User4") from pearson_test;
corr
-------------------
0.769711105935245
例1­1. PostgreSQL本体の相関係数関数を使った場合
64Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
例1:相関係数
# select madlib.correlation( 'pearson_test’,'pearson_test_output’
,'"User1","User2","User3","User4","User5"');
# select * from pearson_test_output;
column_position | variable | User1 | User2 | User3 | User4 | User5
-----------------+----------+---------------------+--------------------+-------------------+-------------------+-------
1 | User1 | 1 | | | |
2 | User2 | -0.546929577338552 | 1 | | |
3 | User3 | -0.0377195470232912 | -0.79465632134891 | 1 | |
4 | User4 | 0.769711105935245 | -0.582961865158075 | 0.149966529063513 | 1 |
5 | User5 | 0.364518243177598 | 0.0260498161861346 | -0.10096620601608 | 0.410984968442742 | 1
例1­2. MADlibの相関係数関数を使った場合
select madlib.correlation(
‘インプットテーブル名’
,‘アウトプットテーブル名’
,’”相関を求めたいカラム名”, “…”, “…”ʼ);
65Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
例2:サポートベクターマシン(SVM) Ver.1.9.0 からの新機能!
• サポートベクターマシンとは?
http://qiita.com/pesuchin/items/c55f40b69aa1aec2bd19
Ø 教師あり学習を⽤いるパター
ン認識モデルの⼀つ。
Ø 分類や回帰へ適⽤。
Ø 現在知られている⼿法の中で
も認識性能が優れた学習モデ
ルの⼀つ。
pesuchin「機械学習⼊⾨〜ハードマー
ジンSVM編〜」
http://qiita.com/pesuchin/items/c5
5f40b69aa1aec2bd19
66Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
例2:サポートベクターマシン(SVM)
• カーネルトリック
Ø カーネル関数を⽤いてパターンを有限もしくは無
限次元の特徴空間へ写像し、特徴空間上で線形分
離を⾏う
pesuchin「機械学習⼊⾨〜ハードマー
ジンSVM編〜」
http://qiita.com/pesuchin/items/c5
5f40b69aa1aec2bd19
67Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
例2:サポートベクターマシン(SVM)
• カーネルトリックのイメージ
「SVM with polynomial kernel visualization」
https://www.youtube.com/watch?v=3liCbRZPrZA
68Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
例2:サポートベクターマシン(SVM)
例2­1. まずはマニュアルに記載の例を試してみる
id tax bedroom bath price size lot
1 590 2 1.0 50000 770 22100
2 1050 3 2.0 85000 1410 12000
3 20 3 1.0 22500 1060 3500
4 870 2 2.0 90000 1300 17500
5 1320 3 2.0 133000 1500 30000
6 1350 2 1.0 90500 820 25700
7 2790 3 2.5 260000 2130 25000
8 680 2 1.0 142500 1170 22000
9 1840 3 2.0 160000 1500 19000
… … … … … … …
houseテーブル
https://madlib.incubator.apache.org/docs/latest/group__grp__svm.html
• bedroom, bath , size など
の情報から、price が
100,000 以下の物件かどう
かを推測する。
• マニュアルではカーネルトリ
ックを使わないもの、使った
ものがそれぞれが例⽰されて
いる。
69Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
• リニアモデル作成(カーネル不使⽤)
SELECT madlib.svm_classification('houses',
'houses_svm',
'price < 100000',
'ARRAY[1, tax, bath, size]');
• ガウスカーネルを使ったノンリニアモデル作成
SELECT madlib.svm_classification( 'houses',
'houses_svm_gaussian',
'price < 100000',
'ARRAY[1, tax, bath, size]',
'gaussian',
'n_components=10',
'',
'init_stepsize=1, max_iter=200');
• 予測モデル作成
70Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
• リニアモデルによる予測結果
select * from houses_pred;
id | prediction | decision_function
----+------------+--------------------
1 | t | 0.0938672144797545
2 | t | 0.134445050268981
3 | t | 1.90320546662703
...
• 作成したモデルを使って予測してみる
• リニアモデルによる予測(元データを流⽤して実施)
SELECT madlib.svm_predict('houses_svm',
'houses',
'id',
'houses_pred');
71Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
• 予測結果の⽐較
SELECT *, price < 100000 AS target FROM houses
JOIN houses_pred USING (id) ORDER BY id;
id price prediction decision_function observed
1 50000 True 0.0938672144798 True
2 85000 True 0.134445050269 True
3 22500 True 1.90320546663 True
4 90000 True 0.34410006693 True
5 133000 False -0.314618105199 False
6 90500 False -1.53502545094 True
7 260000 False -2.5421155107 False
8 142500 True 0.608110606339 False
9 160000 False -1.49051126913 False
… … … … …
id price prediction decision_function observed
1 50000 True 2.42762512244 True
2 85000 True 1.76050726948 True
3 22500 True 1.14044931256 True
4 90000 True 1.10706143597 True
5 133000 False -1.26570595537 False
6 90500 True 1.33794522323 True
7 260000 False -1.0164054774 False
8 142500 False -1.09640506629 False
9 160000 False -1.92695648532 False
… … … … …
リニアモデルによる予測結果 ノンリニアモデルによる予測結果
72Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
• AUC (Area under the curve) による識別性能の⽐較
select madlib.area_under_roc('houses_pred_roc',
'houses_pred_roc_output',
'prediction',
'observed');
area_under_roc
0.79464285714285714285500000000000000000000
• リニアモデル
select madlib.area_under_roc('houses_pred_gaussian_roc',
'houses_pred_gaussian_roc_output',
'prediction',
'observed');
• ノンリニアモデル
area_under_roc
1.00000000000000000000000000000000000000000
73Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
例2­2. : UC Irvine Machine Learning Repository - Adult Data Set
http://archive.ics.uci.edu/ml/datasets/Adult
• 1994年の国勢調査に基づくデータ
• 性別、年齢、学歴、職種などの情報に加えて、所得が$50K/年を
超えているかいないかが記録されている
• 属性情報からその⼈の所得が$50K/年を超えているかを予測する
ためによく使われるデータセット
例2:サポートベクターマシン(SVM)
SVMを使った試⾏錯誤の詳細は下記URLで!
https://github.com/ooyamams/pgconf.asia_tutorial
74Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
例2­2. : UC Irvine Machine Learning Repository - Adult Data Set
http://archive.ics.uci.edu/ml/datasets/Adult
例2:サポートベクターマシン(SVM)
SVMを使った試⾏錯誤の詳細は下記Githubで!
https://github.com/ooyamams/pgconf.asia_tutorial/blo
b/master/MADlib_test_SVM_adult.ipynb
75Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
1.Apache MADlib (Incubating)
使ってみた感想
• UDFを⾃分で作成せずに、PostgreSQL内のデータに対して⾼度な分
析や機械学習ができるのは⼤変魅⼒的。
• ただし…
Ø ⼩さいデータであれば、DBからロードして、ローカルPCにて
PythonやらRやらで分析したほうが効率的であるのは確か。
(Pythonの機械学習系のライブラリの充実度は素晴らしい)
Ø サポートベクターマシンを本格的に使うとなるとパラメーター
チューニングが⼤変。グリットサーチやベイズ最適化などの
ツール類がまだ存在しない(たぶん)なので追加されることを期
待。(クロスバリデーションはできる。)
76Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
• GPL 3.0
• スロベニアのリュブリャナ⼤学バイオインフォマティクス研究所が中
⼼となって開発
• AXLE PROJECT で開発が推進されたソフトウェアの⼀つ
(Advanced Analytics for Extremely Large European Databases)
2.その他のツール
http://orange.biolab.si/orange3/
77Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
2.その他のツール
78Copyright©2016 NTT corp. All Rights Reserved.
豊富なツールを使いこなせ!
• PostGIS http://www.postgis.net/
Ø PostgreSQL データベースで地理空間情報を扱うための拡張
Ø ⽇本語による紹介記事
http://lets.postgresql.jp/documents/tutorial/PostGIS/1/
• ⽇本語全⽂検索ツール
Ø pg_bigm http://pgbigm.osdn.jp/
Ø PGroonga https://pgroonga.github.io/ja/
pg_bigmの開発者である澤⽥雅彦による⽇本語全⽂検索の解説
http://www.slideshare.net/hadoopxnttdata/postgresqlpgbigm
-mysqlpostgresql
2.その他のツール
79Copyright©2016 NTT corp. All Rights Reserved.
最後に改めて…
データ分析の専⾨家が、短い間隔で、様々なデータを組み合わせて
⾼度な分析を⾏うことが⼤事!
→PostgreSQLは良い選択肢です!
1.データ分析の専⾨家が⾼度なツールを使って分析している
2.短い間隔でデータ分析を⾏っている
3.様々な種類のデータを組み合わせてデータ分析を⾏っている
データ活⽤の効果があった企業の特徴

Más contenido relacionado

La actualidad más candente

PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうkasaharatt
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンKentaro Yoshida
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...NTT DATA Technology & Innovation
 
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
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)NTT DATA Technology & Innovation
 
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮Hibino Hisashi
 
MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来 MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来 株式会社MonotaRO Tech Team
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢Naoyuki Yamada
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoTakayuki Shimizukawa
 

La actualidad más candente (20)

PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろう
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
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レプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
 
MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来 MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
 

Similar a PostgreSQLによるデータ分析ことはじめ

オープンソースのデータ分析ソフト3製品「RapidMiner」「NYSOL」「Revolution R Enterprise (RRE) ※Rの商用版」のご紹介
オープンソースのデータ分析ソフト3製品「RapidMiner」「NYSOL」「Revolution R Enterprise (RRE) ※Rの商用版」のご紹介オープンソースのデータ分析ソフト3製品「RapidMiner」「NYSOL」「Revolution R Enterprise (RRE) ※Rの商用版」のご紹介
オープンソースのデータ分析ソフト3製品「RapidMiner」「NYSOL」「Revolution R Enterprise (RRE) ※Rの商用版」のご紹介Satoshi Kitajima
 
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
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...Insight Technology, Inc.
 
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)NTT DATA OSS Professional Services
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013Daichi Egawa
 
DeNAでのVertica運用
DeNAでのVertica運用DeNAでのVertica運用
DeNAでのVertica運用Shota Suzuki
 
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Takashi Someda
 
Beginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopBeginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopDataWorks Summit
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜Yasuyuki Sugai
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsTakuya Iwatsuka
 
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...Insight Technology, Inc.
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例terurou
 
【JAWS UG 山形】ランサーズでのAWS活用事例
【JAWS UG 山形】ランサーズでのAWS活用事例【JAWS UG 山形】ランサーズでのAWS活用事例
【JAWS UG 山形】ランサーズでのAWS活用事例Yuki Kanazawa
 

Similar a PostgreSQLによるデータ分析ことはじめ (20)

オープンソースのデータ分析ソフト3製品「RapidMiner」「NYSOL」「Revolution R Enterprise (RRE) ※Rの商用版」のご紹介
オープンソースのデータ分析ソフト3製品「RapidMiner」「NYSOL」「Revolution R Enterprise (RRE) ※Rの商用版」のご紹介オープンソースのデータ分析ソフト3製品「RapidMiner」「NYSOL」「Revolution R Enterprise (RRE) ※Rの商用版」のご紹介
オープンソースのデータ分析ソフト3製品「RapidMiner」「NYSOL」「Revolution R Enterprise (RRE) ※Rの商用版」のご紹介
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
 
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
DeNAでのVertica運用
DeNAでのVertica運用DeNAでのVertica運用
DeNAでのVertica運用
 
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
 
Beginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning HadoopBeginner must-see! A future that can be opened by learning Hadoop
Beginner must-see! A future that can be opened by learning Hadoop
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
 
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
【JAWS UG 山形】ランサーズでのAWS活用事例
【JAWS UG 山形】ランサーズでのAWS活用事例【JAWS UG 山形】ランサーズでのAWS活用事例
【JAWS UG 山形】ランサーズでのAWS活用事例
 

Más de Ohyama Masanori

Multi Master PostgreSQL Cluster on Kubernetes
Multi Master PostgreSQL Cluster on KubernetesMulti Master PostgreSQL Cluster on Kubernetes
Multi Master PostgreSQL Cluster on KubernetesOhyama Masanori
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性Ohyama Masanori
 
PostgreSQL Security. How Do We Think? at PGCon 2017
PostgreSQL Security. How Do We Think? at PGCon 2017PostgreSQL Security. How Do We Think? at PGCon 2017
PostgreSQL Security. How Do We Think? at PGCon 2017Ohyama Masanori
 
PostgreSQL Security. How Do We Think?
PostgreSQL Security. How Do We Think?PostgreSQL Security. How Do We Think?
PostgreSQL Security. How Do We Think?Ohyama Masanori
 
Database Security for PCI DSS
Database Security for PCI DSSDatabase Security for PCI DSS
Database Security for PCI DSSOhyama Masanori
 
PostgreSQL 9.5 CPU Read Scalability
PostgreSQL 9.5 CPU Read ScalabilityPostgreSQL 9.5 CPU Read Scalability
PostgreSQL 9.5 CPU Read ScalabilityOhyama Masanori
 

Más de Ohyama Masanori (6)

Multi Master PostgreSQL Cluster on Kubernetes
Multi Master PostgreSQL Cluster on KubernetesMulti Master PostgreSQL Cluster on Kubernetes
Multi Master PostgreSQL Cluster on Kubernetes
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
PostgreSQL Security. How Do We Think? at PGCon 2017
PostgreSQL Security. How Do We Think? at PGCon 2017PostgreSQL Security. How Do We Think? at PGCon 2017
PostgreSQL Security. How Do We Think? at PGCon 2017
 
PostgreSQL Security. How Do We Think?
PostgreSQL Security. How Do We Think?PostgreSQL Security. How Do We Think?
PostgreSQL Security. How Do We Think?
 
Database Security for PCI DSS
Database Security for PCI DSSDatabase Security for PCI DSS
Database Security for PCI DSS
 
PostgreSQL 9.5 CPU Read Scalability
PostgreSQL 9.5 CPU Read ScalabilityPostgreSQL 9.5 CPU Read Scalability
PostgreSQL 9.5 CPU Read Scalability
 

PostgreSQLによるデータ分析ことはじめ

  • 1. Copyright©2016 NTT corp. All Rights Reserved. PostgreSQLによるデータ分析 ことはじめ 2016/12/03 PGConf.asia 2016 チュートリアル NTT OSSセンタ DBMS担当 ⼤⼭ 真実
  • 2. 2Copyright©2016 NTT corp. All Rights Reserved. ⾃⼰紹介 ⼤⼭ 真実 おおやま まさのり 2012-2015 NTTデータ OSSプロフェッショナルサービス Hadoopの検証・サポート 2015-現在 NTT OSSセンタ DBMS担当 PostgreSQLの検証・サポート 注)データ分析の専⾨家ではありません! @ooyamams1987
  • 3. 3Copyright©2016 NTT corp. All Rights Reserved. • PostgreSQLに関して、データ分析という観点で幅広 いトピックを扱います。 • 時間の制約上⼀つ⼀つを深く触れることはできません。 • この講義がこれから皆様がPostgreSQLを⼗⼆分に使 いこなしていく上での⼊り⼝になれば幸いです。 • もし後⽇ご質問があれば、JPUGのSlackにてご質問く ださい。 はじめに ⽇本PostgreSQLユーザ会公式(?)Slack https://postgresql-jp.slack.com/
  • 4. 4Copyright©2016 NTT corp. All Rights Reserved. はじめに PostgreSQLはデータ分析にも適したデータベースである! l ⾼機能なSQL l ⼤量データに対応するための機能 • 9.6 からは念願のパラレルクエリが導⼊! l 豊富な関連ツール l 他のDBとの連携機能 OSSだから今すぐ始められる!
  • 5. 5Copyright©2016 NTT corp. All Rights Reserved. はじめに 今時データ分析と⾔えば、HadoopとかSparkでは? 本当に“ビッグ”なデータを分析したいのであればその通り。 ・画像、映像 ・IoT機器からのセンサーデータ ・⼤量のWebアクセスログ などなど。
  • 6. 6Copyright©2016 NTT corp. All Rights Reserved. はじめに Q. 分析したいデータはHadoopを使わなきゃいけないほどのサイズ? 企業に存在するデータはそんなに⼤きくない(かも?) 平成27年版 情報通信⽩書 図表5-4-3-9 各データを分析に活⽤している企業等の割合 https://data.cityofnewyork.us/view/gn7m-em8n 2014 Yellow Taxi Trip Data NYの1年分のタクシーの 搭乗ログでも30GBほど。
  • 7. 7Copyright©2016 NTT corp. All Rights Reserved. はじめに データ活⽤の効果があった企業の特徴として次の特徴が挙げられている 「平成27年版情報通信⽩書」によると… 平成27年版 情報通信⽩書 図表 5-4-3-18 データ活⽤の効果達成率
  • 8. 8Copyright©2016 NTT corp. All Rights Reserved. はじめに 1.データ分析の専⾨家が⾼度なツールを使って分析している 平成27年版 情報通信⽩書 図表 5-4-3-23 分析⼿法、分析⼈材による効果が得られた割合の⽐較
  • 9. 9Copyright©2016 NTT corp. All Rights Reserved. はじめに 2.短い間隔でデータ分析を⾏っている 平成27年版 情報通信⽩書 図表 5-4-3-20 効果有無による⽐較(分析頻度)
  • 10. 10Copyright©2016 NTT corp. All Rights Reserved. はじめに 3.様々な種類のデータを組み合わせてデータ分析を⾏っている 平成27年版 情報通信⽩書 図表 5-4-3-21 効果有無による⽐較 (分析に活⽤するデータの種類)
  • 11. 11Copyright©2016 NTT corp. All Rights Reserved. はじめに データ分析の専⾨家が、短い間隔で、様々なデータを組み合わせて ⾼度な分析を⾏うことが⼤事! →PostgreSQLは良い選択肢です! 1.データ分析の専⾨家が⾼度なツールを使って分析している 2.短い間隔でデータ分析を⾏っている 3.様々な種類のデータを組み合わせてデータ分析を⾏っている データ活⽤の効果があった企業の特徴 なぜ?
  • 12. 12Copyright©2016 NTT corp. All Rights Reserved. はじめに PostgreSQLでデータ分析を⾏うときのポイント 1.⾼機能なSQLを使いこなせ! 2.⼤容量データへの対応はこうだ! 3.他のデータベースと連携させろ! 4.豊富なツールを使いこなせ!
  • 13. 13Copyright©2016 NTT corp. All Rights Reserved. 1.⾼機能なSQLを使いこなせ!
  • 14. 14Copyright©2016 NTT corp. All Rights Reserved. ⾼機能なSQLを使いこなせ! 1. 統計・集約関数 2. ウィンドウ関数 3. CTE (With句) 省略! きっとそーだいさんが話してくれるはず!
  • 15. 15Copyright©2016 NTT corp. All Rights Reserved. ⾼機能なSQLを使いこなせ!
  • 16. 16Copyright©2016 NTT corp. All Rights Reserved. ⾼機能なSQLを使いこなせ! 3.CTE (With句) SELECT ... FROM (SELECT ... FROM t1 JOIN (SELECT ... FROM ...) a ON (...) ) b JOIN (SELECT ... FROM ...) c ON (...) データ分析で使いがちな複雑な ⼊れ⼦構造のSQLでもわかりやすく 記述可能 WITH a AS ( SELECT ... FROM ... ), b AS ( SELECT ... FROM t1 JOIN a ON (...) ), c AS ( SELECT ... FROM ... ) SELECT ... FROM b JOIN c ON ... CTEなし CTEあり t1 a (select...) b t1 × a c (select...) result
  • 17. 17Copyright©2016 NTT corp. All Rights Reserved. 2.⼤容量データへの対応はこうだ!
  • 18. 18Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 1. パラレルクエリ 2. パーティショニング 3. BRINインデックス 4. ストリーミングレプリケーション
  • 19. 19Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 1. パラレルクエリ 2. パーティショニング 3. BRINインデックス 4. ストリーミングレプリケーション
  • 20. 20Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 1.パラレルクエリ 澤⽥雅彦「PostgreSQL 9.6 新機能紹介」 http://www.slideshare.net/masahikosa wada98/postgresql-96-69228794
  • 21. 21Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 1.パラレルクエリ 澤⽥雅彦「PostgreSQL 9.6 新機能紹介」 http://www.slideshare.net/masahikosa wada98/postgresql-96-69228794
  • 22. 22Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 13Copyright©2016 NTT corp. All Rights Reserved. • HPE ProLiant DL580 GEN9 • Intel Xeon E7-8890 v4 2.20GHz (4P/192 core (96-HT)) • 2TB RAM • Workload Accelerator(PCIe SSD) • Read : 715,000 IOPS, 3.0GB/s • Write : 95,000 IOPS, 2.5GB/s Evaluation on a great machine Supported by Thank you! 1.パラレルクエリ
  • 23. 23Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 17Copyright©2016 NTT corp. All Rights Reserved. 0 50 100 150 200 250 300 350 400 0 20 40 60 80 100 120 140 160 180 200 ExecutionTime(s) Parallel Degree Parallel Query on 192 cores machine • All table data(400GB) is on the shared buffer; no disk access. • Simple aggregation, count(*). • Parallel query makes aggregation 19x faster!! 385 sec 21 sec 1.パラレルクエリ
  • 24. 24Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 19Copyright©2016 NTT corp. All Rights Reserved. 3,006 3,966 8,272 40 6,000 28 177 1,029 2,111 0 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 9,000 SF1 SF10 SF50 SF100 TotalExecutionTime(sec) Hive PostgreSQL 9.1.3 PostgreSQL 9.6.0 • Compare DBT-3 benchmark result with Hive (SF1 - SF100) • Hive flushes data to disk whenever finished each job, which could be overhead. • Now in 2016 we should use Hive on Tez. • On the other hand, PostgreSQL has the all table data in shared buffer. • Parallel execution in memory bring us much performance improvement. SF1 to SF100 - CDH4.1.2 - 24 cores (12-HT) - 32G RAM - 2TB SATA - PostgresSQL 9.1.3 - 8 cores (4-HT) - 16G RAM - SATA 1.パラレルクエリ
  • 25. 25Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 1. パラレルクエリ 2. パーティショニング 3. BRINインデックス 4. ストリーミングレプリケーション
  • 26. 26Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 2.パーティショニング PGECons「2013年度活動成果報告」 https://www.pgecons.org/wp- content/uploads/2014/05/ca3a0b2d4d 00c62d43aa367594a72589.pdf
  • 27. 27Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 2.パーティショニング https://www.pgecons.org/wp-content/uploads/2014/05/ca3a0b2d4d00c62d43aa367594a72589.pdf PGECons「2013年度活動成果報告」 https://www.pgecons.org/wp- content/uploads/2014/05/ca3a0b2d4d 00c62d43aa367594a72589.pdf
  • 28. 28Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 2.パーティショニング メリット デメリット • (パーティション単位での)参照性能向上 • テーブルの保守性向上(⼀部の場⾯において) • INSERT性能の低下、ON CONFLICT句との併⽤時の制約 • 別のパーティションに移るようなUPDATEにはUPDATE⽤の トリガを別途する必要あり • プランニングコスト上昇 (パーティション数は100までを推奨) • 複雑なクエリだと不適切なプランになる可能性がある (チェック制約は単純なものにすることを推奨) 詳細はPostgreSQLの公式マニュアルを参照してください https://www.postgresql.jp/document/9.5/html/ddl-partitioning.html
  • 29. 29Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 2.パーティショニング 図 6.1: パーティション表作成フロー パーティションの作成はちょっと大変 PGECons「2015年度活動成果報告」 https://www.pgecons.org/wp- content/uploads/PGECons/2015/WG3/ PGECons_2015_WG3_DBTools.pdf
  • 30. 30Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 2.パーティショニング パーティショニングを簡単に操作するためのツール • pg_part https://github.com/uptimejp/pg_part • pg_partman https://github.com/keithf4/pg_partman • pg_pathman https://github.com/postgrespro/pg_pathman pg_part, pg_partman に関してはPGEConsに詳細な解説資料あり。 • 2015年度WG3活動報告書(データベースツール編) https://www.pgecons.org/wp- content/uploads/PGECons/2015/WG3/PGECons_2015_WG3_DBTools.pdf • 付録_パーティションツール https://www.pgecons.org/wp- content/uploads/PGECons/2015/WG3/PGECons_2015_WG3_DBTools_appendix_chapter6.pdf
  • 31. 31Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 2.パーティショニング pg_pathman Pg_pathman UPDATE and DELETE Support and Benchmark Alexander Korotkov「Pg_pathman UPDATE and DELETE Support and Benchmark」 http://akorotkov.github.io/blog/2016/0 3/18/pg_pathman-update-delete- benchmark/
  • 32. 32Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 2.パーティショニング PostgreSQL本体機能としてのパーティション機能は NTT OSSセンタ の Amit Langote が全⼒開発中! PostgreSQL 10 をお楽しみに!
  • 33. 33Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 1. パラレルクエリ 2. パーティショニング 3. BRINインデックス 4. ストリーミングレプリケーション
  • 34. 34Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 3.BRINインデックス 澤⽥雅彦「 PostgreSQL 9.5 新機能紹介」 http://www.slideshare.net/hadoopxnttd ata/postgresql-95-new-features-nttdata
  • 35. 35Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 3.BRINインデックス http://www.slideshare.net/hadoopxnttdata/postgresql-95-new-features-nttdata 澤⽥雅彦「 PostgreSQL 9.5 新機能紹介」 http://www.slideshare.net/hadoopxnttd ata/postgresql-95-new-features-nttdata
  • 36. 36Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 3.BRINインデックス http://www.slideshare.net/hadoopxnttdata/postgresql-95-new-features-nttdata 澤⽥雅彦「 PostgreSQL 9.5 新機能紹介」 http://www.slideshare.net/hadoopxnttd ata/postgresql-95-new-features-nttdata
  • 37. 37Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 3.BRINインデックス 0.00% 20.00% 40.00% 60.00% 80.00% 100.00% 0 5000 10000 15000 20000 BRIN vs. BTREE Bitmap Index Scan on 100M rows (table sorted) BTREE BRIN (128) BRIN (4) fraction of table matching the condition duration[miliseconds] Tomas Vondra「PostgreSQL9.5,9.6,次期バージョンに おける性能向上」http://www.pgconf.asia/JP/wp- content/uploads/2016/12/performance-9.5-and- beyond.pdf
  • 38. 38Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 3.BRINインデックス btree BRIN (1) BRIN (4) BRIN (128) 0 500 1000 1500 2000 2500 2142 11 2.8 0.13 BRIN vs. BTREE Index size on 100M rows (sorted) size(MB) http://www.pgconf.asia/JP/wp- content/uploads/2016/12/performance-9.5-and-beyond.pdf Tomas Vondra「PostgreSQL9.5,9.6,次期バージョンに おける性能向上」http://www.pgconf.asia/JP/wp- content/uploads/2016/12/performance-9.5-and- beyond.pdf
  • 39. 39Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 1. パラレルクエリ 2. パーティショニング 3. BRINインデックス 4. ストリーミングレプリケーション
  • 40. 40Copyright©2016 NTT corp. All Rights Reserved. Copyright © NTT COMWARE CORPORATION 2015 Copyright © 2015 NTT corp. All Rights Reserved. 開発プロジェクトの最大のミッション 最大のミッション、それは「性能の担保」 大量データの計算処理を確実に時間内で完了しつつ、処理時間の安定化も図れ 大規模な分析処理を行いつつ、関連システムからのオンライン処理をさばけ 6 DBMS • 業務データ • 過去履歴 • ...など 仮想化基盤 分析業務利用者 関連システム群 オペレータ 夜間帯 バッチ処理 日中帯 オンライン処理 情報分析処理 時間帯 処理内容 夜... バ... オンライン処理 AP 情報分析処理 AP バッチ処理AP ⼤容量データへの対応はこうだ! 4.ストリーミングレプリケーション 朝倉 佑貴,⼭⽥ 達朗「料⾦系基幹システム へのPostgreSQL導⼊事例」 https://www.pgecons.org/wp- content/uploads/2015/09/PGECons3_N TT_20150911.pdf
  • 41. 41Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 4.ストリーミングレプリケーション https://www.pgecons.org/wp-content/uploads/2015/09/PGECons3_NTT_20150911.pdf
  • 42. 42Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! https://www.pgecons.org/wp-content/uploads/2015/09/PGECons3_NTT_20150911.pdf Copyright © NTT COMWARE CORPORATION 2015 Copyright © 2015 NTT corp. All Rights Reserved. 性能特性の異なる業務が互いに影響しないよう設計せよ 12 常に最新のデータに対して大規模分析処理を行いたい でも、オンライン処理の性能に影響を与えたくない ストリーミングレプリケーションで分析処理用のリードレプリカを構築 情報分析処理 AP オンライン処理 AP バッチ処理AP マスタ リード レプリカ レプリケーション DBが2つに分かれ 分析処理が オンライン処理に 影響しない DBが2つに分かれ 分析処理が オンライン処理に 影響しない レプリケーションで 最新データに対する 分析処理が可能 レプリケーション処理 によって、分析処理の SQLが実行中に中断 されないよう設定(*) する必要あり レプリカ側で テーブルへのデータ反映処理が 全く進まなくなった!! NTT OSSセンタの助力もあり 無事解決 対処策は後半で 4.ストリーミングレプリケーション
  • 43. 43Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! Copyright © NTT COMWARE CORPORATION 2015 Copyright © 2015 NTT corp. All Rights Reserved. WAL適用と競合する参照クエリとは何か? ◆競合の典型的な例 クエリ実行中に行削除が行われた場合 40 リード レプリカ ①SELECT * FROM HOGE; ②DELETE FROM HOGE; VACUUM HOGE; ⑤WAL適用 参照中のHOGEテーブル に対し、WALはデータ 削除、と記載。 1つの対象に操作が2つ。 → これが競合 ③WAL転送 内容はHOGEテーブルの行削除(物理削除) 競合発生の場合、 WAL適用が優先されるため、 実行中の参照クエリは中断される。 競合は回避できないか? マスタ ④SELECTのクエリを中断 4.ストリーミングレプリケーション 朝倉 佑貴,⼭⽥ 達朗「料⾦系基幹システム へのPostgreSQL導⼊事例」 https://www.pgecons.org/wp- content/uploads/2015/09/PGECons3_N TT_20150911.pdf
  • 44. 44Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! Copyright © NTT COMWARE CORPORATION 2015 Copyright © 2015 NTT corp. All Rights Reserved. フィードバックのパラメータを追加し解決へ! ◆本案件では以下のパラメータを組み合わせて採用 44 max_standby_streaming_delay=30秒 → -1 WALが到着してから何秒後にWAL適用を開始するかを設定する。 -1 : クエリ完了までWAL適用は行わない リードレプリカ側はクエリ中断を回避しつつ、 データ反映処理が行われるようになり、課題は解決 hot_standby_feedback=OFF → ON トランザクションIDをマスタに伝え、参照する可能性がある行の削除を待ってもらう。 ON : 有効 追加 4.ストリーミングレプリケーション ※マスタのテーブルの肥⼤化に注意 朝倉 佑貴,⼭⽥ 達朗「料⾦系基幹システム へのPostgreSQL導⼊事例」 https://www.pgecons.org/wp- content/uploads/2015/09/PGECons3_N TT_20150911.pdf
  • 45. 45Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 37Copyright©2016 NTT corp. All Rights Reserved. マルチ同期レプリケーション マスタ スタンバイ A スタンバイ B スタンバイ C 同期 レプリケーション 同期 レプリケーション ⾮同期 レプリケーション • 複数のスタンバイサーバに対して同期レプリケーションを使用可能 • より高可用な構成を組むことが可能に スタンバイAとスタンバイBに 同期レプリケーションを使⽤ 4.ストリーミングレプリケーション PostgreSQL 9.6 ではレプリケーション機能がさらに進化! 澤⽥雅彦「PostgreSQL 9.6 新機能紹介」 http://www.slideshare.net/masahikosa wada98/postgresql-96-69228794
  • 46. 46Copyright©2016 NTT corp. All Rights Reserved. ⼤容量データへの対応はこうだ! 4.ストリーミングレプリケーション Quorum Commit マルチ同期レプリケーション機能は NTT OSSセンタ の 澤⽥ 雅彦 が全⼒開発中! PostgreSQL 10 をお楽しみに!
  • 47. 47Copyright©2016 NTT corp. All Rights Reserved. 3.他のデータベースと連携させろ!
  • 48. 48Copyright©2016 NTT corp. All Rights Reserved. 他のデータベースと連携させろ! http://www.slideshare.net/babystarmonja/postgre-sql-11764943?from_action=save ・FDW - Foreign data wrappers PostgreSQLの外部にあるデータに普通のSELECT⽂でアクセスするためのしくみ 花⽥ 茂「外部データラッパによる PostgreSQL の拡張」 http://www.slideshare.net/babystarmo nja/postgre-sql- 11764943?from_action=save
  • 49. 49Copyright©2016 NTT corp. All Rights Reserved. 他のデータベースと連携させろ! ・FDW - Foreign data wrappers Postgres_fdw file_fdw については、PostgreSQL本体の追加モジュール(contrib)として 提供されているのですぐに利⽤可能。 # create extension postgres_fdw; CREATE EXTENSION ※postgres_fdwではCREATE FOREIGN DATA WRAPPER は⾃動的に実⾏される # ¥dew 外部データラッパーの一覧 名前 | 所有者 | ハンドラー | バリデータ --------------+----------+----------------------+------------------------ postgres_fdw | postgres | postgres_fdw_handler | postgres_fdw_validator
  • 50. 50Copyright©2016 NTT corp. All Rights Reserved. 他のデータベースと連携させろ! ・FDW - Foreign data wrappers ローカルPostgreSQL リモートPostgreSQL リモートMySQL PostgreSQL⽤外部データラッパ # CREATE EXTENSION postgres_fdw; (CREATE FOREIGN DATA WRAPPER …) MySQL⽤ 外部データ ラッパ 外部サーバ CREATE SERVER … リモートサーバのホスト名、DB名、ポート番号など ユーザーマッピング CREATE USER MAPPING … リモートサーバで使⽤する ユーザ名、パスワードなど 外部テーブル CREATE FOREIGN TABLE … アクセスしたいリモートサーバの テーブルを定義
  • 51. 51Copyright©2016 NTT corp. All Rights Reserved. 他のデータベースと連携させろ! Demo various pushdown features etc. ====================================================================== 1. Select 句ののプッシュダウン select * from ft1; ローカルサーバから外部テーブルにSELECT 2. Where 句のプッシュダウン select * from ft1 where val < 10; -- WHERE clause pushdown 3. DML プッシュダウン delete from ft1 where val % 2 = 0; -- DML pushdown update ft1 set val2 = val + 2; 4. Sortプッシュダウン select * from ft1 order by val; PGCon 2016 で⾏われた Ashutosh Bapat のチュートリアル https://www.pgcon.org/2016/schedule/attachments/419_pgfdw_demo_script FDWの設定⼿順は上記URL、または、PostgreSQLの公式マニュアルを参照。
  • 52. 52Copyright©2016 NTT corp. All Rights Reserved. 他のデータベースと連携させろ! 6. Joinプッシュダウン select * from ft1 join ft2 on (ft1.val = ft2.val) where ft1.val2 < 15; ※ローカルのテーブルとリモートのテーブルのJoinも可能 7. Analyze 実行 analyze ft2; select * from pg_statistic where starelid = 'ft2'::regclass; ※Analyze対象の全データをローカルPostgreSQLに転送することに注意 8. View、Materialized Viewの作製 create view ft_join as select ft1.val ft1_val, ft1.val2 ft1_val2, ft2.val2 ft2_val2 from ft1 left join ft2 on (ft1.val = ft2.val); create materialized view mv_ft_join as select ft1.val ft1_val, ft1.val2 ft1_val2, ft2.val2 ft2_val2 from ft1 left join ft2 on (ft1.val = ft2.val); select * from ft_join; select * from mv_ft_join; PGCon 2016 で⾏われた Ashutosh Bapat のpostgres_fdwチュートリアル https://www.pgcon.org/2016/schedule/attachments/419_pgfdw_demo_script
  • 53. 53Copyright©2016 NTT corp. All Rights Reserved. 他のデータベースと連携させろ! 分析に必要なデータはRDBの中にある場合が多い。 →必要なデータを保持しているDBに透過的に直接アクセス! 基幹DB データソース SQL ユーザー 基幹DB 基幹DB BIツール PostgreSQL FDW FDW FDW
  • 54. 54Copyright©2016 NTT corp. All Rights Reserved. 他のデータベースと連携させろ! http://www.slideshare.net/masahikosawada98/postgresql-96-69228794 澤⽥雅彦「PostgreSQL 9.6 新機能紹介」 http://www.slideshare.net/masahikosa wada98/postgresql-96-69228794
  • 55. 55Copyright©2016 NTT corp. All Rights Reserved. 他のデータベースと連携させろ! ・FDW - Foreign data wrappers FDWは NTT OSSセンタ の 藤⽥ 悦郎 堀⼝ 恭太郎 ⼭⽥ 達郎 も全⼒開発中! PostgreSQL 10 をお楽しみに!
  • 56. 56Copyright©2016 NTT corp. All Rights Reserved. 4.豊富なツールを使いこなせ!
  • 57. 57Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! ここではデータ分析の観点で以下のツールをご紹介する。 1. Apache MADlib (Incubating) 2. その他 1. Orange 2. PostGIS 3. ⽇本語全⽂検索ツール PostgreSQLをより便利にする多様なツールが 様々な組織・個⼈によって公開されている。 参考:NTT OSSセンタ が公開しているPostgreSQL関連のOSSはこちら NTT OSS Center DBMS Development and Support Team https://github.com/ossc-db https://sourceforge.net/projects/pgstatsinfo/
  • 58. 58Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) http://madlib.incubator.apache.org/
  • 59. 59Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) ・オープンソースソフトウェア(2-clause BSD license) ・豊富な統計・機械学習ライブラリをUDF(※)で簡単に利⽤可能 https://cwiki.apache.org/confluence/display/MADLIB/Architecture ※UDF:ユーザ定義関数 https://www.postgresql.jp/document/9.5/html/xfunc.html http://pgsqldeepdive.blogspot.jp/2016/01/plpython-aggregation-function.html
  • 60. 60Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) http://madlib.incubator.apache.org/community-artifacts/Apache- MADlib-user-survey-results-Oct-2016.pdf
  • 61. 61Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! http://madlib.incubator.apache.org/community-artifacts/Apache- MADlib-user-survey-results-Oct-2016.pdf 11 Q5 - Frequently Used Algorithms 1.Apache MADlib (Incubating)
  • 62. 62Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) インストールは省略! ・PostgreSQL 9.6 へのインストールはソースコードからの ビルドがお勧め。(RPMからはインストールできませんでした。私の環境起因?) ・PostgreSQL 9.5 へのインストールはRPMがお勧め。 https://cwiki.apache.org/confluence/display/MADLIB/Installation+Guide Installation Guide https://dist.apache.org/repos/dist/release/incubator/madlib/1.9.1-incubating/ # select madlib.version(); version -------- MADlib version: 1.10.0-dev, git revision: rel/v1.9.1-8-g82e56a4, cmake configuration time: ...
  • 63. 63Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 例1:相関係数 # select * from pearson_test; ItemID | User1 | User2 | User3 | User4 | User5 --------+-------+-------+-------+-------+------- 101 | 5.0 | 2.0 | 2.5 | 5.0 | 4.0 102 | 3.0 | 4.4 | 2.0 | 4.0 | 3.0 103 | 2.5 | 5.0 | 2.0 | 3.0 | 2.0 104 | 4.0 | 1.0 | 4.0 | 4.5 | 4.0 105 | 2.5 | 5.0 | 2.5 | 2.0 | 3.5 106 | 2.5 | 4.5 | 3.0 | 4.0 | 5.0 107 | 2.5 | 1.0 | 5.0 | 3.5 | 2.0 # select corr("User1","User4") from pearson_test; corr ------------------- 0.769711105935245 例1­1. PostgreSQL本体の相関係数関数を使った場合
  • 64. 64Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 例1:相関係数 # select madlib.correlation( 'pearson_test’,'pearson_test_output’ ,'"User1","User2","User3","User4","User5"'); # select * from pearson_test_output; column_position | variable | User1 | User2 | User3 | User4 | User5 -----------------+----------+---------------------+--------------------+-------------------+-------------------+------- 1 | User1 | 1 | | | | 2 | User2 | -0.546929577338552 | 1 | | | 3 | User3 | -0.0377195470232912 | -0.79465632134891 | 1 | | 4 | User4 | 0.769711105935245 | -0.582961865158075 | 0.149966529063513 | 1 | 5 | User5 | 0.364518243177598 | 0.0260498161861346 | -0.10096620601608 | 0.410984968442742 | 1 例1­2. MADlibの相関係数関数を使った場合 select madlib.correlation( ‘インプットテーブル名’ ,‘アウトプットテーブル名’ ,’”相関を求めたいカラム名”, “…”, “…”ʼ);
  • 65. 65Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 例2:サポートベクターマシン(SVM) Ver.1.9.0 からの新機能! • サポートベクターマシンとは? http://qiita.com/pesuchin/items/c55f40b69aa1aec2bd19 Ø 教師あり学習を⽤いるパター ン認識モデルの⼀つ。 Ø 分類や回帰へ適⽤。 Ø 現在知られている⼿法の中で も認識性能が優れた学習モデ ルの⼀つ。 pesuchin「機械学習⼊⾨〜ハードマー ジンSVM編〜」 http://qiita.com/pesuchin/items/c5 5f40b69aa1aec2bd19
  • 66. 66Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 例2:サポートベクターマシン(SVM) • カーネルトリック Ø カーネル関数を⽤いてパターンを有限もしくは無 限次元の特徴空間へ写像し、特徴空間上で線形分 離を⾏う pesuchin「機械学習⼊⾨〜ハードマー ジンSVM編〜」 http://qiita.com/pesuchin/items/c5 5f40b69aa1aec2bd19
  • 67. 67Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 例2:サポートベクターマシン(SVM) • カーネルトリックのイメージ 「SVM with polynomial kernel visualization」 https://www.youtube.com/watch?v=3liCbRZPrZA
  • 68. 68Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 例2:サポートベクターマシン(SVM) 例2­1. まずはマニュアルに記載の例を試してみる id tax bedroom bath price size lot 1 590 2 1.0 50000 770 22100 2 1050 3 2.0 85000 1410 12000 3 20 3 1.0 22500 1060 3500 4 870 2 2.0 90000 1300 17500 5 1320 3 2.0 133000 1500 30000 6 1350 2 1.0 90500 820 25700 7 2790 3 2.5 260000 2130 25000 8 680 2 1.0 142500 1170 22000 9 1840 3 2.0 160000 1500 19000 … … … … … … … houseテーブル https://madlib.incubator.apache.org/docs/latest/group__grp__svm.html • bedroom, bath , size など の情報から、price が 100,000 以下の物件かどう かを推測する。 • マニュアルではカーネルトリ ックを使わないもの、使った ものがそれぞれが例⽰されて いる。
  • 69. 69Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) • リニアモデル作成(カーネル不使⽤) SELECT madlib.svm_classification('houses', 'houses_svm', 'price < 100000', 'ARRAY[1, tax, bath, size]'); • ガウスカーネルを使ったノンリニアモデル作成 SELECT madlib.svm_classification( 'houses', 'houses_svm_gaussian', 'price < 100000', 'ARRAY[1, tax, bath, size]', 'gaussian', 'n_components=10', '', 'init_stepsize=1, max_iter=200'); • 予測モデル作成
  • 70. 70Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) • リニアモデルによる予測結果 select * from houses_pred; id | prediction | decision_function ----+------------+-------------------- 1 | t | 0.0938672144797545 2 | t | 0.134445050268981 3 | t | 1.90320546662703 ... • 作成したモデルを使って予測してみる • リニアモデルによる予測(元データを流⽤して実施) SELECT madlib.svm_predict('houses_svm', 'houses', 'id', 'houses_pred');
  • 71. 71Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) • 予測結果の⽐較 SELECT *, price < 100000 AS target FROM houses JOIN houses_pred USING (id) ORDER BY id; id price prediction decision_function observed 1 50000 True 0.0938672144798 True 2 85000 True 0.134445050269 True 3 22500 True 1.90320546663 True 4 90000 True 0.34410006693 True 5 133000 False -0.314618105199 False 6 90500 False -1.53502545094 True 7 260000 False -2.5421155107 False 8 142500 True 0.608110606339 False 9 160000 False -1.49051126913 False … … … … … id price prediction decision_function observed 1 50000 True 2.42762512244 True 2 85000 True 1.76050726948 True 3 22500 True 1.14044931256 True 4 90000 True 1.10706143597 True 5 133000 False -1.26570595537 False 6 90500 True 1.33794522323 True 7 260000 False -1.0164054774 False 8 142500 False -1.09640506629 False 9 160000 False -1.92695648532 False … … … … … リニアモデルによる予測結果 ノンリニアモデルによる予測結果
  • 72. 72Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) • AUC (Area under the curve) による識別性能の⽐較 select madlib.area_under_roc('houses_pred_roc', 'houses_pred_roc_output', 'prediction', 'observed'); area_under_roc 0.79464285714285714285500000000000000000000 • リニアモデル select madlib.area_under_roc('houses_pred_gaussian_roc', 'houses_pred_gaussian_roc_output', 'prediction', 'observed'); • ノンリニアモデル area_under_roc 1.00000000000000000000000000000000000000000
  • 73. 73Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 例2­2. : UC Irvine Machine Learning Repository - Adult Data Set http://archive.ics.uci.edu/ml/datasets/Adult • 1994年の国勢調査に基づくデータ • 性別、年齢、学歴、職種などの情報に加えて、所得が$50K/年を 超えているかいないかが記録されている • 属性情報からその⼈の所得が$50K/年を超えているかを予測する ためによく使われるデータセット 例2:サポートベクターマシン(SVM) SVMを使った試⾏錯誤の詳細は下記URLで! https://github.com/ooyamams/pgconf.asia_tutorial
  • 74. 74Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 例2­2. : UC Irvine Machine Learning Repository - Adult Data Set http://archive.ics.uci.edu/ml/datasets/Adult 例2:サポートベクターマシン(SVM) SVMを使った試⾏錯誤の詳細は下記Githubで! https://github.com/ooyamams/pgconf.asia_tutorial/blo b/master/MADlib_test_SVM_adult.ipynb
  • 75. 75Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 1.Apache MADlib (Incubating) 使ってみた感想 • UDFを⾃分で作成せずに、PostgreSQL内のデータに対して⾼度な分 析や機械学習ができるのは⼤変魅⼒的。 • ただし… Ø ⼩さいデータであれば、DBからロードして、ローカルPCにて PythonやらRやらで分析したほうが効率的であるのは確か。 (Pythonの機械学習系のライブラリの充実度は素晴らしい) Ø サポートベクターマシンを本格的に使うとなるとパラメーター チューニングが⼤変。グリットサーチやベイズ最適化などの ツール類がまだ存在しない(たぶん)なので追加されることを期 待。(クロスバリデーションはできる。)
  • 76. 76Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! • GPL 3.0 • スロベニアのリュブリャナ⼤学バイオインフォマティクス研究所が中 ⼼となって開発 • AXLE PROJECT で開発が推進されたソフトウェアの⼀つ (Advanced Analytics for Extremely Large European Databases) 2.その他のツール http://orange.biolab.si/orange3/
  • 77. 77Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! 2.その他のツール
  • 78. 78Copyright©2016 NTT corp. All Rights Reserved. 豊富なツールを使いこなせ! • PostGIS http://www.postgis.net/ Ø PostgreSQL データベースで地理空間情報を扱うための拡張 Ø ⽇本語による紹介記事 http://lets.postgresql.jp/documents/tutorial/PostGIS/1/ • ⽇本語全⽂検索ツール Ø pg_bigm http://pgbigm.osdn.jp/ Ø PGroonga https://pgroonga.github.io/ja/ pg_bigmの開発者である澤⽥雅彦による⽇本語全⽂検索の解説 http://www.slideshare.net/hadoopxnttdata/postgresqlpgbigm -mysqlpostgresql 2.その他のツール
  • 79. 79Copyright©2016 NTT corp. All Rights Reserved. 最後に改めて… データ分析の専⾨家が、短い間隔で、様々なデータを組み合わせて ⾼度な分析を⾏うことが⼤事! →PostgreSQLは良い選択肢です! 1.データ分析の専⾨家が⾼度なツールを使って分析している 2.短い間隔でデータ分析を⾏っている 3.様々な種類のデータを組み合わせてデータ分析を⾏っている データ活⽤の効果があった企業の特徴