Oracle 11g を使用して、膨大なデータ セット (約 1kk レコード) を格納しています。私のスキーマは次のようになります(簡略化):
クライアント テーブル:
---------------------------------------
|id | firstName | lastName | middleName |
---------------------------------------
操作表:
---------------------------------------
|id | client_id | date | balance | type |
---------------------------------------
また、さまざまな集計行を含む、クライアント用のフィルター処理および集計されたレポートを生成する必要があります。たとえば、何らかの操作を行っているクライアントのレポートが必要です。レポートには次のような列が含まれている必要があります: すべての操作の残高の合計、フィルタリング タイプを使用した操作の残高の合計、当年度の操作の残高の合計。
Java と休止状態の条件を使用してリクエストを生成していますが、コードが大きくなり、維持するのが難しくなりました。
SQLを使用して複雑なレポートを生成するための最善の決定:
- すべてのデータをアプリケーションにロードして、コードに集約しますか?
- フィルター処理と集計ロジックをストアド関数に分割しますか?
- 一時テーブルを使用してフィルタリングと集計を段階的に分割しますか?
- レポートを生成するためにサードパーティのソフトウェアまたは他の nosql ストレージを使用しますか? (bi ツールや map-reduce など)
- Java ストアド プロシージャを作成しますか?
通常のパフォーマンスとリソース使用率で膨大な量のデータに関する複雑なレポートを生成する「標準的なエンタープライズ」ソリューションとは何ですか?