私が取り組んでいるプロジェクトは、データベースからオブジェクトとオブジェクトのコレクションを取得する方法に関する設計上のジレンマに直面しています。*すべて*のオブジェクトをそのプロパティとともにデータベースからメモリにバッファリングすると便利な場合もあれば、オブジェクト ID を設定してそのプロパティをオンデマンドでクエリするだけで便利な場合もあります (すべてのプロパティを取得するには、オブジェクトごとに 1 db を呼び出します)。また、多くの場合、コレクションは、オブジェクトをメモリにバッファリングすることと、オンデマンド アクセスのために最小限の情報で初期化されることの両方をサポートする必要があります。結局のところ、すべてをメモリにバッファリングできるわけではなく、すべてをオンデマンドで読み取ることもできません。これは、ユビキタス メモリと IO の問題です。
誰かが同じ問題に直面しなければなりませんでしたか?デザインにどのような影響を与えましたか? 厳しい教訓は何ですか?他に考えや推奨事項はありますか?
編集:私のプロジェクトは、Web アプリケーション、Web サービス、およびデスクトップ アプリケーションによって消費されるビジネス レイヤー dll の典型的な例です。デスクトップ アプリケーションで製品のリストが要求され、製品名だけが表示される場合、すべての製品を表示するために次の一連の手順を使用しても問題ありません (データベースに 100 万の製品があるとします)。
1. 1 回の db 呼び出しすべての製品名を取得するには
2. ユーザーが製品をクリックして詳細を表示した場合 (オンデマンド アクセス)、すべての製品情報を取得するための 1 回の db 呼び出し
ただし、この同じ API を Web サービスで使用して、すべての製品を詳細とともに表示すると、ネットワーク トラフィックが頻繁に発生します。この場合のより良いシーケンスは次のようになります
: