我正在使用 oracle 11g 存储大量数据(大约 1kk 条记录)。我的架构看起来像(简化):
客户表:
---------------------------------------
|id | firstName | lastName | middleName |
---------------------------------------
操作表:
---------------------------------------
|id | client_id | date | balance | type |
---------------------------------------
我需要为客户生成过滤和聚合的报告,包括不同的聚合行。例如,我需要一份报告,其中包含执行某种类型操作的客户。报告应包含以下列:所有操作的余额总和,过滤类型的操作余额总和,当年的操作余额总和。
我正在使用 java 和 hibernate 标准生成一个请求,但是代码会增长,现在维护起来太困难了。
使用 sql 生成复杂报告的最佳决策是什么:
- 将所有数据加载到我的应用程序中并将其聚合到我的代码中?
- 将过滤和聚合逻辑拆分为存储函数?
- 使用临时表分步拆分过滤和聚合?
- 使用 3rd 方软件或其他 nosql 存储来生成报告?(如 bi 工具或 map-reduce)
- 写一个java存储过程?
什么是“标准企业”解决方案,能够以正常的性能和资源利用率生成海量数据的复杂报告?