こんにちは、アフロです
今日は後輩に「ODBCってなんですか?」と聞かれたので彼に伝えた内容をここでもまとめておこうという試みです
DB接続部分は一度作ったらそんなに何度も触れることもないから、これまで意識してこなくてもなんとなくでやってこれたのだろう。というか私がそうでした(笑)
もし同じようにODBCって何?と思った方がいればぜひ読んでみてくださいな
ODBCとは?
インターネットで調べてみると「アプリケーションからDBMSへ接続してデータの取得・更新を行うための方法を定めたもので、Microsotf社が制定したものです」
みたいな感じで出てきます
完結でその通りなのですが、完結過ぎてイメージついてない状態だと『はあ、そうですか』で終わって何もイメージできないんですよね
もっといえば数年前の私がそうでした。なのでもう少しイメージ化したり言葉を補足していきます
概要を簡単に
まず、DBって色々な会社が提供してくれてますよね
Microsoft社のSQLServer、オラクル社のOralce Database・MySQL、PstgreSQL等々
これらの製品に応じてDB接続部分の処理を実装するのって嫌ですよね
定型的になるのでしょうが、だったら省略したい
また、もしDBの製品を乗換えることになった時もコーディングは最低限にしたいですよね
この課題を解消するためにMicrosoftがあらかじめ各種DBの接続仕様を決めておいてくれたというものです
アプリから見れば接続部分の実装を吸収してくれるので、コーディングが少なくなったり製品ごとの特性をあまり意識しなくて良くなるというメリットがあります
イメージ図でよりわかりやすく
僕はアプリケーション、こんな感じのDB接続情報を持っているのでこれを使ってDB接続するよ。よろしくね
ドライバーマネージャーです
この定義だとSQLServerへの接続ですね、じゃあSQLServerさんに繋げますね
おーい、SQLServerさーん
はい、SQLServerです
接続できているのでクエリいただければ実行して結果を返しますよ
みたいな感じです
ちなみにこの書き方にしたのは人が話す吹き出しの機能を使ってみたかっただけです(笑)
アプリから見ると、多くの製品に顔が利くドライバーマネージャーさんに接続情報さえ渡せば適切な製品のDBへ接続してくれるのですごく楽になるよというわけです
アプリで接続する部分を作り込まなくても良いし、もしもデータベースが変わってもアプリ側では定義情報を修正するだけためにちょこっと修正すれば良いだけだから改修も少なくて済むという感じです
最後に
ODBCをふわっと説明したのはこんな感じでした
もしかしたら100点満点の回答ではないのかもしれませんが、イメージを掴めれば公式のドキュメントを読めるようになったり、障害時や基盤更改のときにはどこの話なのかがわかるかなということで説明しました
アプリから直接データソースへ接続情報を渡すという方法でDB接続ができることはできますが、このメリットってどういったことがあるのでしょうか
ODBCのバージョンアップ影響を受けなくて良いってことなんでしょうか
詳しい方がいたら教えていただけると嬉しいです!
コメント