2012-04-12 5 views
-1

私は設計意思決定をしています。私はウェブサイトを構築しているので、スピードが最も重要なことになります。私は他の値に依存する値を持っています。私は2つの選択肢があります:実行時に値を生成するか、または生成された値をデータベースに保存すると、リソース面で便利です。

1-私のオブジェクトをデータベースから取り出し、従属値/オブジェクトを生成します。

2従属値がすでにデータベースに格納されているオブジェクトを取得します。

私はEntity FrameworkでASP.NET MVCを使用しています。

私はその選択をする際にどのような配慮が必要ですか?

+0

あなたが生成されているデータの性質についてより具体的にする必要があります。いずれにも違いがないことは非常に可能です。 –

答えて

1

は自分自身にこの質問をする:

は、ビジネス・ルールに基づいて依存値はありますか?

そうならば、データベースに格納していない - それは良い習慣があるので、あなたができないは、なくすべきではないので - あなただけのデータベースにビジネスルールを持っている必要がありますもしあなたがそれだけでなく、それを持っている最高または唯一の場所であれば、です。

通常、オブジェクトをデータベースにシリアライズすると、通常のコンパイル済みコードでオブジェクトを作成するよりも処理が遅くなります。データベースへのアクセスは通常かなり早いですが、それは遅いシリアル化の行為です。しかし、複雑なオブジェクト作成プロセスがあり時間がかかる場合は、特にシリアル化のカスタムメソッドを使用する場合は、シリアル化が迅速になります。

すっごく....あなたの「オブジェクトは」比較的正常なデータオブジェクトは、いくつかの計算/導出される値であるならば、私は、データベースからそれらの値を読んで、あなたは、データベース内の「オブジェクト」の値を格納することを示唆しているとそれらをコンパイル済みコード*で作成されたデータオブジェクトにマップし、従属値を計算します。

*これは、標準のデータ検索であることに注意してください - 何人かの人々は、ORMを使用し、いくつかは、手動でオブジェクトに値をマッピングします。

3

派生値を格納する際にパフォーマンス上のメリットはほとんど見られません。明らかに、これは依存関係が非常に複雑であるか、膨大な量のデータに依存している場合には変わる可能性がありますが、データについては何も言及していないので、彼らは、更新異常を紹介するよう言い換えれば

は、誰かが、むしろそれがようであるより、あなたのデータを更新する際にこれらの依存関係のためコードに関する知識を持っている必要があり、他の言葉で(完全に派生している値を保存しません可能な限り自明で明瞭です)。

+0

OTOH、 "計算列"または "マテリアライズドビュー"を使用して、この問題の特定の形式をきれいに解決できます。 –

関連する問題