Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PostgreSQLから見るNoSQL
MyNA・JPUG 合同DB勉強会 in 東京
What is it?
RDBの限界を感じた事ありませんか?
What is it?
PostgreSQLは新しい選択肢を用意します
What is it?
外部データラッパ
(Foreign Data Wrapper)
What is it?
PostgreSQLはRDBの外の世界と繋がる
What is it?
FDWの
使い方と作り方
をご紹介します
What is it?
内部実装や細かい仕様
の話は今日はしません
あじぇんだ
1 自己紹介
2 外部データラッパーとは
3 外部データラッパーを使う
4 外部データラッパーを作る
5 まとめ
あじぇんだ
1 自己紹介
2 外部データラッパーとは
3 外部データラッパーを使う
4 外部データラッパーを作る
5 まとめ
自己紹介
名前:曽根 壮大(そね たけとも)
年齢:30歳(三人の子供がいます)
職業:Webエンジニア
所属:日本PostgreSQLユーザ会
   中国支部 支部長
  技術的にはLL系言語とかRDBが好きです
あじぇんだ
1 自己紹介
2 外部データラッパーとは
3 外部データラッパーを使う
4 外部データラッパーを作る
5 まとめ
FDWとは
外部テーブルを作成するための機能
(外部のデータをtableにする)
FDWとは
外部データにテーブルと同様に
SQL文でアクセスできる
FDWとは
• WHEREやORDER BYが使える
• GROUP BYなどの集合関数も使える
• JOINなど、他tableと関連付け出来る
• 更新や削除も出来る(ただし9.3から)
FDWとは
外部データ
↓
DB、CSV、JSON、WebAPIなんでも良い
FDWとは
PostgreSQL
to
PostgreSQL
FDWとは
MySQL
to
PostgreSQL
FDWとは
MongoDB
to
PostgreSQL
FDWとは
Git
to
PostgreSQL
SQL Databases Wrappers
• postgres_fdw
• oracle_fdw
• mysql_fdw
• odbc_fdw
• jdbc_fdw
NoSQL Databases Wrappers
• couchdb_fdw
• MonetDB FDW
• mongo_fdw
• redis_fdw
• Neo4j fdw
• Tycoon FDW
Others
• git_fdw
• ldap_fdw
• IMAP_fdw
• s3_fdw
• www_fdw
• OS_fdw
FDWとは
その他に既に多くの実装がある
あじぇんだ
1 自己紹介
2 外部データラッパーとは
3 外部データラッパーを使う
4 外部データラッパーを作る
5 まとめ
SQL Databases Wrappers
• postgres_fdw
• oracle_fdw
• mysql_fdw
• odbc_fdw
• jdbc_fdw
FDWを使う
MySQLPostgreSQL
FDWを使う
MySQLPostgreSQL
TABLE
FDWを使う
EXTENSION
MySQLPostgreSQL
TABLE
FDWを使う
EXTENSION
MySQLPostgreSQL
TABLE
mysql_fdwをインストールする
FDWを使う
server
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
FDWを使う
server
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
MySQLの接続先を設定する
MySQLの接続ユーザを設定する
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
PostgreSQLの外部tableを作成する
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
SQLで問い合わせ
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
SQLで問い合わせ
外部tableにアクセス
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
アクセス先を確認
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
MySQLにクエリを投げる
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
実行結果を取得
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
実行結果を表示
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
FDWを使う
百聞は一見(デモ)し如かず
あじぇんだ
1 自己紹介
2 外部データラッパーとは
3 外部データラッパーを使う
4 外部データラッパーを作る
5 まとめ
FDWを使う
server
FOREIGN
TABLE
EXTENSION
USER MAPPING
MySQLPostgreSQL
TABLE
Client
ここを作る
FDWを作る
現時点では
ほんの少しの元気と勇気と
PostgreSQLの内部構造に関する知識
がある程度必要です。
FDW超詳しい人
FDWを作る
なんか出来そう!!
FDWを作る
1週間後…
FDWを作る
圧倒的挫折…
FDWを作る
出来る人の簡単
FDWを作る
出来る人の簡単
↓
凡人の超えられない壁
FDWを作る
それなりの覚悟とちゃんとした
PostgreSQLとCの知識が必要
FDWを作る
でも大丈夫
FDWを作る
簡単にPythonで作る方法がある
FDWを作る
Multicorn
Multicorn
FDWを
Pythonで実装する
ためのLibrary
Multicorn
案ずるより産むが易し
(作ってみたのでデモ)
あじぇんだ
1 自己紹介
2 外部データラッパーとは
3 外部データラッパーを使う
4 外部データラッパーを作る
5 まとめ
まとめ
PostgreSQLから外の世界に繋げる
まとめ
他DBと結合、集約関数が使える
まとめ
外部tableはRDB、NoSQL問わない
まとめ
FDWは既に多くの実装がある
(車輪の再発明が要らない)
まとめ
しかし速くは無い
(オーバヘッドはそれなりにある)
まとめ
FDWは作れる
↓
ガッツリ作る場合はC
サクッと作る場合はPython
まとめ
多様性は善
まとめ
PostgreSQLは多様性を受け入れる
まとめ
PostgreSQLは多様性を受け入れる
参考資料
・公式PostgreSQL Wiki
https://wiki.postgresql.org/wiki/Foreign_data_wrappers
・PGXN(PostgreSQL Extension Network)
http://...
FDWにおける銀の弾丸
花田さん(@s87)をWatchする
FDWにおける銀の弾丸
花田さん(@s87)をWatchする
↓
今日の会場に潜んでるらしい
ご静聴ありがとうございました。
Upcoming SlideShare
Loading in …5
×

Postgre sqlから見るnosql

5,886 views

Published on

MyNA・JPUG合同DB勉強会 in 東京の登壇資料です。

https://dbstudychugoku.github.io/events/tokyo-001.html

  • Be the first to comment

Postgre sqlから見るnosql

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

×