什么是数据仓库
数据仓库,Data warehouse(可简写为DW或者DWH)
数据仓库之父 Bill Inmon 在1991年提出,将数据仓库描述为一个 面向主题的、集成的、随时间变化的、非易失的 数据集合,用于即席查询、分析系统、报表系统、数据挖掘系统等,最终供 管理者做决策。
理解
数据仓库主要功能是 查询 和 分析 ,主要应用于 OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重 决策支持,并且提供 直观易懂的查询结果,如:饼状图、柱状图、折线图等
面向主题
主题是一个抽象概念,简单地说就是 与业务相关的数据的类别,每一个主题基本对应一个宏观的 分析领域
例如,一个公司要 分析销售数据,就可以建立一个 专注于销售的数据仓库,使用这个数据仓库,就可以回答类似于 “去年谁是我们这款产品的最佳用户” 这样的问题。
这个场景下的销售,就是一个数据主题
集成
集成的概念与面向主题是密切相关的。
如上面销售的例子,假设公司有多条产品线和多种产品销售渠道,而每个产品线都有自己独立的销售数据库。此时要想从公司层面整体分析销售数据,必须 将多个分散的数据源统一成一致的、无歧义的数据格式后,再放置到数据仓库中。因此数据仓库必须能够解决诸如产品命名冲突、计量单位不一致等问题。
当完成了这些数据整合工作后,该数据仓库就可称为是集成的。
随时间变化
为了发现业务变化的趋势、存在的问题,或者新的机会,需要分析大量的历史数据。
数据仓库关注的是数据随时间变化的情况,并且能反映在过去某个时间点的数据是怎样的。换句话说,数据仓库中的数据是 反映了某一历史时间点的数据快照,这就是 “随时间变化” 的含义。
数据也有自己的生命周期,到了一定时候,数据会从数据仓库中移除
非易失
数据进入到数据仓库中,数据就不应该再有改变。数据仓库的目的就是要 根据历史数据进行分析,所以数据不能改变。
业务数据库中 增、删、改 的数据,进入数据仓库时会 产生新的记录,这样就保留了数据变化的历史轨迹。
为什么建立数据仓库
通常数据仓库的数据来自各个业务系统、文件,这些数据经过一系列的 数据抽取、转换、清洗,最终以 统一的格式 装载进数据仓库
数据来源和去向
数据来源
有以下三类:
- 日志数据:用户行为日志、物联网采集日志,这类文件一般是 文本文件、CSV文件 等 非结构化数据
- 业务数据:业务管理系统中的数据,如:Oracle、MySQL、SQL Server 等关系数据库里的 结构化数据
- 爬虫数据:爬取互联网的数据,如:HTML、XML、JSON 等 半结构化数据
数据去向
注意:数据仓库的目的不是保存数据,而是 数据分析,具体如下:
- 报表系统:生成饼状图、柱状图、折线图
- 分析系统:用户分析、农业分析、医疗分析
- 智能推荐:头条、抖音、电商
- 数据挖掘系统:新冠疫情预测
- 为企业决策,提供数据支持
为什么不用业务数据库
- 某些业务数据由于安全或其他因素不能直接访问。
- 业务系统的版本变更很频繁,每次变更都需要重写分析系统并重新测试。
- 很难建立和维护汇总数据来源于多个业务系统版本的报表。
- 业务系统的列名通常是硬编码,有时仅仅是无意义的字符串,这让编写分析系统更加困难。
- 业务系统的数据格式,如日期、数字的格式不统一。
- 业务系统的表结构为事务处理性能而优化,有时并不适合查询与分析。
- 没有适当的方式将有价值的数据合并进特定应用的数据库。
- 没有适当的位置存储元数据。
- 用户需要看到的显示数据字段,有时在数据库中并不存在。
- 通常事务处理的优先级比分析系统高,所以如果分析系统和事务处理运行在同一硬件之上,分析系统往往性能很差。
- 有误用业务数据的风险。
- 极有可能影响业务系统的性能。
使用数据仓库的好处
- 将多个数据源集成到单一数据存储,因此可以使用单一数据查询引擎展示数据。
- 缓解在事务处理数据库上因执行大查询而产生的资源竞争问题。
- 维护历史数据。
- 通过对多个源系统的数据整合,使得在整个企业的角度存在统一的中心视图.
- 通过提供一致的编码和描述,减少或修正坏数据问题,提高数据质量。
- 提供所有数据的单一通用数据模型,而不用关心数据源。
- 重构数据,使数据对业务用户更有意义。
- 向复杂分析查询交付优秀的查询性能,同时不影响操作型系统.
- 开发决策型查询更简单。
