Movatterモバイル変換


[0]ホーム

URL:


Satoshi Yamada, profile picture
Uploaded bySatoshi Yamada
PDF, PPTX4,841 views

PostgreSQLとPythonとSQL

SQLやDBの簡単な概要とPythonの親和性、FDW等についての資料です。みんなのPython勉強会#19 で使用しました。https://startpython.connpass.com/event/37958/

Embed presentation

Download as PDF, PPTX
1SQLで遊んでみよう!- PostgreSQLで始めるDB再入門 -みんなのPython勉強会2016/12/7山田聡@denzowill
2本発表内容は所属する会社と何ら関係はなく、私個人の見解しか含んでおりません
30.Who am I?http://enterprisezine.jp/dbonline/detail/8307?p=2● 山田聡@denzowill● StartPythonClubスタッフ● 株式会社アシスト勤務● DBエンジニア6年目● ノンプログラマ、趣味でPython● PostgreSQLとOracleが担当
4アジェンダ1.データベースって?2.PostgreSQLとPython3.SQLの基本4.FDW
5アジェンダ1.データベースって?2.PostgreSQLとPython3.SQLの基本4.FDW
61.データベース● 軍事情報をあつめた基地が由来● 様々な目的で利用するため、整理統合されたデータの集合体● データ活用の基盤として存在一元管理共有利用独立性
71.データベース● 軍事情報をあつめた基地が由来● 様々な目的で利用するため、整理統合されたデータの集合体● データ活用の基盤として存在一元管理共有利用独立性同じデータが散ってるのつらいアプリとデータはお互いに疎でありたいみんなで仲良くしたい
8以降DBは全部RDBMSのことです
91.データベースの種類メジャーな商用RDBMS
101.データベースの種類メジャーなオープンソースのRDBMS
111.OSSDBと商用DB無償で利用できるソースが公開されている自己責任※有償サポートもライセンス料がかかるソース非公開(1企業開発)メーカ責任発展性 安定性など など
121.OSSDBと商用DB技術に自身があるなら全然活用できる!何かあったら不安だからメーカにまかせたい!本当に止められないシステムに挑戦的なシステムやコストを抑えたいシステムになど など
131.OSSDBと商用DBの機能差●コア機能はほとんど差はない●パフォーマンス(パラレル)●高可用性(レプリケーション)●セキュリティ●管理補助の充実
141.OSSDBと商用DBの機能差●コア機能はほとんど差はない●パフォーマンス(パラレル)●高可用性(レプリケーション)●セキュリティ●管理補助の充実
15アジェンダ1.データベースって?2.PostgreSQLとPython3.SQLの基本4.FDW
162.PostgreSQLとPython
172.PostgreSQLはPythonが大好き●PL/Python●SQL関数がPythonでかける●PgAdmin4●管理ツールはFlask製
182.PostgreSQLはPythonが大好き●PL/Python●SQL関数がPythonでかける●PgAdmin4●管理ツールはFlask製sampledb=# CREATE OR REPLACE FUNCTION hello_python(hello_count int)sampledb-# RETURNS SETOF textsampledb-# AS $$sampledb$#sampledb$# for n in range(hello_count):sampledb$# yield "HELLO WORLD"sampledb$#sampledb$# $$ LANGUAGE plpythonu;CREATE FUNCTIONsampledb=# select hello_python(5);hello_python--------------HELLO WORLDHELLO WORLDHELLO WORLDHELLO WORLDHELLO WORLD(5 rows)
192.PostgreSQLはPythonが大好き●PL/Python●SQL関数がPythonでかける●PgAdmin4●管理ツールはFlask製
20アジェンダ1.データベースって?2.PostgreSQLとPython3.SQLの基本4.FDW
213.SQLの基本SQLStructured Query Language●RDBMSへの操作用●非手続き型言語●データの検索・操作●最近はRDBMS以外でも使える
22射影3.SQLの基本SELECT col1, col2 FROM table1;tabl1のすべての行のcol1,col2を表示してください。
23選択3.SQLの基本SELECT col1, col2 FROM table1WHERE col3 = 100;tabl1のcol3が100の行についてcol1,col2を表示してください。
24ソート3.SQLの基本SELECT col1, col2 FROM table1WHERE col3 = 100 ORDER BY col1;tabl1のcol3が100の行についてcol1,col2をcol1の順番で表示してください。
25結合3.SQLの基本SELECTtable1.col1,table2.col1FROMtable1 JOIN table2ON table1.co2 = tabl2.col3table1のcol2とtable2のcol3について同じ行を取得して、table1のcol1とtable2のcol1を表示してください。
26結合3.SQLの基本SELECTtable1.col1,table2.col1FROMtable1 JOIN table2ON table1.co2 = table2.col3JOIN table3ON table2.col2 = table3.col2;table1のcol2とtable2のcol3について同じ行を取得して、さらにその行のcol2とtable3のcol2が同じ行についてtable1のcol1とtable2のcol1を表示してください。
27集約3.SQLの基本SELECT col1, count(*)FROM table1GROUP BY col1;tabl1についてcol1が同じものをまとめて、それぞれについて行数を表示(count(*))してください。
283.SQLの基本col1 | col2 | col3-----------+------+------APPLE | 1 | 100APPLE | 2 | 100APPLE | 2 | 300PEN | 1 | 100PEN | 1 | 200PINEAPPLE | 1 | 200PINEAPPLE | 1 | 100PINEAPPLE | 2 | 100PINEAPPLE | 2 | 300PINEAPPLE | 2 | 400col1 | count-----------+-------PEN | 2APPLE | 3PINEAPPLE | 5
29ここまで欲しいデータの条件しか指定していないことにお気づきですか?
303.手続き型SQLは非手続き型●ほしいデータの条件を指定するだけ●データをどう取り出すかは指定しない●取り出す経路はシステム側に託す●データをどう取り出すか含め開発する●どれをループするのか●どれを条件として比較するのかPythonは手続き型
313.手続き型col1 | col2 | col3-----------+------+------APPLE | 1 | 100APPLE | 2 | 100APPLE | 2 | 300PEN | 1 | 100PEN | 1 | 200PINEAPPLE | 1 | 200PINEAPPLE | 1 | 100PINEAPPLE | 2 | 100PINEAPPLE | 2 | 300PINEAPPLE | 2 | 400[{"col1": "APPLE","col2": 1,"col3": 100,},{"col1": "APPLE","col2": 2,"col3": 100,},:Pythonで扱う想定でディクショナリにしたもの
323.SQLで処理したならsampledb=# SELECT col1, col2 FROM table1sampledb-# WHERE col3 = 100 ORDER BY col1;col1 | col2-----------+------APPLE | 1APPLE | 2PEN | 1PINEAPPLE | 1PINEAPPLE | 2(5 rows)
333.Pythonで同じ処理をするならresult = []# col3==100のデータに絞込for row in data:if row["col3"] == 100:result.append(row)# col1でソートresult.sort(key=lambda x: x["col1"])# 結果の表示for row in result:print row["col1"], row["col2"]
343.Pythonで同じ処理をするならresult = []# col3==100のデータに絞込for row in data:if row["col3"] == 100:result.append(row)# col1でソートresult.sort(key=lambda x: x["col1"])# 結果の表示for row in result:print row["col1"], row["col2"]
353.Pythonで同じ処理をするならresult = []# col3==100のデータに絞込for row in data:if row["col3"] == 100:result.append(row)# col1でソートresult.sort(key=lambda x: x["col1"])# 結果の表示for row in result:print row["col1"], row["col2"]
363.Pythonで同じ処理をするならresult = []# col3==100のデータに絞込for row in data:if row["col3"] == 100:result.append(row)# col1でソートresult.sort(key=lambda x: x["col1"])# 結果の表示for row in result:print row["col1"], row["col2"]
373.Pythonで同じ処理をするなら逆でも結果は同じだが、遅くなる開発者が最適な手続きを考えるresult = []# col3==100のデータに絞込for row in data:if row["col3"] == 100:result.append(row)# col1でソートresult.sort(key=lambda x: x["col1"])# 結果の表示for row in result:print row["col1"], row["col2"]
38非手続き型言語(SQL)では誰が手続きを考えるのか
393.SQLで手続きを作る流れプランナ,オプティマイザ※製品で呼称は違うSQL表の行数データの分布
403.SQLで手続きを作る流れプランナ,オプティマイザ※製品で呼称は違うSQL表の行数データの分布実行計画
413.SQLで手続きを作る流れプランナ,オプティマイザ※製品で呼称は違うSQL表の行数データの分布実行計画データへアクセスする手続き
423.SQLで手続きを作る流れ●大体はプランナの実行計画のほうが優れている●何個も表が結合するSQLの最適解は人間には無理●たまにプランナも失敗する●プランナが上手に動ける環境を整えるのが大事
43アジェンダ1.データベースって?2.PostgreSQLとPython3.SQLの基本4.FDW
444.FDWForeign Data Wrapper外部データラッパー:PostgreSQL 9.1から導入された拡張機能外部のDBや、CSVといった外部リソースをPostgreSQLのテーブルとして扱う機能。様々なリソースにSQLで透過的にアクセスできます。
454.FDWSQLFDW
464.FDWの種類https://wiki.postgresql.org/wiki/Foreign_data_wrappers
474.FDWの作り方FDWの仕様に従って必要なインターフェースを実装するだけ!
484.FDWの作り方FDWの仕様に従って必要なインターフェースを実装するだけ!C言語で!
494.FDWの作り方FDWの仕様に従って必要なインターフェースを実装するだけ!C言語で!つらいorz
504.FDWの作り方https://wiki.postgresql.org/wiki/Foreign_data_wrappersType:Multicorn?
514.FDWの作り方http://multicorn.org/
524.Multicorn●PythonでFDWを実装できるライブラリ●Multicornのクラスを継承して実装するだけfrom multicorn import ForeignDataWrapperclass ConstantForeignDataWrapper(ForeignDataWrapper):def __init__(self, options, columns):super(ConstantForeignDataWrapper, self).__init__(options, columns)self.columns = columnsdef execute(self, quals, columns):for index in range(20):line = {}for column_name in self.columns:line[column_name] = '%s %s' % (column_name, index)yield line
53残りの時間で独自のFDWを実装
54残りの時間で独自のFDWを実装するには残りの時間が短すぎるので続きは次の機会で
55あなたもPythonとPostgreSQLで遊んでみてください

Recommended

PDF
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
PDF
TECHTALK 20201020 Qlik DataTransferによるクラウド版Qlik Senseへのデータ転送・更新の自動化
PDF
Oracle Analytics Cloud のご紹介【2021年3月版】
PDF
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
PDF
DMBOKをベースにしたデータマネジメント
PPTX
Elsevier: Empowering Knowledge Discovery in Research with Graphs
 
PDF
Oracle APEX概要
PDF
Kubernetes based connected vehicle platform #k8sjp_t1 #k8sjp
PPTX
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
PPTX
VMC-02-VMware Cloud on AWS のご紹介_2021.pptx
PDF
Yahoo! JAPANのデータ基盤とHadoop #dbts2016
PDF
Apache Kuduを使った分析システムの裏側
PDF
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
PPTX
Azure VMware Solution (AVS) 概要 (2019年11月版)
PPTX
Salesforceの標準オブジェクトについて復習してみた
PDF
アサヒのデータ活用基盤を支えるデータ仮想化技術
 
PPTX
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
PDF
インフラCICDの勘所
PDF
あなたのクラウドは大丈夫?NRI実務者が教えるセキュリティの傾向と対策 (Oracle Cloudウェビナーシリーズ: 2021年11月24日)
PDF
データ分析基盤、どう作る?システム設計のポイント、教えます - Developers.IO 2019 (20191101)
PDF
はじめてのOracle Cloud Platform
PDF
Oracle Cloud Infrastructure:2021年9月度サービス・アップデート
PDF
サーバを仮想化したのにネットワークはこれまで通りでいい?←いや、いや、そんなわけないでしょ
PDF
データベース01 - データベースとは
PDF
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
PDF
PostgreSQL Unconference #5 ICU Collation
PDF
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
PDF
Fargateを使いこなす!creatiaのインフラを支える技術について
PDF
Logをs3とredshiftに格納する仕組み
PDF
PostgreSQLとpython

More Related Content

PDF
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
PDF
TECHTALK 20201020 Qlik DataTransferによるクラウド版Qlik Senseへのデータ転送・更新の自動化
PDF
Oracle Analytics Cloud のご紹介【2021年3月版】
PDF
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
PDF
DMBOKをベースにしたデータマネジメント
PPTX
Elsevier: Empowering Knowledge Discovery in Research with Graphs
 
PDF
Oracle APEX概要
PDF
Kubernetes based connected vehicle platform #k8sjp_t1 #k8sjp
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
TECHTALK 20201020 Qlik DataTransferによるクラウド版Qlik Senseへのデータ転送・更新の自動化
Oracle Analytics Cloud のご紹介【2021年3月版】
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
DMBOKをベースにしたデータマネジメント
Elsevier: Empowering Knowledge Discovery in Research with Graphs
 
Oracle APEX概要
Kubernetes based connected vehicle platform #k8sjp_t1 #k8sjp

What's hot

PPTX
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
PPTX
VMC-02-VMware Cloud on AWS のご紹介_2021.pptx
PDF
Yahoo! JAPANのデータ基盤とHadoop #dbts2016
PDF
Apache Kuduを使った分析システムの裏側
PDF
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
PPTX
Azure VMware Solution (AVS) 概要 (2019年11月版)
PPTX
Salesforceの標準オブジェクトについて復習してみた
PDF
アサヒのデータ活用基盤を支えるデータ仮想化技術
 
PPTX
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
PDF
インフラCICDの勘所
PDF
あなたのクラウドは大丈夫?NRI実務者が教えるセキュリティの傾向と対策 (Oracle Cloudウェビナーシリーズ: 2021年11月24日)
PDF
データ分析基盤、どう作る?システム設計のポイント、教えます - Developers.IO 2019 (20191101)
PDF
はじめてのOracle Cloud Platform
PDF
Oracle Cloud Infrastructure:2021年9月度サービス・アップデート
PDF
サーバを仮想化したのにネットワークはこれまで通りでいい?←いや、いや、そんなわけないでしょ
PDF
データベース01 - データベースとは
PDF
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
PDF
PostgreSQL Unconference #5 ICU Collation
PDF
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
PDF
Fargateを使いこなす!creatiaのインフラを支える技術について
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
VMC-02-VMware Cloud on AWS のご紹介_2021.pptx
Yahoo! JAPANのデータ基盤とHadoop #dbts2016
Apache Kuduを使った分析システムの裏側
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
Azure VMware Solution (AVS) 概要 (2019年11月版)
Salesforceの標準オブジェクトについて復習してみた
アサヒのデータ活用基盤を支えるデータ仮想化技術
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
インフラCICDの勘所
あなたのクラウドは大丈夫?NRI実務者が教えるセキュリティの傾向と対策 (Oracle Cloudウェビナーシリーズ: 2021年11月24日)
データ分析基盤、どう作る?システム設計のポイント、教えます - Developers.IO 2019 (20191101)
はじめてのOracle Cloud Platform
Oracle Cloud Infrastructure:2021年9月度サービス・アップデート
サーバを仮想化したのにネットワークはこれまで通りでいい?←いや、いや、そんなわけないでしょ
データベース01 - データベースとは
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
PostgreSQL Unconference #5 ICU Collation
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
Fargateを使いこなす!creatiaのインフラを支える技術について

Similar to PostgreSQLとPythonとSQL

PDF
Logをs3とredshiftに格納する仕組み
PDF
PostgreSQLとpython
PPTX
Webアプリケーション入門(3)
PDF
外部データラッパによる PostgreSQL の拡張
PDF
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
PDF
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
PPTX
PandasとSQLとの比較
PDF
経済学のための実践的データ分析 4.SQL ことはじめ
PDF
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PDF
PostgreSQLによるデータ分析ことはじめ
PPT
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
PPT
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
PDF
Lt ingaoho-jsonb+postgeres fdw
PDF
リレーショナルデータベースとの上手な付き合い方 long version
PDF
MySQL 5.5 Update #denatech
PDF
オープンソース・データベースの最新事情
PPTX
SQLチューニング入門 入門編
PPTX
Tuning on my_sql
PPTX
NoSQL Bigtable and Azure Table
PDF
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
Logをs3とredshiftに格納する仕組み
PostgreSQLとpython
Webアプリケーション入門(3)
外部データラッパによる PostgreSQL の拡張
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
PandasとSQLとの比較
経済学のための実践的データ分析 4.SQL ことはじめ
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PostgreSQLによるデータ分析ことはじめ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
Lt ingaoho-jsonb+postgeres fdw
リレーショナルデータベースとの上手な付き合い方 long version
MySQL 5.5 Update #denatech
オープンソース・データベースの最新事情
SQLチューニング入門 入門編
Tuning on my_sql
NoSQL Bigtable and Azure Table
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)

