Download - Postgre sqlから見るnosql
![Page 1: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/1.jpg)
PostgreSQLから見るNoSQLMyNA・JPUG 合同DB勉強会 in 東京
![Page 2: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/2.jpg)
What is it?
RDBの限界を感じた事ありませんか?
![Page 3: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/3.jpg)
What is it?
PostgreSQLは新しい選択肢を用意します
![Page 4: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/4.jpg)
What is it?
外部データラッパ (Foreign Data Wrapper)
![Page 5: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/5.jpg)
What is it?
PostgreSQLはRDBの外の世界と繋がる
![Page 6: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/6.jpg)
What is it?
FDWの
使い方と作り方
をご紹介します
![Page 7: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/7.jpg)
What is it?
内部実装や細かい仕様
の話は今日はしません
![Page 8: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/8.jpg)
あじぇんだ
1 自己紹介 2 外部データラッパーとは 3 外部データラッパーを使う 4 外部データラッパーを作る 5 まとめ
![Page 9: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/9.jpg)
あじぇんだ
1 自己紹介 2 外部データラッパーとは 3 外部データラッパーを使う 4 外部データラッパーを作る 5 まとめ
![Page 10: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/10.jpg)
自己紹介名前:曽根 壮大(そね たけとも) 年齢:30歳(三人の子供がいます) 職業:Webエンジニア
所属:日本PostgreSQLユーザ会
中国支部 支部長
技術的にはLL系言語とかRDBが好きです
![Page 11: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/11.jpg)
あじぇんだ
1 自己紹介 2 外部データラッパーとは 3 外部データラッパーを使う 4 外部データラッパーを作る 5 まとめ
![Page 12: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/12.jpg)
FDWとは
外部テーブルを作成するための機能 (外部のデータをtableにする)
![Page 13: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/13.jpg)
FDWとは
外部データにテーブルと同様に SQL文でアクセスできる
![Page 14: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/14.jpg)
FDWとは
• WHEREやORDER BYが使える • GROUP BYなどの集合関数も使える • JOINなど、他tableと関連付け出来る • 更新や削除も出来る(ただし9.3から)
![Page 15: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/15.jpg)
FDWとは
外部データ ↓
DB、CSV、JSON、WebAPIなんでも良い
![Page 16: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/16.jpg)
FDWとは
PostgreSQL to
PostgreSQL
![Page 17: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/17.jpg)
FDWとは
MySQL to
PostgreSQL
![Page 18: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/18.jpg)
FDWとは
MongoDB to
PostgreSQL
![Page 19: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/19.jpg)
FDWとは
Git to
PostgreSQL
![Page 20: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/20.jpg)
SQL Databases Wrappers • postgres_fdw • oracle_fdw • mysql_fdw • odbc_fdw • jdbc_fdw
![Page 21: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/21.jpg)
NoSQL Databases Wrappers• couchdb_fdw • MonetDB FDW • mongo_fdw • redis_fdw • Neo4j fdw • Tycoon FDW
![Page 22: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/22.jpg)
Others• git_fdw • ldap_fdw • IMAP_fdw • s3_fdw • www_fdw • OS_fdw
![Page 23: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/23.jpg)
FDWとは
その他に既に多くの実装がある
![Page 24: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/24.jpg)
あじぇんだ
1 自己紹介 2 外部データラッパーとは 3 外部データラッパーを使う 4 外部データラッパーを作る 5 まとめ
![Page 25: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/25.jpg)
SQL Databases Wrappers • postgres_fdw • oracle_fdw • mysql_fdw • odbc_fdw • jdbc_fdw
![Page 26: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/26.jpg)
FDWを使うMySQLPostgreSQL
![Page 27: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/27.jpg)
FDWを使うMySQLPostgreSQL
TABLE
![Page 28: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/28.jpg)
FDWを使う
EXTENSION
MySQLPostgreSQL
TABLE
![Page 29: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/29.jpg)
FDWを使う
EXTENSION
MySQLPostgreSQL
TABLE
mysql_fdwをインストールする
![Page 30: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/30.jpg)
FDWを使う
server
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
![Page 31: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/31.jpg)
FDWを使う
server
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
MySQLの接続先を設定する
MySQLの接続ユーザを設定する
![Page 32: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/32.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
![Page 33: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/33.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
PostgreSQLの外部tableを作成する
![Page 34: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/34.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
![Page 35: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/35.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
ClientSQLで問い合わせ
![Page 36: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/36.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
ClientSQLで問い合わせ
外部tableにアクセス
![Page 37: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/37.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
アクセス先を確認
![Page 38: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/38.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
MySQLにクエリを投げる
![Page 39: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/39.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
実行結果を取得
![Page 40: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/40.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client実行結果を表示
![Page 41: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/41.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
![Page 42: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/42.jpg)
FDWを使う
百聞は一見(デモ)し如かず
![Page 43: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/43.jpg)
あじぇんだ
1 自己紹介 2 外部データラッパーとは 3 外部データラッパーを使う 4 外部データラッパーを作る 5 まとめ
![Page 44: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/44.jpg)
FDWを使う
server
FOREIGN TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
ここを作る
![Page 45: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/45.jpg)
FDWを作る
現時点では ほんの少しの元気と勇気と
PostgreSQLの内部構造に関する知識 がある程度必要です。
FDW超詳しい人
![Page 46: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/46.jpg)
FDWを作る
なんか出来そう!!
![Page 47: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/47.jpg)
FDWを作る
1週間後…
![Page 48: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/48.jpg)
FDWを作る
圧倒的挫折…
![Page 49: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/49.jpg)
FDWを作る
出来る人の簡単
![Page 50: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/50.jpg)
FDWを作る
出来る人の簡単 ↓
凡人の超えられない壁
![Page 51: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/51.jpg)
FDWを作る
それなりの覚悟とちゃんとした PostgreSQLとCの知識が必要
![Page 52: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/52.jpg)
FDWを作る
でも大丈夫
![Page 53: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/53.jpg)
FDWを作る
簡単にPythonで作る方法がある
![Page 54: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/54.jpg)
FDWを作る
Multicorn
![Page 55: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/55.jpg)
Multicorn
FDWを Pythonで実装する ためのLibrary
![Page 56: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/56.jpg)
Multicorn
案ずるより産むが易し (作ってみたのでデモ)
![Page 57: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/57.jpg)
あじぇんだ
1 自己紹介 2 外部データラッパーとは 3 外部データラッパーを使う 4 外部データラッパーを作る 5 まとめ
![Page 58: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/58.jpg)
まとめ
PostgreSQLから外の世界に繋げる
![Page 59: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/59.jpg)
まとめ
他DBと結合、集約関数が使える
![Page 60: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/60.jpg)
まとめ
外部tableはRDB、NoSQL問わない
![Page 61: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/61.jpg)
まとめ
FDWは既に多くの実装がある (車輪の再発明が要らない)
![Page 62: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/62.jpg)
まとめ
しかし速くは無い (オーバヘッドはそれなりにある)
![Page 63: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/63.jpg)
まとめ
FDWは作れる ↓
ガッツリ作る場合はC サクッと作る場合はPython
![Page 64: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/64.jpg)
まとめ
多様性は善
![Page 65: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/65.jpg)
まとめ
PostgreSQLは多様性を受け入れる
![Page 66: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/66.jpg)
まとめ
PostgreSQLは多様性を受け入れる
![Page 67: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/67.jpg)
参考資料
・公式PostgreSQL Wiki https://wiki.postgresql.org/wiki/Foreign_data_wrappers
・PGXN(PostgreSQL Extension Network) http://pgxn.org/
・公式ドキュメント(日本語) https://www.postgresql.jp/document/9.4/html/postgres-fdw.html
![Page 68: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/68.jpg)
FDWにおける銀の弾丸
花田さん(@s87)をWatchする
![Page 69: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/69.jpg)
FDWにおける銀の弾丸
花田さん(@s87)をWatchする ↓
今日の会場に潜んでるらしい
![Page 70: Postgre sqlから見るnosql](https://reader031.vdocuments.mx/reader031/viewer/2022013115/55be4282bb61eb96288b4653/html5/thumbnails/70.jpg)
ご静聴ありがとうございました。