【おーでぃーびーしー】

ODBC とは?

💡 異なるDBに「同じ接続方法」でアクセスできる標準API
📌 このページのポイント
ODBC データベース接続の抽象化 アプリケーション Excel Webアプリ 分析ツール ODBC 統一インターフェース 共通のSQL文で操作 ドライバマネージャ データベース MySQL PostgreSQL SQL Server ODBCがあれば、DB製品が変わってもアプリの書き換えが不要
ODBC接続の抽象化イメージ
ひよこ ひよこ

ODBCって何?

ペンギン先生 ペンギン先生

DBに接続するための「共通規格のAPI」だよ。ODBCを使えば同じコードでMySQLOracleSQLiteなど異なるDBに接続できる。DBを変更してもアプリ側のコードを大きく変えなくていい。

ひよこ ひよこ

ExcelでDBを使うときにODBCって出てくるの?

ペンギン先生 ペンギン先生

そう。Excelの「外部データ取得」でDBからデータを取り込むとき、ODBCデータソースを設定してMySQLPostgreSQLなどのDBに接続できる。Windowsコントロールパネルに「ODBCデータソースアドministrator」という設定ツールがある。

ひよこ ひよこ

おもしろい!今も使われてるの?

ペンギン先生 ペンギン先生

古い規格だけど今も現役。特に企業のレガシーシステムや、ExcelからDBへのデータ抽出に使われている。Webアプリではより言語に密接した(pymysql・psycopg2・JDBC)を使うことが多いけど、ODBCも現場ではよく見かける。

ひよこ ひよこ

ODBCとJDBCって何が違うの?

ペンギン先生 ペンギン先生

ODBCは言語を問わない汎用規格で、JDBCJava専用のDB接続APIJDBCJava型システムと統合されていてJavaからは使いやすい。ODBCはC言語ベースでOS依存が強い。最近のWebアプリではORM(Object-Relational Mapping)を使うことが多く、ODBCを直接意識する場面は減っているよ。

ひよこ ひよこ

ORMって何?ODBCの代わりになるの?

ペンギン先生 ペンギン先生

ORMプログラミング言語オブジェクトとDBのテーブルを自動的に対応付ける仕組みだよ。PythonのSQLAlchemy、JavaのHibernate、RubyのActiveRecordが有名。SQLを直接書かなくてもDBを操作できる。ただしORMが裏で生成するSQLが非効率なこともあるから、パフォーマンスが重要な場面では生SQLを書く技術も必要なんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ODBCって出てきたら「異なるDBに共通の方法でアクセスできる標準接続APIExcelからDBを使うときにも登場する」と思えばOK!
📖 おまけ:英語の意味
「Open Database Connectivity」 = 開放型データベース接続
💬 1992年にMicrosoftが主導して策定したAPI規格。「Open」は特定のDBに依存しない「開放型(標準)」を意味する
← 用語集にもどる