数据仓库什么情况下是必须建的?是和数据的大小有关吗?

0
已邀请:
3

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2016-01-11 回答

我们不谈什么概念,就按照大家都没有接触过数据仓库的情况下考虑以下几个场景,然后再考虑数据仓库是什么情况下必须上的:
1. 团队里面有维护 CRM 系统和 ERP 系统的同事,他们经常反映自己如果要基于自身的 CRM 系统和 ERP 系统做一些报表查询效率很低,速度很慢,往往出一个报表需要很长时间。同时,业务人员在查看报表的时候,因为报表里面有大量的聚合查询,CRM 系统和 ERP 系统的响应就会很慢,影响了其他业务人员的正常工作。

2. 业务分析人员或者高层需要一些数据报表,报表的数据来源是跨系统的的汇总结果。很容易理解,终端的销售可能是 POS 系统,内部还有自己的 CRM 系统,还有其它的 ERP 系统,不同的系统数据源本身就不相同,比如 Oracle, MySQL, SQL Server。这里涉及到一个跨系统的数据整合、清洗和查询问题,可以想想这种报表查询你会遇到什么样的困难?

3. 业务人员要求的分析目标是站在业务的分析角度上的,这种业务分析角度上的数据模型和原始的业务系统数据存储结构由很大的区别。
打比方说:在业务系统中存放的是一个打电话的数据流:
张三 北京  2012-01-01 19:00:30   2012-01-01 19:30:23 
张三 上海  2012-01-02 21:00:30   2012-01-02 21:34:23
李四 北京  2012-01-01 19:00:30   2012-01-01 19:30:23 
王五 上海  2012-01-02 21:00:30   2012-01-02 21:34:23

但是业务人员需要统计分析的是:查看客户在不同时间不同地点的通话时长。所以简单的业务分析模型从原始数据模型:客户,地点,开始通话时间,结束通话时间就变成了:客户,地点,时间,通话时长。这里面就存在一个通话时间的计算与按照客户、地点、时间进行的汇总计算。

这只是一个非常简单的例子,站在业务的角度看到的业务模型与我们在数据库设计的数据结构有很大的区别。可以想象一下业务人员有多少这种分析需求,而我们的业务系统是否每次都可以很清晰快捷的提供这种让业务人员很容易理解的分析模型。

4. 由于历史遗留问题,业务线上存在一套新的业务系统和一套旧的业务系统。两套业务系统中存在两套在很细细节上有差别的会员信息,现在需要分析会员,到底是去新的还是旧的? 因为最终给到业务人员只能有一种标准,如何处理?

5. 通常情况下我们在业务系统是不存放和维护历史数据的,在业务系统中通常的操作就是录入和修改操作。如果想分析以前的历史数据怎么办?由于表设计的原因,在 一些网站的用户表里面,只会存放这个用户当前登录的时间和地点,用户第二次登录的时候就会把上一次的登录时间和地点在表里面修改掉,现在要分析用户的历史 登录时间和地点如何处理。

上面五个例子简单说明了一下在没有数据仓库的时候,我们在准备数据提供给业务人员做分析或者我们自己提供业务报表以支持各个业务部门决策的时候会遇到的问题和麻烦。

数据仓库并不是一个很特别的概念,其实就是顺其自然的出现在当我们要处理上述问题的时候出现的一种手段或者叫解决方案。针对上面几个场景,对应的就是:
第一,报表查询是基于数据仓库基础之上的,而非业务系统本身。报表查询不会对业务系统造成任何性能上的影响,不会出现一边边查询报表一边边录入数据修改数据的问题。
第二,可以跨系统,抽取来自不同业务系统的数据存放到一个集中统一的数据库中,报表查询不会出现跨系统的情况,操作性上很简单直接。
第三,大量的汇总和聚合处理发生在从源数据到数据仓库这个阶段,在数据表结构设计上是最终需要分析的结果,或者比较适合业务人员理解的一种数据模型。
第四,在合并不同的业务系统数据的时候,会发生清洗和转换,清洗掉非分析目标的数据,定义清洗规则合并数据,形成一个完整的统一的干净的数据源提供给业务人员。
第五,可以通过数据仓库存放历史的数据信息,可以面向历史对数据做分析。数据仓库的数据少改动,多用作查询和分析。

最后来看对数据仓库比较规范的解释:
数 据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。

而它的实现过程我们可以举一个例子,你要做一桌饭菜,你需要做什么事情?
1. 先明确需要做什么菜,比如:西红柿鸡蛋,土豆烧肉,油闷大虾,小蘑菇炖鸡。(明确分析的主题)
2. 确定要做什么菜之后就需要跑到菜市场里面不同的摊位去买菜。(明确数据源数据,要对这些数据进行抽取)
3. 买完菜之后就需要在家里洗菜,清洗,然后按菜把原材料摆放在一起。一只鸡2斤可能拔毛开胸去内脏之后就只有1斤左右,这个就是清洗的过程。(清洗和整理数据,数据加工进入数据仓库)
4. 最后下锅加工出来一盘菜端给客人吃。(产生最终的分析报表,按业务需求主题划分)

从源系统->数据仓库->BI 报表 就类似于这样的过程。

它与数据的大小没有必然关系,只与你数据获取和整理的复杂程度有关,一盘菜也是菜呐!
 
0

Damon_hoo 2016-01-13 回答

感谢老师这么详细的回复。

要回复问题请先登录注册