.Water-Sunlight
.サイトメニュー
.検索
.オンライン状況
登録ユーザ: 0
ゲスト: 3
.
<< Prev
データベースの利用
« INDEX »
PHP データベース編
Next >>
DSN(Data Source Name)
作成日:2006/06/06

3A.2 データベースI/F

 一般に、中規模以上のWebプログラムは3層モデルでシステムを構成します。 3層モデルとは、下図のようにプレゼンテーション層、アプリケーション層、 データベース層の3つの層(レイヤ)でシステムを構成するモデルです。 そして、データベース層はクラスなどにより抽象化されているのが理想的です。 データベース層が抽象化されている事により、システムはより移植性に優れたものになりWebサーバの選択にも幅ができます。 この意味で、データベースとのインターフェースは重要な因子になります。

例えばPerlでデータベースを使ったプログラムを作る場合、データベースとのインターフェースにはDBIクラスを使います。 特別な場合を除けば、おそらくDBIクラス以外の選択肢は少ないのではないでしょうか。 PerlのDBIは各種データベースドライバ(DBD)に対して統一的なインターフェースを提供します。 従って、DBIにより実装されたPerlプログラムは移植性に優れ、データソース名(DSN)を変えるだけで、 多様なデータベースに対応したプログラムを作る事ができます。

一方、PHPはどうでしょうか。PHPの場合はPerlとは異なり多くの選択肢があります。 PHPの場合、データベースI/Fに限らずライブラリの選定には多くの選択肢があります。 これは標準で利用可能なライブラリの他に様々な拡張ライブラリが存在する事に起因します。 PHPが提供する公式の拡張ライブラリを以下に挙げます。 これらの拡張ライブラリの全てにPHPのデータベースI/Fは含まれています。

公式の拡張ライブラリ
名称説明
標準のエクステンション PHPに標準でバンドルされている拡張ライブラリです。 静的に( PHPをコンパイル/リンクして ) 組み込む方法と、php.iniを変更して動的に組み込む方法があります。 C言語ペースのバイナリモジュールとして提供されます。
PECL PECL( PHP Extension Code Library ) もC言語ペースのバイナリモジュールとして提供されますが、 PHPにバンドルされいるのではなく、PECLサイトからダウンロードして使用します。 標準のエクステンションとPECLの違いはバンドルされいるか否かで、実質的には同じです。

http://pecl.php.net/

PEAR PEAR( PHP Extension and Application Repository ) もPHPの拡張ライブラリです。 PHPにバンドルされているものと PEARサイトからダウンロードして使用するものに分かれます。 バンドル・エクステンションやPECLとの違いは PEARがPHPベースのライブラリだという点です。 PEARはバイナリモジュールではないのでシステム管理者でない利用者( レンタルサーバなど )でも手軽に利用できます。

http://pear.php.net/

※ 標準のエクステンションとPECLは実質的に同じなので、以降、単にエクステンションと呼びます。

 歴史的にPHPのデータベースI/Fを見ると、 初期のPHPではエクステンションに含まれていたデータベースのネイティブなドライバを使っていました。 その後「データベース抽象化レイア」と呼ばれるデータベースに対する統一的なインターフェースが提供されるようになりました。 その中で最も有名なのが PEAR::DB です。しかしながら、Webプログラムが肥大化する一方、PEAR::DB も機能的にも肥大化し、 またPEARがPHPベースで提供されいることもあり、パフォーマンスの観点から問題が出てきました。 そこで、PHP5から PDO ( PHP Data Object ) と呼ばれる新しい「データベース抽象化レイア」が登場しました。 PDOは PEAR::DB の機能を引き継ぎ、エクステンションとして提供されているので、 パフォーマンス的にも PEAR::DB より優れています。 今後、PHP5が普及するに従いPDOが主流になると思います。

PHPのデータベースI/Fを簡単な図式で表現すると以下のようになります。

過去ネイティブドライバ 速度は速いが、データベースごとにコードを記述する必要があった
現在PEAR::DB 共通のAPIを提供するが、速度面で問題が発生することもある
未来PDO( PHP Data Object ) 共通のAPIを提供し、速度も早くなる

以上の観点から本編では、現在の主流である PEAR::DB と今後の主流となるであろう PDO を中心に例題を使って説明します。


<< Prev
データベースの利用
« INDEX »>
Page Top
Next >>
DSN(Data Source Name)

.