数据库以后可能换,现在报表怎么做好一点?

 

关键字: 数据库更换报表迁移 报表解耦 报表独立部署 报表应用单独维护

如果以后可能换库,不管是从收费的换到开源的,还是从国外的换到国产的,对于报表开发的一个忠告:

别用存储过程,少写复杂 SQL

存储过程没有移植性,换库基本要重写;而各种数据库“方言”会导致语法不一致,同时支持的功能也不一样(如窗口函数的支持),复杂 SQL 会面临换库后巨大的改造成本。

其实这个问题相当于问有没有跟数据库低耦合的报表开发方式。

目前业界解耦报表应用和数据库的方式有两个:

1、用 JAVA 实现报表数据计算(数据准备)
从数据库取数后,用 JAVA 完成大部分数据处理,这样未来换库报表用 JAVA 写的计算逻辑都不用动,切换时只更改数据库连接就可以了。
但这种方式编码的复杂度会比较高,JAVA 做集合运算要比 SQL 麻烦很多,因此对人员的要求也比较高,不适合一般的报表开发人员。
另外,JAVA 不支持热切换,改报表还要重启整个应用,不太方便了。

2、直接用强计算能力的报表工具
有些报表工具自带脚本计算能力,这样就可以在一个工具内解决数据计算和报表呈现了,如果实现要比 JAVA 简单得多,并且还能热切换的话,选择性就非常强了。

关于报表耦合性的话题可以再看下这个 如何降低报表应用的耦合度

对于报表工具支持的复杂计算可以参考如何应对报表开发中的复杂逻辑