首页
学习
活动
专区
工具
TVP
发布

商业智能BI直连业务数据库做报表的延迟风险

商业智能BI直连业务数据库做数据可视化分析、做报表到底行不行,从技术的角度没有问题,从架构的角度不可行。这种做法就像在沙漠上建房子一样,建一层平房可能没有问题,建几层楼房一定会出问题。

什么是商业智能BI直连数据库

大家一定要注意一下,我们通常讲到的商业智能BI直连数据库,不是指的直连原始业务系统的数据源数据库,而是数据仓库的数据库。在原始业务系统和商业智能BI前端数据可视化之间是有一层数据仓库来做隔离的。

商业智能BI架构 - 派可数据商业智能BI可视化分析平台

我们有的企业一看商业智能BI工具可以直接连接到底层业务系统数据库数据表,就感觉这种方式很好,很便捷啊,直接可以读取表结构,然后简单的左关联、右关联,就可以快速的拖拉拽出报表。反而觉得商业智能BI和底层业务系统数据库中间弄个数据仓库很麻烦,又是建模、又是ETL,又看不到底层原始表结构,还是没有直连业务系统数据源方便。

这种理解是错误的,这种想通过商业智能BI和底层业务系统数据库直连避免掉ETL、SQL的想法也是完全错误的,一个典型的想走捷径的想法。到最后这种商业智能BI架构实现方式未来一定会有很大的风险,失败的可能性非常高,我们把它叫做延迟风险。

什么是商业智能BI直连数据库延迟风险

什么叫延迟风险,就是当前可能不会有太大的问题,延迟一段时间风险就会出现。

为什么商业智能BI和底层业务系统数据库直连,这种做法会存在延迟风险呢,主要有以下几个方面的原因:

第一,企业底层的业务系统会在未来某一个时间节点会出现升级、迭代甚至替换的可能。

第二,企业的业务会不断的发生变化和调整,带来的就是一些业务计算规则发生变化,业务规则的变化就会导致指标计算逻辑发生调整。

上面这两个点都会引起原有报表SQL取数逻辑对底层数据库表的依赖关系发生变化,底层数据和结构改变了,就得动报表,商业智能BI就有可能出现问题。 因为公共业务逻辑的计算没有下沉到数据仓库,不具备复用性。

可视化大屏 - 派可数据商业智能BI可视化分析平台

比如商业智能BI中一个指标在这个数据可视化页面有一套计算逻辑写了一遍,到了另外一个数据可视化页面使用到了同样的指标,这个指标可能又要写一边逻辑。当逻辑发生变化,就得一个一个数据可视化页面打开去修改。并且是大量的、反复的修改。为什么?这是因为在这种商业智能BI架构下,数据可视化页面和底层业务数据表的耦合程度太高太深了。

正确的商业智能BI架构是什么,数据可视化页面应该绑定的是指标,而不是指标的计算逻辑,不是SQL计算逻辑。指标的SQL计算逻辑下沉到底层数据仓库,这样即使要做调整,也不是数据可视化页面做调整,而是底层数据仓库的取数逻辑做调整。

第三,直连业务系统数据源,商业智能BI数据可视化页面大量的并发查询是直接访问到业务系统数据库,这种操作对业务系统IO资源消耗非常的高。查询多了会压垮业务系统,影响到业务系统的使用。

第四,有些计算逻辑不是一个简单的SQL关联就能解决,可能会非常的复杂,这种直连的方式中间的逻辑计算就没有任何缓冲的可能,没有办法做逻辑优化,查询效率和性能会非常低。

数据可视化 - 派可数据商业智能BI可视化分析平台

所以,商业智能BI直连业务系统数据源是让企业能够一眼看明白的架构方式,但同时它也是一种很不专业、非常糟糕的开发方式。我碰到过不少的企业最开始上商业智能BI,因为对商业智能BI不了解不熟悉,就是这么去实现的,后面根本推不动,没有办法重新再开发一遍,投入更大。

商业智能BI直连数据仓库数据库

如果把商业智能BI直连业务数据源数据变成商业智能BI直连数据仓库数据库,有什么好处呢?

第一,底层业务系统怎么更换、迭代,数据仓库在中间做了隔离,尽可能不会影响到上层的报表,也就是商业智能BI,只是往下更换了从新业务系统取数的ETL业务计算逻辑,整体模型架构还是稳健的。

第二,业务逻辑调整也是如此,在数据仓库模型中,只是局部的逻辑调整,复用性比较高。建数据仓库的目的之一就是公共指标下沉、计算逻辑下沉,在报表端只绑定指标,而非业务逻辑,采用后端建模的方式。所以,即使某个报表的指标有问题,商业智能BI中数据可视化页面也不用修改,而是在数据仓库中修改ETL取数逻辑,对整体数据可视化页面报表没有大的影响。

数据可视化 - 派可数据商业智能BI可视化分析平台

第三,商业智能BI的查询是基于数据仓库的,跟业务系统没有关系,查询压力只会落在数据仓库上,而不是传递到业务系统本身。

第四,通过数据仓库的分层解决建模、模型优化、查询性能优化,以空间换时间来提升前端商业智能BI可视化访问数据仓库数据的查询效率。

所以,商业智能BI的直连连的是什么,连的是数据仓库,而不是业务系统数据源。

也有一些企业因为对数据仓库不了解,所以在业务系统和商业智能BI前端之间建了一个中间库做隔离,这样是不是会好一些。确实如此,只要有隔离就会好一些,中间库也是一个数据库,跟数据仓库一样能做一些缓冲。

但数据仓库与中间库的差异就在于,数据仓库不仅仅只考虑系统之间的松耦合、隔离的问题,更加考虑了从业务系统数据传递到前端商业智能BI数据可视化之间的数据模型、数据分层、数据之间的松耦合等一系列复杂问题。所以一个是系统的松耦合,一个是除了系统松耦合之外,更加考虑到了数据、逻辑处理、分析模型的松耦合关系。

最后,分享给大家一句我很喜欢的话:不走捷径就是最大的捷径!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20220526A0438K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券