Upload
kosuke-kida
View
1.389
Download
0
Embed Size (px)
Citation preview
1/13
みんなのPython勉強会#15 2016.8.10(Tue)
はじめてのデータ分析にPostgreSQLを選択する理由
日本PostgreSQLユーザ会喜田 紘介発表後、公開用にスライドの追加、
各スライドに補足用の図など入れています。
※発表時は文字だらけだったので、図はすべて後から 追加したものだったりw
2/13
自己紹介
Python歴 1日
3/13
自己紹介
Python歴 1日
PHP、Perl、Pythonいろいろあるけど
なにが違うんだろう?
言語系のコミュって盛り上がってるし
楽しそう!データ分析といったら
Pythonなの?
みんな・・・!ぽすぐれ使ってくれ! プログラム
書けるようになりたい
ポスグレのデータ分析能力を
ちゃんと使いたい!
という想いを秘めて、Pythonの勉強はじめました!
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
5/13
データ分析に適したDBは?今日はデータベースの話をします。● 分析の処理をプログラムで頑張って書く、(Pythonなら用意され
たライブラリを使う)とかが当然必要だけど、そこで入力として用意されるデータはどこから取ってくるのが良いか
● ガチで分析する場合と、ライトに分析する場合で異なると思う
どう組合せて使う?
プログラム(python)
クライアント
library
データソース・CSV ・DB ・HDFS
:
発表後、追記したスライド
6/13
データ分析に適したDBは?集計・分析を”気軽に”行いたい
SQLで触れるRDBMS
7/13
SQLで触れるRDBMS気軽にはじめるならSQL● 性能
✔ RDBMSは、基本的には1ノードで捌けるものをACIDを守って扱う✔ 超大量データだと超えられない壁にぶつかる、でも結構がんばれる!✔ スピードだけならHadoopとかの分散処理基盤が有利な分野ではある
● 利便性✔ 集めたデータをどう使うか✔ SQLで触れる=各種フロントアプリケーションで気軽にレポーティング
プログラム(python)
フロントエンドのアプリケーション
library
データベースSQLをしゃべるデータ置き場
SQL
8/13
データ分析に適したDBは?集計・分析を”気軽に”行いたい
無料データ量、コア数、ノード数関係なし
9/13
無料で使えるRDBMS気軽に使えるオープンソースのデータベース● ライセンス
✔ PostgreSQLはBSDを改編したPostgreSQLライセンスで配布✔ 改変自由、商用利用OK、つまり気軽に使い始められる!!!
ドキュメント等にPostgreSQLをベースにしていることを明記すればよい。● PostgreSQL と MySQL
✔ 良く比較されるけど、あるシーンでは明確に使い分けができる– 軽量なトランザクションを数千~数万同時アクセスでバンバン捌く
– JOIN、集計、サブクエリ・・・複雑なクエリで性能を出す
MySQL軽量なトランザクションをさばく事に特化している一気に数万アクセス来るWebサービスとか
PostgreSQL複雑なクエリや大量データも、現実的な時間で処理が可能便利機能がたくさんあって書ききれません!(後述)
10/13
データ分析に適したDBは?集計・分析を”気軽に”行いたい
分析用途で使える豊富な能力
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のライブラリを
活かして分析処理
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関数の作成方法を 紹介してくれているブログです。
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のデザインが話し合われたり✔ アジア圏の超大規模事例の発表なんかにも期待があつまります。✔ 日本のユーザ事例も求めています!