レポートの作成が容易になるため、エンタープライズアプリケーションデータベースを非正規化することの長所と短所は何ですか?
プロ-結合が不要になるため、SSRSでのレポートの設計はおそらく「簡単」になります。
短所-非正規化されたデータを処理するためのアプリの開発/保守は、データの重複と同期のためにさらに困難になります。
その他?
レポートの作成が容易になるため、エンタープライズアプリケーションデータベースを非正規化することの長所と短所は何ですか?
プロ-結合が不要になるため、SSRSでのレポートの設計はおそらく「簡単」になります。
短所-非正規化されたデータを処理するためのアプリの開発/保守は、データの重複と同期のためにさらに困難になります。
その他?
レポートのための非正規化は悪いですよね。
ビューを作成するか、非正規化されたデータウェアハウスを作成することをお勧めします。
ビューは、私のレポート関連のニーズのほとんどを解決しました。データウェアハウスは、ユーザーがほぼ常にレポートを生成する場合、またはビューの速度が低下し始める場合に最適です。
これが、データベースを正規化したい理由です。
- リレーションのコレクションを望ましくない挿入、更新、および削除の依存関係から解放するため。
- 新しいタイプのデータが導入されたときにリレーションのコレクションを再構築する必要性を減らし、アプリケーションプログラムの寿命を延ばすため。
- リレーショナルモデルをユーザーにとってより有益なものにするため。
- リレーションのコレクションをクエリ統計に対してニュートラルにするため。これらの統計は、時間の経過とともに変化する可能性があります。
—EF Codd、「データベースリレーショナルモデルのさらなる正規化」(ウィキペディア経由)
非正規化を検討する必要があるのは、レポートの生成にかかる時間が許容できない場合のみです。非正規化は、特に大規模なデータセットでは特定できない場合がある一貫性の問題を引き起こします
レポートの複雑さを取り除くためだけに非正規化しないでください。アプリケーションの残りの部分で大きな問題が発生する可能性があります。ルールを適用しないとデータが不良になるか、適用すると、レポートを実行する2人または3人だけでなく、すべての人にとって挿入、削除、および更新が大幅に遅くなる可能性があります。
レポートが本当にうまく実行できない場合は、非正規化されたデータウェアハウスを作成し、夜間または毎週のフィードにデータを入力します。通常、これを必要とする種類のレポートは、データが最新であるかどうかを通常は気にしません。これは、通常、事後に大量のデータを処理(および特に集約)する月次、四半期、または年次のレポートであるためです。
あなたは両方を行うことができます...アプリケーション用に正規化されたデータベースをしましょう。次に、レポート用の非正規化データベースを作成し、あるデータベースから別のデータベースにデータを定期的にコピーするアプリケーションを作成します。
結局のところ、レポートには常に最新の更新データが必要なわけではありません。ほとんどの場合、レポートデータベースで1時間ごとに、1日1回だけ更新を簡単に開始できます。
他の回答で提供されているデータウェアハウスとビューのソリューションを超えて、いくつかの点で優れています。パフォーマンスを犠牲にして最後の2番目のデータを向上させたいが、正規化されたデータベースが必要な場合は、Oracleで使用できます。コミット時の高速リフレッシュを備えたマテリアライズドビュー、またはSql Serverでは、ビューにクラスター化インデックスを使用できます。
もう1つの欠点は、正規化された形式から非正規化された形式に移行するためにデータ内を移動する時間があるため、データがリアルタイムではない可能性が高いことです。誰かがレポートを要求された瞬間までにしたいと思っている場合、この状況ではそれを行うのは難しいかもしれません。
これが元の投稿の同期の重複である場合は、申し訳ありませんが、そのようには見えませんでした。