背景
最近做了比较多的报表需求,在这里小结一下,希望对后续工作有帮助。报表是数据分析的形象化展示,目前有比较多好用的产品,比如QuickBI,Tableau等,让报表页面的工作能够方便的所见即所得;我们也可以做最核心的事情:数据处理和加工。从数据流向的技术方案来看,主要有这几种:
1. 直接从业务库数据取数据
优点:
- 不用数据导来导去,节约时间
缺点:
- 可能对业务库性能有影响;
- 无法做复杂的数据加工,不同数据库源之间的连接运算等
- 某些历史查看需求无法实现
2. 业务数据导入到MaxCompute(原名odps),经过加工后,再导入到mysql等实时库
优点:
- 可进行复杂数据加工;
缺点:
- 数据导来导去,各个地方建表非常耗时。
- 如果每天的分区都导入而不删除,长期需考虑mysql的性能问题
3. 业务数据导入到MaxCompute,经过加工后,直接报表展示(利用QuickBI等工具的加速缓存功能)
优点:
- 可进行复杂数据加工
- 节省了从MaxCompute导入到mysql等实时库的时间和存储成本
缺点:
- 如果数据量大于20万,不支持加速(每个工具可能有不一样,但是肯定都有上限)
- 分页无法显示所有页数
4. 业务库备份库,直接业务库同步到mysql等实时库
优点
- 节约时间成本;
缺点:
- 无法复杂数据加工,增加存储成本
目前主要这几种技术方案,在实际使用中,我们可以结合各个业务项特点,灵活使用,不一定要局限于某一种,2应该是最常用的数据链路,但比较耗时,个人比较倾向于3 ,利用MaxCompute强大的数据加工能力,而且节省一步导数的操作。