|
||||||||
| 1 2 次のページ | ||||||||
| PDO(PHP Database Object)の特徴(3) | ||||||||
| 性能の向上 | ||||||||
PDOの性能を、単純なINSERT処理を行って測定してみました。この結果は、図2、図3のとおりです。 |
||||||||
![]() 図2:MySQLベンチマーク結果(INSERT) |
||||||||
![]() 図3:PostgreSQLベンチマーク結果(INSERT) |
||||||||
Part4の第1回で紹介した図1のモジュールの位置付けと結果がほぼ一致しました。PDOでは、単純なSQLであれば、ネイティブドライバとほぼ同等の性能が出ているようです。実行性能が求められるケースでも、共通APIが提供されているPDOを利用すれば、異なるDBMSに対応できるスクリプトの作成が容易に行えるでしょう。また、プレースホルダを使ったケースでも性能はほとんど変わらないことがわかりました。対比としてPEAR::DBのプレースホルダを使ったケースでは、パラメータの正当性チェックや、エスケープ処理が行われるため、予想したとおり、プレースホルダを使用しないケースと比べ遅くなっていることもわかります。 今回測定に用いたPostgreSQLはPREPARE文が実装されているので、これも一緒に測定してみました。結果を見ると、やはりPDOのprepare()メソッドは、プレースホルダとしての機能しか実装されていないことがわかります。 以上の結果から、PDOモジュールの方向性は、PEAR::DBに非常に似かよっていますが、性能面も考慮すると、今後PHP5におけるデータベース抽象化レイヤの雄となることが予見できます。 |
||||||||
| コアモジュールとドライバモジュールの分離(1) | ||||||||
PDOでは、コアモジュールとドライバモジュールが分かれたことにより、非常に柔軟なモジュール提供が可能になっています。モジュールのバージョンアップは主に次のように行われます(コラム「PHP拡張モジュールの提供方法」も参照)。 |
||||||||
|
||||||||
|
PHP拡張モジュールの提供方法 PHPのモジュールは、2種類の方法で提供されています。1つは、本体とともに拡張モジュールとして提供する方法、もう1つは、PECL(PHP Extension Community Library)で提供する方法です。 前者の方法で提供されているのは、必須モジュールや比較的利用頻度が高いモジュールです。それ以外のモジュールは、後者の方法で提供されています。次に、それぞれの提供方法の特徴を示します。
この違いは、どういった点に影響するでしょうか?これまでのPHPのDBMS拡張モジュール(ネイティブドライバ)は本体に含まれているため、DBMSクライアントライブラリに変更があった場合でも、即座に対応バージョンが提供されるということはありませんでしたが、PECLで提供されるとなれば、タイムリーな提供を期待できます。 しかし、PECLにも問題がないわけではありません。頻繁にバージョンアップが行われると、バージョン管理の問題や、PHP本体のバージョンとの整合性など、導入後のメンテナンスが面倒になるおそれがあります。 |
||||||||
|
1 2 次のページ |
||||||||
|
|
||||||||
|
|
||||||||
|
||||||||
|
|
||||||||
|
||||||||
|
|
||||||||



