Greenplum构建实时数据仓库实践
上QQ阅读APP看书,第一时间看更新

1.1.2 建立数据仓库的原因

现在读者应该已经熟悉了数据仓库的概念,那么数据仓库里的数据从哪里来呢?通常数据仓库的数据来自各个业务应用系统。业务系统中的数据形式多种多样,可能是Oracle、MySQL、SQL Server等关系数据库里的结构化数据,可能是文本、CSV等平面文件或Word、Excel文档中的非结构化数据,还可能是HTML、XML等自描述的半结构化数据。这些业务数据经过一系列的数据抽取、转换、清洗,最终以一种统一的格式装载进数据仓库。数据仓库里的数据作为分析用的数据源,提供给后面的即席查询(Ad-Hoc Query)、分析系统、数据集市、报表系统、数据挖掘系统等。

从存储的角度看,数据仓库里的数据实际上已经存在于业务应用系统中,那么为什么不能直接操作业务系统中的数据用于分析,而要使用数据仓库呢?实际上在数据仓库技术出现前,有很多数据分析的先驱者已经发现,简单的“直接访问”方式很难良好工作,这样做的失败案例数不胜数。下面列举一些直接访问业务系统无法工作的原因:

● 某些业务数据由于安全或其他因素不能直接访问。

● 业务系统的版本变更很频繁,每次变更都需要重写分析系统并重新测试。

● 很难建立和维护汇总数据来源于多个业务系统版本的报表。

● 业务系统的列名通常是硬编码,有时仅仅是无意义的字符串,这让编写分析系统更加困难。

● 业务系统的数据格式,如日期、数字的格式不统一。

● 业务系统的表结构为事务处理性能而优化,有时并不适合查询与分析。

● 没有适当的方式将有价值的数据合并进特定应用的数据库。

● 没有适当的位置存储元数据。

● 用户需要看到的显示数据字段,有时在数据库中并不存在。

● 通常事务处理的优先级比分析系统高,所以如果分析系统和事务处理运行在同一硬件之上,分析系统往往性能很差。

● 有误用业务数据的风险。

● 极有可能影响业务系统的性能。

尽管需要增加软硬件的投入,但建立独立数据仓库与直接访问业务数据相比,无论是成本还是带来的好处,这样做都是值得的。随着处理器和存储成本的逐年降低,数据仓库方案的优势更加明显,在经济上也更具可行性。

无论是建立数据仓库还是实施别的项目,都要从时间、成本、功能等几个角度来权衡比较,认真研究一下是否真正需要建立一个数据仓库。这是一个很好的问题,当我们的组织很小、人数很少、业务单一、数据量也不大时,可能真的不需要建立数据仓库。毕竟要想成功建立一个数据仓库并使其发挥应有的作用还是很有难度的,需要大量的人、财、物力,并且即便花费很大的代价完成了数据仓库的建设,在较短一段时间内也不易显现出价值。在没有专家介入而仅凭组织自身力量建立数据仓库时,还要冒相当大的失败风险。但是,当我们所在的组织有超过1000名员工,有几十个部门的时候,它所面临的挑战将是完全不同的。在这个充满竞争的时代,做出正确的决策对一个组织至关重要。而要做出最恰当的决策,仅依据对孤立维度的分析是不可能实现的。这时必须考虑所有相关数据的可用性,而这个数据最好的来源就是一个设计良好的数据仓库。

假设一个超市连锁企业,在没有实现数据仓库的情况下,该企业会发现,想要分析商品销售情况是非常困难的。比如,哪些商品被售出,哪些没有被售出,什么时间销量上升,哪个年龄组的客户倾向于购买哪些特定商品,等等,这些问题都无从回答,而给出这些问题的正确答案正是一个具有吸引力的挑战。这只是第一步,必须搞清楚一个特定商品到底适不适合18~25岁的人群,以决定该商品的销售策略。一旦从数据分析得出的结论是销售该商品的价值在降低,那么必须实施后面的步骤以分析在哪里出了问题,并采取相应的措施加以改进。

在辅助战略决策层面,数据仓库的重要性更加凸显。作为一个企业的经营者或管理者,他必须对某些问题给出答案,以获得超越竞争对手的额外优势。回答这些问题对于基本的业务运营可能不是必须的,但对于企业的生存发展却必不可少。下面是一些常见问题的例子:

● 如何把公司的市场份额提升5%?

● 哪些产品的市场表现不令人满意?

● 哪些代理商需要销售政策的帮助?

● 提供给客户的服务质量如何?哪些需要改进?

回答这些战略性问题的关键一环就是数据仓库。就拿“提供给客户的服务质量如何?”这一问题来说,这是管理者最为关心的问题之一。我们可以把这一问题分解成许多具体的小问题,比如第一个问题是:在过去半年中,收到过多少用户反馈?可以在数据仓库上发出对应的查询,并对查询结果进行分析。之所以能够这样做,是因为数据仓库中含有每一条用户反馈信息。

你可能已经想到了,第二个问题自然就是:在这些用户反馈当中,给出“非常满意”“一般”“不满意”的人数分别有多少?第三个问题就是:客户所强调的需要改进的地方和广受批评的地方是哪些?这在数据仓库的用户反馈信息中也有一列来表示,它也能从一个侧面反映出客户关心的问题是哪些。以上三个问题的答案联合在一起,就可以得出客户服务满意度的结论,并且准确定位哪些地方急需改进。

下面简单总结一下使用数据仓库的好处:

● 将多个数据源集成到单一数据存储,因此可以使用单一数据查询引擎展示数据。

● 缓解在事务处理数据库上因执行大查询而产生的资源竞争问题。

● 维护历史数据。

● 通过对多个源系统的数据整合,使得在整个企业的角度存在统一的中心视图。

● 通过提供一致的编码和描述,减少或修正坏数据问题,提高数据质量。

● 一致性地表示组织信息。

● 提供所有数据的单一通用数据模型,而不用关心数据源。

● 重构数据,使数据对业务用户更有意义。

● 向复杂分析查询交付优秀的查询性能,同时不影响操作型系统。

● 开发决策型查询更简单。