ちょっと変わった発言。
要件を定義してから、それらの要件を満たすツールを選択します。その逆ではありません。
Datamapper は、オブジェクト リレーショナル マッパーである ORM です。この場合、アクティブ レコード デザイン パターンに従います (アクティブ レコードではなく、クエリ ビルダーである CI の AR と混同しないでください)。データ エンティティ (この場合は RDBMS テーブルのレコード) をオブジェクトにマップし、それらのオブジェクト間の関係を認識します。
それが ORM の機能です。PHP のネイティブ関数を使用してデータベースに直接アクセスするより遅いですか? 絶対。追加された抽象化のレベルに応じて、処理時間が追加されます。
ORM の目標は、データ操作で最速になることではありません。コントローラ ロジックからデータ操作を抽象化することが目標です。これにより、アプリケーションの作成がより簡単かつ迅速になり、そのようなアプリケーションの維持が絶対的に速くなります。ビジネス コンテキストの時間 == お金と同様に、ここにメリットがあります。無料でコーディングし、2 ビットの共有ホストでコードを実行する場合、ORM は適していない可能性があります。
また、ORM はスイス アーミー ナイフではありません。これは、データ コレクションに対するオブジェクト指向のアプローチである特定の目的のために設計されており、これらのコレクションとその関係を操作します。
ジョブに適したツールでない場合は使用しないでください。奇妙な基準に基づいて 100 万件のレコードを一括更新する必要がある場合は、代わりにネイティブ SQL クエリを記述します。データ操作コードをコントローラーから抽象化したままにするために、カスタム モデル メソッドでこれを行います。
あなたの具体的なコメントについて:
- Datamapper は遅い: 何と比べて?
- これは構成可能ではありません: http://datamapper.wanwizard.eu/pages/config.htmlを参照してください。
- テーブル全体をロードします。テーブル全体を get() すると、はい。私には奇妙に思えません。
- 同じデータで 2 つのオブジェクトを作成すると、2 回保存されます: はい。同じ UPDATE クエリを 2 回実行した場合も同様です。
- 大規模なデータベースには適していません。テラバイト サイズのデータベースを持つ Datamapper でサポートされているアプリケーションを使用しているため、サイズとの関係はわかりません。
- 高速ではありません: 回答番号を参照してください。1.
プロの Web デザイナーであれば、MVC アーキテクチャを使用してアプリケーションを設計および構築する適切な方法を認識し、その仕事に適したツールセットを使用して、クライアントにアプリケーションをタイムリーに配信できるようにする必要があります。
時間 == お金です。より迅速に提供でき、より迅速に維持または改善できれば、顧客を維持できます。ORM はそれを支援します。ただし、意図されていない目的で使用しないでください。