睿治

智能数据治理平台

睿治作为国内功能最全的数据治理产品之一,入选IDC企业数据治理实施部署指南。同时,在IDC发布的《中国数据治理市场份额,2022》报告中,蝉联数据治理解决方案市场份额第一。

多样性数据源报表如何做?

时间:2022-11-09来源:时光队长浏览数:74

现代应用已经进入多数据源阶段了,不再是一个单一的数据库包打天下,一个应用中会涉及除关系数据库外各种数据源,如文本文件类数据、NOSQL、多维数据库、HTML Webservice 等等,即使是关系数据库,也可能不止一个应用这样了,那么应用中的报表自然也会涉及到多样性的数据源了现在的报表,基本都是用报表工具来做,很多报表工具都号称支持多数据源,是不是能解决这个问题呢?其实只能搞定一点点

报表工具能轻松搞定的多源数据长什么样

简单的说,来自关系数据库的多源数据都比较好搞定,不管是多表,还是多库,都很简单,用 SQL 把各个来源的数据都取出来,放到报表中去关联、计算、呈现就可以


这样的多源数据,好一点的报表工具都可以轻松应对

报表工具不好搞定的多源数据长什么样

也可以简单的说,不是单纯的关系数据库的多源数据,报表工具都不太好做进入大数据时代以来,数据不仅是大了,而且存储的方式也多了,除了传统的关系数据库外,还有:

1. TXT/CSV、Excel、JSON/XML 等文件;

2. MongoDB、Cassandra、HBase、Redis 这些 NoSQL 数据库;

3. HDFS 等分布式文件系统;

4. webService;

5. ES、Kafka 等其他数据源形式


文件类的某些报表工具还能搞定,但也只限于读,而不会算,只能先全部读入到报表中,然后再利用报表的计算能力来计算处理,数据量大时,读取的效率和空间容量都可能会成为问题,(极个别的工具可以边读边汇总过滤,还能并行流式读取,会好很多);其它类的数据源大部分报表工具就连读都不会了,因为没有标准,每家有各自的 API,想要读取,大部分都得通过 JAVA 自定义数据集的方式了

读取都比较费劲,而这些数据常常在业务逻辑上又有关联,做报表的时候大部分时候都会涉及到多个数据源之间的关联混算,单凭报表工具提供的多源关联能力处理起来就更困难了

报表工具解决不了只能硬编码

报表工具解决不了,但也难不倒工程师,因为工程师会编码,没有什么是编码解决不了的

工程师可以先把异构的数据变成同构的,比如把文件的数据先导入到 RDB 中,由 RDB 计算后再给报表用,而那些不会读的,就只能再一次依靠所有报表工具都提供的所谓自定义数据原接口了,用 JAVA 读入并处理好,再传给报表。

项目中,很多困难的多源混算情况,都是这么处理的,都能搞定,但是这么做其实弊端很多

异构变同构,其实大部分时候是把不同的数据强行装入到常见关系数据库中,然后再利用 SQL 的方式来处理计算,这样做,首先得考虑数据库本身的管理和压力,管理上是否允许这样操作,容量是否够,每次遇到这样的库外数据都要往数据库中放?

然后还得考虑时效,数据的导入都需要时间,量少的耗时短可能无所谓,量大的可能进度都被耽误了,而且一般业务数据都是实时变动的,导入数据的方式也基本很难保证数据的实时性,还有些变不了或者变起来极困难的,像 json/xml 多层数据(mongodb 也是这种),要建很多表,想变都变不了

JAVA 处理的话,要好很多,不用考虑入库的一系列问题,实时性也可以保证,但是开发成本高,还会破坏应用架构

JAVA 开发人员的成本本身就高,然后 JAVA 计算数据的能力还很弱,写起来工作量很大,简单做个求和运算都需要写数行代码的循环来实现,更别说逻辑复杂的运算了,动辄几百行的代码,一个报表还可以承受,报表一多,就承受不了这样的高成本了

另外 JAVA 代码需要和项目应用一起编译,也会带来报表和应用高耦合的问题,还会影响报表本身热切换的能力。

(部分内容来源网络,如有侵权请联系删除)
立即申请数据分析/数据治理产品免费试用 我要试用
customer

在线咨询