25

誠意を持って再利用できるオープンソースプロジェクトの下でこれまでに開発された最高のPHPDAL(データ抽象化レイヤー)は何ですか?

最も一般的なデータベースシステム(MySQL、PostgreSQL、MSSQL、Oracleなど)への抽象化を十分にサポートするDALをアプリケーションに選択するのは難しいと感じています。

  1. 広くテストされ、
  2. 優れたインターフェース(読み取り可能なメソッド名、優れたパラメーター受け渡し戦略)、
  3. 速い、
  4. 軽量、
  5. キャッシュを提供する(たとえば、Memcacheと統合する、または優れたキャッシュメカニズムをサポートする)、
  6. オープンソースライセンス、
  7. 少なくともMySQL/MySQLi(非PDOベース)用のアダプターが必要です

考慮すべきライブラリのいくつか:

考慮しないでください:

  • PDO
  • すべてのORM(ただし、DoctrineにはORM以外に個別のDALがあるようです)
4

7 に答える 7

12

PHP 5.3 を使用できる場合は、Doctrine DALを強くお勧めします。これは PDO の上に構築されているため、同じパフォーマンスと優れた API が得られます。

更新: Doctrine が良くない場合は、MDB2を試すことができます。一般的な RDBMS のほとんどのドライバー、堅牢な API、優れたドキュメント、および膨大なユーザー ベースが含まれています。

  • MySQL
  • MySQLi (PHP5 のみ)
  • PostgreSQL
  • オラクル
  • フロントベース
  • Interbase/Firebird (PHP5 のみ)
  • MSSQL
  • SQLite
于 2011-10-22T08:45:29.253 に答える
2

MySQL のみを使用する必要がある場合は、PHP を使用して MySQL 用の DALMP データベース アブストラクション レイヤーを使用します。オプションにすることができます

cache/memcache/redis で動作し、セッション処理も非常にシンプルで軽量です。

于 2013-12-21T14:45:35.273 に答える
2

主にスキーマ/データベース/テーブルの作成でドクトリンDBALに問題がありました。バグがあり、ドキュメントの一部は実際のインターフェースやクラスメソッドとは異なりました(正しいバージョンのドキュメントを読みました)。生のSQLステートメントを使用する必要がありましたそれらのいくつか。
それ以外はすべて問題ないようでした。小さなプロジェクトだったので、doctrine DBAL が提供するすべての機能を使用しませんでした。

注: 私は約 1 年前に doctrine DBAL と php の最新の安定バージョンでそれを行いました。おそらく、これらの問題はすべて修正されています。

于 2011-10-25T11:17:39.483 に答える
2

私はPropelの経験が豊富です。Doctrineも同様です。良いことを聞いたことがありますが、経験がありません。

于 2011-10-18T13:22:27.507 に答える
2

Doctrine 2.0 は、Zend フレームワークや Symfony などの最上位のフレームワークによってサポートされているため、市場で最高のものです。

mangodb などの nosql db もサポートしています。

アプリケーションを強化できるキャッシュシステムが組み込まれています。

また、ページネーション、クエリビルダーなどの拡張機能もサポートしています

プロペルとドクトリンのベンチマーク結果の一部を次に示します。

                               | Insert | findPk | complex| hydrate|  with  |
                               |--------|--------|--------|--------|--------|
                  PDOTestSuite |    132 |    149 |    112 |    107 |    109 |
             Propel14TestSuite |    953 |    436 |    133 |    270 |    280 |
        Propel15aLa14TestSuite |    926 |    428 |    143 |    264 |    282 |
             Propel15TestSuite |    923 |    558 |    171 |    356 |    385 |
    Propel15WithCacheTestSuite |    932 |    463 |    189 |    342 |    327 |
           Doctrine12TestSuite |   1673 |   2661 |    449 |   1710 |   1832 |
  Doctrine12WithCacheTestSuite |   1903 |   1179 |    550 |    957 |    722 |
            Doctrine2TestSuite |    165 |    426 |    412 |   1048 |   1042 |
   Doctrine2WithCacheTestSuite |    176 |    423 |    148 |    606 |    383 |

これらは Doctrine 2 の結果の重要な所見です。

doctrine 2.0でパフォーマンスがどのように向上したか、最後の2つの記録を参照してください...

于 2011-10-28T13:45:11.883 に答える
1

Zend_Dbはどうですか? キャッシュには Zend_Cache が必要であり、軽量であることはあいまいです。他のすべての要件は一致していると思います。

于 2011-10-22T10:07:05.343 に答える