More from Satoshi Yamada

PDF
Pythonで業務改善をしたときにあった問題(ライト版)
PDF
pythonでemlファイルを扱う話
PDF
bottle.pyをつかったチャットアプリ作成チュートリアル
PDF
bottleで始めるWEBアプリの最初の一歩
PDF
Requestsで始める5分前帰社
PDF
DBエンジニアに必要だったPythonのスキル
PDF
本気でPythonで宛名書きした話
PDF
10080分でPythonからIP Messeneger
PDF
15分で情シスに怒られる方法
PDF
Djangoで業務改善したい
PDF
PostgreSQL実行計画入門@関西PostgreSQL勉強会
PDF
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PDF
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
Pythonで業務改善をしたときにあった問題(ライト版)
pythonでemlファイルを扱う話
bottle.pyをつかったチャットアプリ作成チュートリアル
bottleで始めるWEBアプリの最初の一歩
Requestsで始める5分前帰社
DBエンジニアに必要だったPythonのスキル
本気でPythonで宛名書きした話
10080分でPythonからIP Messeneger
15分で情シスに怒られる方法
Djangoで業務改善したい
PostgreSQL実行計画入門@関西PostgreSQL勉強会
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)

PostgreSQLとPythonとSQL


[8]ページ先頭

©2009-2025 Movatter.jp