エントリを書くのは実に半年以上ぶりなのですが、今回は以前から試してみたかったdblinkネタをお届けします。
■なぜ今さら「dblink」?
PostgreSQLには、PostgreSQL、あるいは異種DBMSのデータベース連携を実現する手段として、dblinkとForeign Data Wrapper (FDW) が提供されています。
- https://www.postgresql.jp/document/10/html/dblink.html
- https://www.postgresql.jp/document/10/html/postgres-fdw.html
しかし、実際にデータベース連携を実現していく中で、FDWでは対応が困難なシーンがあります。
- FDWを使って外部テーブルを実装する際に設定すべき項目が多い。
- FDWは、VIEWのようにクエリを定義(固定)して使うため、アドホックな(もしくは動的に変わる)クエリのリモート実行ができない。
- FDWのAPIは年々複雑化しており、もはや普通の開発者が気軽に拡張できるレベルでない。
- そもそも、Cで開発できる or したい人はもうそんなにいない。
PostgreSQLの強みのひとつは「拡張性の高さ」です。そのため、その「拡張性の高さ」を最大限に活かす実装を目指します。








