だから私はデザインの決定を下す必要があります。私はウェブサイトを構築しているので、速度が最も重要です。私は他の価値観に依存する価値観を持っています。2 つのオプションがあります。
1- データベースからオブジェクトを取得し、依存する値/オブジェクトを生成します。
2- データベースに既に格納されている依存値を持つオブジェクトを取得します。
Entity Framework で ASP.NET MVC を使用しています。
その選択を行う際に、どのような考慮事項を考慮する必要がありますか?
だから私はデザインの決定を下す必要があります。私はウェブサイトを構築しているので、速度が最も重要です。私は他の価値観に依存する価値観を持っています。2 つのオプションがあります。
1- データベースからオブジェクトを取得し、依存する値/オブジェクトを生成します。
2- データベースに既に格納されている依存値を持つオブジェクトを取得します。
Entity Framework で ASP.NET MVC を使用しています。
その選択を行う際に、どのような考慮事項を考慮する必要がありますか?
導出された値を保存しても、ほぼ確実にパフォーマンス上の利点は見られません。明らかに、依存関係が非常に複雑であるか、大量のデータに依存している場合、これは変わる可能性がありますが、データについて具体的なことは何も言及していないため、一般論でしか話せません。
言い換えれば、更新の異常を引き起こすため、完全に派生的な値を保存しないでください (つまり、データを更新するときに、誰かがこれらの依存関係についての知識とコードを持っている必要があります。可能)。
次の質問を自問してください。
従属値はビジネス ルールに基づいていますか?
その場合は、それらをデータベースに保存しないでください -できない、またはすべきではないからではなく、それが良い習慣であるためです - それが最善または唯一の場所である場合にのみ、ビジネスルールをデータベースに保存する必要がありますできるからというだけではありません。
通常、オブジェクトをデータベースにシリアライズするのは、通常のコンパイル済みコードでオブジェクトを作成するよりも遅くなります。通常、データベースへのアクセスは非常に高速です。遅いのはシリアル化の動作です。ただし、時間のかかる複雑なオブジェクト作成プロセスがある場合、特にカスタムのシリアル化方法を使用すると、シリアル化がより速く終了する可能性があります。
すっごく....あなたの「オブジェクト」が計算/導出された値を持つ比較的通常のデータオブジェクトである場合、「オブジェクト」の値をデータベースに保存し、データベースからそれらの値を読み取り、それらをデータにマップすることをお勧めしますコンパイルされたコードで作成されたオブジェクト*、依存値を計算します。
*これは標準的なデータ取得であることに注意してください。ORM を使用する人もいれば、手動で値をオブジェクトにマップする人もいます。