那就不能再用存储过程了,得快点找替代方案。
原来存储过程是“不得不用”,因为前端的报表工具不具备复杂计算能力,而为报表准备数据的逻辑又很复杂,用存储过程方便些。
但存储过程的缺点实在太多,除了不好调试,没法扩展,无法移植,还容易造成报表应用跟数据库的高耦合,改报表就得去数据库里创建 / 修改存储过程。估计用户也是因为这个禁止使用存储过程了。
一个方案是:用 JAVA 硬编码来做复杂计算,然后给报表做呈现;但这种做法的复杂度太高了,对于报表开发来说就要很多高级程序员参与才行,不太划算。
比较好的选择是使用带脚本计算能力的报表工具,在报表里就直接搞定原来存储过程的那些计算(库外存储过程),而且相对简单,原来的报表开发人员就都能搞定。
画了一个简图,可以感受一下:
新型报表应用结构中,存储过程挪到库外做了以后,数据库还是要承担一点计算任务的,比如过滤、分组之类,主要是为了减少取数的 IO 消耗。
另外,新型结构的“存储过程”支持异构库或外部数据混合计算,比原来数据库的存储过程功能还扩展了。
这里详细介绍了带脚本计算能力的报表工具如何完成库外存储过程,供参考: 怎样减少报表开发中对存储过程的依赖
标签:存储,报表,过程,数据库,库外,计算能力 来源: https://www.cnblogs.com/xmilu/p/13023329.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。