什么是数据仓库?
一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理者的决策过程。
面向主题:如去年买了100w货以上的用户有哪些?这个场景就是一个销售的数据主题。
集成:假设公司有多个产品线分别在不同的数据库,要统计总销量,就可以把各个数据集成在数据仓库
随时间变化:数据随着时间变化的情况,能反映在历史时间点的数据快照。
非易失:一旦进入到数据仓库中,数据就不应该再有改变。新的数据进入产生新的记录,保留数据变化的历史轨迹。也就是说数据仓库中的数据基本是静态的。
为什么要建立数据仓库?
业务系统中的数据形式多种多样(Oracle、mysql、sqlserver等,文本、csv、word、excel、xml)。
数据仓库可以提供即时查询、分析系统、数据集市、报表系统、数据挖掘。
“直接访问”业务系统的数据方式很难良好的工作,主要原因如下:
- 业务数据由于安全或其它因素不能直接访问
- 业务系统的版本变更频繁,每次变更都需要重写分析系统并重新测试
- 很难建立和维护汇总数据来源于多个业务系统版本的报表。
- 业务系统的列名通常是硬编码,有时仅仅是无意义的字符串,这让编写分析系统更加困难
- 业务系统的数据格式,如日期、数字的格式不统一
- 业务系统的表结构为事务处理性能而优化,有时并不适合查询与分析。
- 没有适当的方式将有价值的数据合并进行特定应用的数据库
- 没有合适的位置存储元数据
- 存在误用业务数据的风险
- 极有可能影响业务系统的性能
是否真正需要一个数据仓库?
建立数据仓库需要投入大量的人、财,而且在较短时间内也不显现出来价值。
人:在没有专家介入而仅凭组织自身力量建立数据仓库时,是要冒着很大的失败风险。
财:虽然当下的云服务器越来越便宜,但是数仓的基础服务器也是其它(如web)服务器几倍之多
投入数据仓库之前先问自己几个问题:
- 如何把公司的市场份额提升5%
- 哪些产品的市场表现不令人满意?
- 哪些代理商需要销售政策的帮助?
- 提供给客户的服务质量如何?哪些需要改进?
- 即使上面的问题都需要解决,是否一定要数据仓库才能解决?
总结一下数据仓库的好处:
- 将多个数据源集成到单一数据存储,因此可以使用单一数据查询引擎展示数据。
- 缓解在事务处理数据库上因执行大查询而产生的资源竞争问题。
- 维护历史数据
- 提高数据质量(通过提供一致的编码和描述,减少或修正坏数据问题)
- 一致性地表示组织信息
- 提供所有数据的单一通用数据模型,而不用关系数据源
- 重构数据,使用数据对业务用户更有意义
- 向复杂分析查询交付优秀的查询性能,同时不影响业务系统