Ticket #564 (assigned 改善提案) — at Version 9

Opened 16 years ago

Last modified 15 years ago

PEAR::DB から PEAR::MDB2 or ADOdb への変更

Reported by: nanasess Owned by: nanasess
Priority: Milestone: EC-CUBE2.11.0
Component: その他 Version: コミュニティ (eccube-comu)
Keywords: Cc:
修正済み:

Description (last modified by nanasess) (diff)

現在, DB の抽象化ライブラリとして PEAR::DB を使用しているが, 以下の問題がある.

  • PEAR::DB は PHP ライセンスであり, GPL と矛盾する
  • もうメンテナンスされてない

上記の理由により PEAR::MDB2 若しくは ADOdb へ変更する

MDB2
 http://pear.php.net/package/MDB2/
ADOdb
 http://adodb.sourceforge.net/

導入要件

  • GPL と矛盾しないライセンスで配布されていること
  • Sequence 取得の抽象化メソッドがあること
    • Sequence に関して PostgreSQL 及び MySQL を同一のコードベースで記述可能なこと
  • データベースのメタデータを扱うメソッドがあること
  • 活発にメンテナンスされていること

利点

  • PEAR::MDB2
    • 2.5.x では, PDO 用のドライバも有り
    • エラーハンドリングを, 他の PEAR パッケージと統一可能
  • ADOdb
    • 速いというウワサ
    • キャッシュ機構あり
    • adodb-errorpear.inc.php を include すれば, PEAR::Error も使用可能
    • adodb-errorhandler.inc.php で, 任意のエラー定数で trigger_error を使用可能

欠点

  • PEAR::MDB2
    • PHP の include_path に, 他の PEAR クラスが存在すると, 関数の多重定義エラーになる
    • EC-CUBE のエラーハンドリングが貧弱なため, DBエラーが発生すると無限ループする
  • ADOdb
    • DB::last_query に相当する機能が無い(EC-CUBE 本体では未使用)
    • adodb-errorpear.inc.php を使用した場合, 出力するエラー文字列が膨大になり, memory_limit を越える場合がある

参考

Change History

comment:1 Changed 16 years ago by nanasess

  • Component changed from フロント to その他
  • Description modified (diff)
  • Summary changed from PEAR::DB から PEAR::MDB2 への変更 to PEAR::DB から PEAR::MDB2 or ADOdb への変更

comment:2 Changed 16 years ago by nanasess

  • Status changed from new to assigned
  • Description modified (diff)

現状は, どちらも導入要件を満たしていそうなので, サンプルコードを書いてみることにします.

comment:3 Changed 16 years ago by nanasess

  • Description modified (diff)

comment:4 Changed 16 years ago by nanasess

  • Description modified (diff)

PEAR::DB から PEAR::MDB2 へ移行のための参考サイト追加.

現状は, PEAR::DB への依存が激しすぎるので MDB2 の方が妥当かも...

comment:5 Changed 16 years ago by nanasess

  • Description modified (diff)

comment:6 Changed 16 years ago by nanasess

  • Description modified (diff)

説明を更新.

PEAR::MDB2 の欠点の影響が強すぎ, 簡単に動いてくれないので, ADOdb を使用する方向で検討.

comment:7 Changed 16 years ago by nanasess

r18390 で ADOdb を使用するよう改修した SC_DbConn のパッチをコミット

comment:8 Changed 16 years ago by nanasess

  • Description modified (diff)

comment:9 Changed 16 years ago by nanasess

  • Description modified (diff)
Note: See TracTickets for help on using tickets.