私はかなり長いビジネスプロセスを経て、最終的には財務操作になります。正規化(SQLビュー)とパフォーマンス/フィーチャビリティ(SQLテーブル)とのトレードオフはどこですか?
最終的に重要なことは、これらの最終的な操作だけですが、私はそれにつながったすべてのログを残しておく必要があります。
最終的な操作に含まれるすべての情報は、(ビジネスプロセスで使用される)他のテーブルで使用できるため、ビューを使用するのは理にかなっていますが、ビューロジックは非常に複雑です(数多くのテーブルが関与しています) 、と私はと心配だ。(私のテーブルには、項目場合、最終的に数百万人が含まれていますし、ほぼすべてのその列に完全に検索する必要があります)
も適切なインデックスと、テーブルはおそらく道速くなります
ビューのロジックが複雑になる可能性があるので、複雑になる恐れがあります私がビジネスロジックを進化させたいなら、数年。そのため、これらの二つの理由の
、私の代わりにビューに頼るの私のビジネス・プロセスの最後にテーブルにデータを書き込むように誘惑少しだけど、データを複製することは(右のにおいはありませんそれは早すぎる最適化のようにも見えますが、設計上の中心点なので、すぐに問題を解決したいと思います)
これまでにこのような選択に直面しましたか?あなたは何を決めましたか?
編集:テーブルを作成すると明らかに私の状況に重複が生じます。テーブルに書き込まれたデータはデータベースのどこかに存在し、計算なしで結合のみを使用して取り出すことができます。
は、私は完全には理解していないビューの概要とアーキテクチャをマテリアライズド。私には明らかにいくつかの重複があります。なぜなら、さまざまなテーブルでデータを取得し、最終的なテーブルに挿入するためにビューを結合するのではなく、そのテーブルに挿入するからです。 – Brann
私にとって、データの複製は、ある場所のようなデータを取って普通の場所にコピーするときに発生します。しかし、あなたが何らかの計算をすると、それはもはや重複ではありません。同じように、製品リストと製品表の合計金額が注文表にあるように - 重複ではなく、計算です。 –
@tomaszs:多分私は自分の状況をはっきりと表現していないかもしれません。私がやっていることは明らかに重複、つまり、複雑な結合を使って複数のテーブルから利用できるデータを1つのテーブルにコピーすることです。 – Brann