私が取り組んでいるプロジェクトは、オブジェクトやオブジェクトのコレクションをデータベースから取得する方法のジレンマに直面しています。場合によってはオブジェクトIDを設定してそのプロパティをオンデマンドで照会するだけで便利な場合があります(オブジェクトごとに1 db呼び出しですべてのプロパティを取得することが便利な場合もあります) )。そして多くの場合、コレクションはバッファリングオブジェクトをメモリにサポートし、オンデマンドアクセスのための最小限の情報で初期化する必要があります。結局のところ、すべてをメモリにバッファリングすることはできず、オンデマンドですべてを読み取ることはできません。ユビキタスメモリとIOの問題です。ビジネス層設計のジレンマ:メモリまたはIO?
誰も同じ問題に直面しなければなりませんでしたか?あなたのデザインにどのような影響がありましたか?難しい教訓は何ですか?その他の考えやアドバイスは?
EDIT: myプロジェクトは、Webアプリケーション、Webサービス、およびデスクトップアプリケーションで使用されるビジネスレイヤーdllの典型的な例です。製品のリストがデスクトップアプリケーションのために要求され、製品名のみで表示される場合、すべての製品を表示するためにこの一連の手順を実行することができます(データベースには何百万もの製品が存在するとします)。
1. dbコールを使用してすべての製品名を取得する
2.ユーザーが製品をクリックして詳細を表示する(オンデマンドアクセス)場合、すべての製品情報を取得する1回のdbコール
ただし、この同じAPIが消費される場合Webサービスですべての製品を詳細に表示すると、ネットワークトラフィックは煩雑になります。
1. 1回のdbコールですべての製品と製品のフィールドをバッファリングします(この場合、100万の製品をバッファリングすることも恐ろしく見えます)
リンクありがとうございます! Velocityの記事は読んで楽しいものでした...静的なデータは、社内のキャッシュに既にキャッシュされています。静的でない他のデータはまったくキャッシュされず、メモリに完全に読み込まれません(フィールドはオンデマンドでアクセスされます)。このような動的データの場合、メモリに完全に読み込むべきか部分的に読み込むべきかを決めるのは難しいです。アドバイスをいただきありがとうございます。 – kateroh