PHPにおけるDBライブラリについて質問です。


現在、

「OOPではなくベタ書き(関数化はしている)」
「DBアクセスはPHP標準関数で」
「DBやテーブルの設計・生成・変更などはphpMyAdminによる操作が中心」
「フレームワークは全く使っていない」

…という感じでWebアプリ開発を行っています。(ただし今後はなるべくOOP化を進めていきます)


しかし最近書籍や雑誌などでDBライブラリの有用性を読むにつけ、導入したくなりました。特にDRYやCoCを実現したTDD・アジャイル開発に興味があります。O/Rマッピングという機能もかなり便利そうな予感がします。

そこでDB抽象化のためにどのライブラリを使うべきか迷っています。

有名どころを複数列挙していただき、それぞれのメリット・デメリットについて比較する形で教えていただけないでしょうか。できるだけ具体的かつ簡潔な箇条書きだとありがたいです。いま検討しているのは、PEAR:DB、PDO、ADOdb、Propelなどです。他にもあれば教えてください。単純に機能だけでなく、インストールの簡単さ・メンテナンスの容易さなども考慮しています。

最も参考になった回答の方に300~500ポイント差し上げます。

回答の条件
  • 1人3回まで
  • 登録:2009/02/21 21:27:02
  • 終了:2009/02/26 10:33:53

回答(3件)

id:esecua No.1

esecua回答回数510ベストアンサー獲得回数102009/02/22 14:52:04

ポイント100pt

全てにおいて今のところadodbに勝るライブラリはないでしょう。

かなりポピュラーなPear DBが出来ることはほぼ全てカバーし、尚かつ処理速度が断然速い。

キャッシュ機能からトランジアクション機能もついており大規模なサービスまでカバーできる体制にある。

又、多数の使用実績もあり信頼性においてもおすすめ。

インストールやアップデートも単にファイルをアップするだけでおk。わざわざコマンド打って、、、なんてする必要なし。

その他にも様々な機能を搭載(PagerやCSVエクスポート機能等)

これらの機能を導入する際も数行のコードで済む場合が多く敷居が低い。

手軽、高機能、安全、それがADODB

短所:

日本語ドキュメントが充実していない。

場合によっては英語ドキュメントを読む必要あり。

id:dreamzico

ありがとうございます。

やはりADOdbが一番良さそうなんえすね。

インストールが簡単なのも良い点です。

2009/02/24 12:11:12
id:hyottokohamutarou No.2

hyottokohamutarou回答回数2ベストアンサー獲得回数12009/02/22 23:35:14

ポイント100pt

フレームワークを使ったほうがいいと思います。

CAKEPHP、ZEND FRAMEWORKはDLして解凍すればすぐ使えますし。

O/Rマッピングも強力ですし、内部でDB抽象化ライブラリも使ってるので、

ソースを追えば勉強しながら機能拡張も可能です。

DB抽象化のオーバーヘッドに注力するよりは、

MVCでアジャイル開発に力点をおくのが正解だと思います。

id:dreamzico

なるほど、フレームワークに内蔵されているDB関連機能を利用すれば、

結局DBライブラリやO/Rマッパーとして使えるんですね。

それらの機能は、単体(?)のDBライブラリのそれと比較して、

何か劣る点や気をつけるべき点などはありますでしょうか?

たとえばADOdbとCakePHP(のDB関連機能)を比較した場合の

それぞれの長所・短所があれば教えていただければ幸いです。

2009/02/24 12:13:39
id:esecua No.3

esecua回答回数510ベストアンサー獲得回数102009/02/22 14:55:06

ポイント10pt

全てにおいて今のところadodbに勝るライブラリはないでしょう。

かなりポピュラーなPear DBが出来ることはほぼ全てカバーし、尚かつ処理速度が断然速い。

キャッシュ機能からトランジアクション機能もついており大規模なサービスまでカバーできる体制にある。

又、多数の使用実績もあり信頼性においてもおすすめ。

インストールやアップデートも単にファイルをアップするだけでおk。わざわざコマンド打って、、、なんてする必要なし。

その他にも様々な機能を搭載(PagerやCSVエクスポート機能等)

これらの機能を導入する際も数行のコードで済む場合が多く敷居が低い。

手軽、高機能、安全、それがADODB

短所:

日本語ドキュメントが充実していない。

場合によっては英語ドキュメントを読む必要あり。

  • id:esecua
    すいません、更新ボタンを押してしまって2回同じ回答をポストしてしまいました。

    同じ内容ですので、2つ開かれないようお願いします。
  • id:esecua
    Pear::DBは既に開発は終了していますね。
    http://pear.php.net/package/DB

    どうやら新ライブラリへの移転が警告されているようです。
  • id:hyottokohamutarou
    CAKEPHPはADOdbを内臓しているので、設定ファイルでチョチョっと指定してやればすぐつかえます。
    指定したら、後はADOdbを意識することなく、CAKEPHPのロジックでDB操作を行うことになります。
    ただ、やはりフレームワークでラッパーしている分、
    ADOdb単体で使うよりもパフォーマンスは落ちるとおもいます。
    また、細かいチューニングが必要なら、単体で使う方がハマる危険性は少ないでしょう。

  • id:dreamzico
    質問投稿者です。
    お二方ともおすすめの方法を提示してくださってありがとうございました。

    ポイント配分につきましては、当初の目的であった「複数有名ライブラリのメリット・デメリット比較」という点が達成されなかったため、このような形にさせていただきました。ご了承ください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません