2017-02-25 8 views
0

Excelレポートは1million行と800列をサポートする必要があります。アプリケーションは2つのモードでExcelを生成する必要があります。 1.online、グリッドビューでエンティティを選択する際にレポートを生成する必要があります。 2.offline、ユーザーは複数のエンティティを選択でき、UI上のボタンを使ってExcelを生成し、メールでExcelを受け取ることができます。エクスポート500万列の1百万行.NET 3.5フレームワークを使用してアプリケーションビルドからSQLデータベースにExcelデータを変換

現在、アプリケーションは上記の機能をサポートしていますが、エクスポートは非​​常に遅いです.ApplicationとDatabaseは同じサーバー上にあります。そのことを念頭に置いて、パフォーマンス上の問題は最小限に抑えて、アプリケーション上のデータが10倍増加した場合でも、速くなるフレームワークを設計する必要があります。

SSISは目的を果たすのでしょうか、それとも他にお勧めしたいのですか?

+0

私は「ピボットテーブルをデータベースに接続している」と考えています。 –

+1

それは私がExcelに入れたものを超えています。 1)そのような大量のデータをどのように使用することができますか.2)Excelがそのような大量のデータを消費するとはどのように期待できますか? ;-) –

+0

現在、私たちはオープンXMLを使用しています。複数のユーザーがアップロードしてエクスポートすると、エクスポートが大量に行われているため、特にエクスポートが約20K +のデータであると、アプリケーションがハングすることがわかりました。 アプリケーションが10倍のデータを処理し、パフォーマンスが主な関心事であると考えています。 –

答えて

0

あなたはUIが何であるかは言いませんが、あなたは「オンライン」と言いますから、私はそのブラウザを想定しています。そのため、SQL Serverにクエリを行い、データセットを抽出し、ドキュメント化されたOpenDocument XMLを使用して、MVCコントローラ/ Web APIから返されるレスポンスストリームの一部としてXLSXファイルを生成するのが最速の方法です。これにより、データの処理が最小限に抑えられ、Webサーバーでのテキスト処理が維持されます。

+0

現在、私たちはオープンXMLを使用しています。複数のユーザーがアップロードしてエクスポートするため、エクスポートが大量に行われます。特に、エクスポートが約20K +のデータであり、アプリケーションがハングするレコードがあります。 アプリケーションが10倍のデータを処理し、パフォーマンスが主な関心事であると考えています。現在、我々はサーバー側でExcelを生成し、オフライン用にメールを使用して送信し、オンラインではユーザー用にダウンロードできます。私たちはフレームワークやその他の選択肢の改善を求めています。 –

+0

本当に、アプリケーションスタック内での所要時間について詳しく教えてください。プロファイラを使用して時間の所在を確認しましたか?最も高価なプロセスを分離できますか?あなたのアプリケーションがすでに最適にコード化されていて、IISを使用していて、その負荷がXMLの生成である場合、他のマシン上のいくつかのIISインスタンスをスケールアウトするだけです。コードの非効率性を排除 – PhillipH

0

1百万のレコードが間違いなく時間がかかり、並行環境ではこれは良くありません。これは、サービス指向アーキテクチャーを持つか、コードを非同期的に実行して、このハングを防止することがベストです。 エクスポートの処理(たとえばサービス内)は、負荷を処理するバックグラウンドスレッドで実行する必要があります。

完了したら、前述のとおりメールを送信してください。 または、アプリケーションのtempディレクトリに保存し、SignalRを使用して(またはAjaxを使用してサーバーをプールするだけで)、サービス内のプロセスが完了しているかどうかを確認します。はいの場合は、クライアントをリダイレクトしてファイルをダウンロードします。

関連する問題