基本コード

先のコラムにも書いたのだが、共通パーツはそれぞれ奥が深い。
できるとしたら、それぞれ抽象化した機能を自己完結できるモジュールに分けて用意するのが妥当だろう。
オブジェクト指向言語用ならば、それはクラスファイルになるだろうし、前時代的な関数ライブラリなのかもしれない。

私が携わるプロジェクトは

が多い。
この数年はもっぱらPHPなのだが、相変わらずcgi形式でperlを用いるプロジェクトも多いのが現状。

ここでは一番頻度の高いPHPを中心にDB処理について考えてみる。
PHPでDBに接続するアプローチはいくつかある。

  • 各DB用の組み込み関数を用いる
  • PEARライブラリのDBインターフェースを用いる
  • JDBCODBCの専用関数で統一し、ミドルウェアレベルでDB処理を一本化する

一番多いのは組み込み関数を用いるケースなのではないか。
PostgreSQLならばpgを接頭語に持つ関数群を用いる。
ただこのケースだと厄介なのが、DBが変わったときだ。

サイトの立ち上げ時のビジネスモデルは「極力お金をかけない」なんてのがあったりする。
そのときにイッパシのDBサーバとして機能提供してくれるのが、PostgreSQLmySQLである。
ところが立ち上げ後に予想以上の反響があり、アクセスが集中したりデータ件数が爆発的に増加した場合に、やはり商用DBに変えたいなんてことはよくある話だ。

そんなときに組み込み関数で構成されたシステムは、少なくともDBアクセスする部分は全面的に改定する必要がある。
そんなことを念頭にすると、PEARJDBCをかませてシステム構築をしたほうが、スケーラビリティは断然高まる。

共通パーツを用意しておく、ともなると、あるDBに依存さた組み込み関数で作成していると、違うDBが使われる場合に、使えないパーツになってしまう。
各DB用関数にあわせたパーツをそれぞれ作ることも可能ではあるが、保守が大変になる。

かといってPEARはすべての環境に入っているわけではない。

いやー難しいねってこと。