- 数据分析
- 数据治理
- 产品解决方案
- 行业解决方案
- 案例
- 数据资产入表
- 赋能中心
- 伙伴
- 关于
时间:2022-12-08来源:苍术浏览数:89次
目前有什么手段
好一些的报表工具,其实提供了一个初级的解决方案,就是报表本身的多数据集功能,它可以直接进行跨库查询,获取最新数据,做出 T+0 报表,比如下面这样的
但是报表工具计算能力有限,只能做一些初级简单的,比如上面的分组汇总,两个数据集的分组情况如果相同,或者第一个数据集包含第二个的,那可以这样做,否则分组就会错乱,就不好做了,就得用自定义数据集提前把数据合并好了还有一些其他复杂的计算单凭报表的计算能力也无法实现,也得用定义数据集算另外分库的数据一般数据量非常大,全部把计算放到报表内,在性能上也不一定能保证,不是很适用所以报表工具的多源混算在简单场景下可以做出 T+0 报表,复杂情况下不能胜任,是比较初级的功能数据库本身也有跨库查询的功能,比如 Oracle 的 DBLink,MySQL 的 FEDERATED 引擎,都可以进行跨库查询,也可以做到 T+0 查询,再把数据给到报表,就能做出 T+0 报表,但是这些功能都对异构数据支持的不是很好,对非关系型数据源更是无能为力,适用的场景也比较窄这是工程师的杀手锏,没有好办法,那就敲代码呗,没有什么是代码搞不定的,一个跨库取数难不倒 JAVA, 不管你是同构异构还是非关系数据库,各种情况都能搞定但话又说回来,但凡有更简单的办法,谁愿意做个查询取数还得用 JAVA 实现呢JAVA 写起来难,算起来慢JAVA 这类高级语言,对结构化数据的计算支持很有限,虽然都能做,但却能力比较弱,写起来非常繁琐,简单做个求和运算都需要写数行代码的循环来实现,而报表数据源处理则大量涉及批量数据运算,采用高级语言开发时会导致动辄数百行的冗长代码,编写、调试和后续维护都会很困难,而且性能也无法保证,高手懂算法,写出来的就算的快一些,普通人写的可能就会出现性能问题JAVA 还破坏应用架构JAVA 代码需要和应用程序一起编译、打包,造成和应用的高度耦合,给后续维护带来困难每次修改,都得重新编译,就需要整个应用陪着重启甚至停机,影响应用稳定所以 JAVA 虽然什么都可以搞定,能力很强,但却也不是一个很好的选择更好的方法
看过各种手段的不足后,我们也就明了了,更好的方案,需要它支持跨库运算,支持同构异构数据,支持各类不同数据源,支持大数据量,书写简单,性能好,不会破坏应用有这样的方案吗?报表集成SPL 集算器以后就具备了这样的能力
SPL 是一款流行的专业的数据计算处理工具,很多项目开发商都在用,因为它不仅好用,而且还免费,开源,是常年做项目,总需要做数据处理的工程师的好帮手集成 SPL 后,报表相当于多了一个计算层,这个计算层支持常见的各类数据源,可以同时计算来自不同数据源的数据,不管它是同构还是异构,不管你怎么分库,分到哪里,都能做到 T+0
A | ||
---|---|---|
1 | =cold=db1.cursor(“select * from orders where odate | / 冷数据从历史库中取,昨天及以前的数据 |
2 | =hot=db2.cursor(“select * from orders where odate>=?”,date(now())) | / 热数据从生产库中取,今天的数据 |
3 | =[cold,hot].conjx() | |
4 | =A3.groups(area,customer;sum(amout):amout) |
用 SPL,则按思路过程写出计算就行,写起来简单,还容易理解,性能也比 SQL 要更好,而且在 SPL 中, 这样的高性能函数和算法还有很多,谁都可以直接用,不需要非得高手才能写出性能好的算法了
A | |
---|---|
1 | =score_table.group(subject) |
2 | =A1.(~.rank(score).pselect@a(~<=10)) |
3 | =A1.(~(A2(#)).(name)).isect() |
说到性能,还要提到开源 SPL 有自己的存储,它提供了高效的二进制文件存储方式,文件存储具备很多优势,不仅读取效率更高,还可以有效利用文件压缩、并行等机制提速,同时还不会像数据库那样容易受到容量的限制,在一些传统的历史库无法保证计算性能和时效的情况下,甚至可以用 SPL 的二进制文件存储当做历史库来提升性能了
SPL 作为报表的计算层,它编写的计算脚本是存储在报表模板里的,是解释执行的,这就避免了和应用的耦合解释执行的 SPL 同时也具备了热切换的能力,不会像 JAVA 一样影响应用的稳定了总结
大数据时代,数据的分库存储很常见,T+0 实时报表的需求更常见,用常规的手段来做,简单的、少量的情况还能应付,复杂,大量的时候,就需要用更好更新的技术了。上一篇:数据治理安全理论落地与实践...
下一篇:大数据开发流程及规范...