2019-06-11 Shinjuku Mokumoku Programming #47 https://shinjuku-moku.connpass.com/event/129675/
今日書いていたのは Db2 のデーターベースドライバー
- https://github.com/nakagami/pydrda
- αリリース程度
- 作りかけで3年くらい放置してたけど 10連休の間に動くようになってきたので、取り組んでいる
- 数年来、趣味で python のデータベースドライバーを書いている
- データーベースドライバーは、平たくいうとTCP ストリームで SQL文(文字列)を送って表形式の結果を受け取る
- テーマとしては自分には難しいが、思ったように結果が受け取れると、「やったー」というお気持ち
- プロトコルドキュメントとして、動く疑似コードを書いておこうというモチベーションでやっている
- ドライバーを書くにあたって、 OSS の RDBMS であれば、ソースコードが読める
- ネットワークプロトコルのドキュメントは OSS もOSS でないものも、意外とある
- PyCon JP 2016 で発表した https://gist.github.com/nakagami/bfbe98d62377f3f4554121ab161ae8c9
- Python では、PEP-249 https://www.python.org/dev/peps/pep-0249/ という規約に従ってデーターベースドライバーを書くことが普通
- PEP-249 は、JDBCドライバーのようが厳密性はなく、努力目標がかかれたドキュメントのようなもの
- PEP-249 に書かれていない機能をバンバン実装しているドライバーもある
仕様がゆったりと定義されていて、探せばプロトコルドキュメントがある(かも)。 仕事でも Python を書いているので慣れている。
- Db2 は IBM に古くからある RDBMS で、Linux/Windows だけじゃなくて、汎用機や AIX でも動いたりする(らしい)
- python から使う場合には IBM 謹製のドライバーがある https://pypi.org/project/ibm-db/ (ただし PEP-249 とは異なる API)
- 最近 dash DB とかいう名前で、インメモリ DWH の亜種もあったりする
- DB-Engine Ranking というサイトでは着実に順位を落としている https://db-engines.com/en/ranking_trend/system/IBM+Db2
- IBM の RDBMS は、 DRDA というプロトコル https://en.wikipedia.org/wiki/DRDA を喋る
- 評価用としてDB2 Express-C というバージョンが(Linux/Windows)でダウンロードしてインストールできる
- 最近 IBM クラウドの無料の範囲でDb2 が使えるようになった (Max 5接続/100MB)