SQLサーバーデータベースを使用して.net 3.5で新しいアプリケーションを構築しています。データベースはかなり大きく、データに負荷がかかる約 60 のテーブルがあります。.net アプリケーションには、データ入力およびサードパーティ システムからこのデータベースにデータを取り込む機能があります。
すべてのデータがデータベースで利用可能になった後、システムは多くの計算を行う必要があります。計算ロジックはかなり複雑です。計算に必要なすべてのデータはデータベースにあり、出力もデータベースに保存する必要があります。データ収集は毎週行われ、必要なレポートを生成するには毎週計算を行う必要があります。
上記のシナリオにより、ストアドプロシージャを使用してこれらすべての計算を行うことを考えていました。問題は、データの独立性も必要であり、ストアド プロシージャはそれを提供できないことです。しかし、これを .net by query database で常に行っていると、作業をすぐに終わらせることができないと思います。
たとえば、2000行を返す1つのテーブルをクエリする必要があり、次に各行に対して300の結果を返す別のテーブルをクエリする必要があります。データ、計算を行い、出力を別のテーブルに保存します。
ここで私の質問は、パフォーマンスが重要であるため、ストアド プロシージャ ソリューションを使用してデータベースの独立性を忘れるべきかということです。また、ストアド プロシージャ ソリューションを使用すると、開発時間が大幅に短縮されると思います。クライアントのいずれかがOracleデータベースでこのソリューションを必要とする場合(別のデータベースを維持したくないため)、ストアドプロシージャをOracleデータベースに移植し、将来の変更/機能強化のために2つのバージョンを維持します. 同様に、他のクライアントが他のデータベースを要求する場合があります。
上記の 2000 行は製品 SKU のものです。前述の 300 行は、処理コスト、輸送コストなど、計算したいさまざまな属性のものです。前述の 10 のテーブルには、通貨換算、単位換算、ネットワーク、エリア、会社、販売価格、1 あたりの販売数に関する情報が含まれています。結果のテーブルには、分析とレポートの目的ですべての情報がスター スキーマとして格納されます。目標は、製品に関する詳細な情報を取得して、製品販売のどの属性が費用を負担しているか、どこを改善できるかを知ることです.