9.1 データベースの基本的な利用法

database/sql パッケージでデータベースの扱い方を触れる前に、Goでデータベースを扱うときの全体像を押さえておきましょう。データベース周辺の技術には大きく以下の3つのレイヤーがあります。

  • アプリケーションコード(ORMを含む)

  • 汎用API

  • データベースドライバー

../_images/overview.png

アプリケーションからデータベースにアクセスするためにはデータベース固有のプロトコルを用いてアクセスする必要があり、各データベース向けに実装されているドライバーを使います。レイヤーでいうと、データベースにもっとも近い層です。一方Goの database/sql パッケージはGoのアプリケーションから呼び出すためのAPIを提供します。データベースドライバーの実装に依存しない汎用的なAPIです。コネクションプーリングや並行処理の制御といった複雑な処理を database/sql パッケージで吸収します。標準ライブラリの database/sql パッケージを使うだけで安全でスケーラビリティがあるデータベースアクセスを実現できます 1 。ドライバー向けには database/sql/driver パッケージとしてインタフェースを提供しています。アプリケーションのコードから driver パッケージを利用することはありません。各データベースにアクセスするときは対象のドライバーをimport して利用します。Goの構造体をデータベースのスキーマあるいはテーブルにマッピングできる、いわゆるORMは標準ライブラリとしては提供されていません。 ...