13
1/13 みんなのPython勉強会#15 2016.8.10(Tue) はじめてのデータ分析に PostgreSQLを選択する理由 日本PostgreSQLユーザ会 喜田 紘介 発表後、公開用にスライドの追加、 各スライドに補足用の図など入れています。 ※発表時は文字だらけだったので、図はすべて後から 追加したものだったりw

はじめてのデータ分析にPostgreSQLを選択する理由

Embed Size (px)

Citation preview

Page 1: はじめてのデータ分析にPostgreSQLを選択する理由

1/13

みんなのPython勉強会#15 2016.8.10(Tue)

はじめてのデータ分析にPostgreSQLを選択する理由

日本PostgreSQLユーザ会喜田 紘介発表後、公開用にスライドの追加、

各スライドに補足用の図など入れています。

※発表時は文字だらけだったので、図はすべて後から 追加したものだったりw

Page 2: はじめてのデータ分析にPostgreSQLを選択する理由

2/13

自己紹介

Python歴 1日

Page 3: はじめてのデータ分析にPostgreSQLを選択する理由

3/13

自己紹介

Python歴 1日

PHP、Perl、Pythonいろいろあるけど

なにが違うんだろう?

言語系のコミュって盛り上がってるし

楽しそう!データ分析といったら

Pythonなの?

みんな・・・!ぽすぐれ使ってくれ! プログラム

書けるようになりたい

ポスグレのデータ分析能力を

ちゃんと使いたい!

という想いを秘めて、Pythonの勉強はじめました!

Page 4: はじめてのデータ分析にPostgreSQLを選択する理由

4/13

自己紹介

Python歴 1日

Pythonの勉強会に来るので、「Python PostgreSQL」で検索してみたら、自社のブログがひっかかったのでやってみた→著者はこの勉強会の常連、山田氏だったw

https://www.ashisuto.co.jp/db_blog/article/20160308_postgresql_with_python.html

ちなみに、私のブログで初心者向けにPostgreSQLの構築方法を書いていてその環境で本手順を試しました。

PythonからPostgreSQLを使う方法

http://kkida-galaxy.blogspot.jp/2016/07/pg95-on-cent7.html

Page 5: はじめてのデータ分析にPostgreSQLを選択する理由

5/13

データ分析に適したDBは?今日はデータベースの話をします。● 分析の処理をプログラムで頑張って書く、(Pythonなら用意され

たライブラリを使う)とかが当然必要だけど、そこで入力として用意されるデータはどこから取ってくるのが良いか

● ガチで分析する場合と、ライトに分析する場合で異なると思う

どう組合せて使う?

プログラム(python)

クライアント

library

データソース・CSV ・DB  ・HDFS

発表後、追記したスライド

Page 6: はじめてのデータ分析にPostgreSQLを選択する理由

6/13

データ分析に適したDBは?集計・分析を”気軽に”行いたい

SQLで触れるRDBMS

Page 7: はじめてのデータ分析にPostgreSQLを選択する理由

7/13

SQLで触れるRDBMS気軽にはじめるならSQL● 性能

✔ RDBMSは、基本的には1ノードで捌けるものをACIDを守って扱う✔ 超大量データだと超えられない壁にぶつかる、でも結構がんばれる!✔ スピードだけならHadoopとかの分散処理基盤が有利な分野ではある

● 利便性✔ 集めたデータをどう使うか✔ SQLで触れる=各種フロントアプリケーションで気軽にレポーティング

プログラム(python)

フロントエンドのアプリケーション

library

データベースSQLをしゃべるデータ置き場

SQL

Page 8: はじめてのデータ分析にPostgreSQLを選択する理由

8/13

データ分析に適したDBは?集計・分析を”気軽に”行いたい

無料データ量、コア数、ノード数関係なし

Page 9: はじめてのデータ分析にPostgreSQLを選択する理由

9/13

無料で使えるRDBMS気軽に使えるオープンソースのデータベース● ライセンス

✔ PostgreSQLはBSDを改編したPostgreSQLライセンスで配布✔ 改変自由、商用利用OK、つまり気軽に使い始められる!!!

ドキュメント等にPostgreSQLをベースにしていることを明記すればよい。● PostgreSQL と MySQL

✔ 良く比較されるけど、あるシーンでは明確に使い分けができる– 軽量なトランザクションを数千~数万同時アクセスでバンバン捌く

– JOIN、集計、サブクエリ・・・複雑なクエリで性能を出す

MySQL軽量なトランザクションをさばく事に特化している一気に数万アクセス来るWebサービスとか

PostgreSQL複雑なクエリや大量データも、現実的な時間で処理が可能便利機能がたくさんあって書ききれません!(後述)

Page 10: はじめてのデータ分析にPostgreSQLを選択する理由

10/13

データ分析に適したDBは?集計・分析を”気軽に”行いたい

分析用途で使える豊富な能力

Page 11: はじめてのデータ分析にPostgreSQLを選択する理由

11/13

分析用途で使える豊富な能力PostgreSQLを分析に使う● 分析に耐えられるSQL

✔ JOINのアルゴリズムが複数用意されている✔ window関数による集計

● 大量データへの対応✔ パラレルクエリ 1つのSQLを勝手に内部で分割して複数コアで賢く処理✔ パーティショニング 大量データのうち条件にあうものだけを検索

● 外部機能との連携✔ FDWによる外部データソースの参照✔ PL/Pythonで、Pythonで動作する関数を書ける、SQLから呼べる

Pythonフロントエンド

library

PostgreSQLPL/Pythonパラレル

SQL

SELECT py_func(data);

みたいなことがSQLで書ける。

PL/Python

py_funcはPythonで定義Pythonのライブラリを

活かして分析処理

Page 12: はじめてのデータ分析にPostgreSQLを選択する理由

12/13

参考PostgreSQLを分析に使う● Why PostgreSQL for Analytics Infrastructure (DW)?

● パラレル処理可能な集約関数をPL/Pythonで作成する

http://www.slideshare.net/nvquanghuy/why-postgresql-for-analytics-infrastructure-dw

http://pgsqldeepdive.blogspot.jp/2016/07/plpython-parallel-aggregation.html

英語ですが、今日述べたような機能をより詳しく紹介してくれています。

自作したpy_func関数をSELECT文で実行できるわけですが、それを更にパラレル処理してくれる能力を、  最新のPostgreSQLは身につけています。パラレル処理できるようなPython関数の作成方法を  紹介してくれているブログです。

Page 13: はじめてのデータ分析にPostgreSQLを選択する理由

13/13

告知直近のPostgreSQL関連イベント● 9/9(金)Database Lounge Tokyo #2

✔ PostgreSQL、MySQL、Oracleのバックアップについて         各DBの著名人が語り合います。http://database-lounge-tokyo.connpass.com/

● 9/10(土)PostgreSQL アンカンファレンス✔ リリース前の新Ver 9.6に関する開発裏話や、初心者・中級車のやってみた系

ノウハウ系など多岐にわたる話。http://pgunconf.connpass.com/event/37285/

✔ 1枠20分のスロットを当日の参加者で埋めて進めます。Pythonネタもぜひ!● 12/2(金)、3(土)PGConf.Asia

✔ アジア初のPostgreSQLに関する国際カンファレンス http://www.pgconf.asia/JP/

✔ 著名開発者が集まり、今後のPostgreSQLのデザインが話し合われたり✔ アジア圏の超大規模事例の発表なんかにも期待があつまります。✔ 日本のユーザ事例も求めています!