# 数据仓库
# 数据仓库架构
为企业制定决策,提供数据支持,帮助企业改进流程,提高产品质量等。
数据仓库,并不是数据的最终目的地,这些准备包括对数据的:备份、清洗、聚合、统计等。
数据仓库,英文名称为 Data Warehouse,可简写为 DW 或 DWH。数据仓库, 是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。 它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要 业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
# 数据仓库基本特征
数据仓库是面向主题的、集成的、非易失的和时变的数据集合,用以支持管理决策。
# 面向主题
传统数据库中,最大的特点是面向应用进行数据的组织,各个业务系统可能是相互分离的。 而数据仓库则是面向主题的。
主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用 的抽象。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。
# 集成性
通过对分散、独立、异构的数据库数据进行抽取、清理、转换和汇总便得到了数据仓库的 数据,这样保证了数据仓库内的数据关于整个企业的一致性。
数据仓库中的综合数据不能从原有的数据库系统直接得到。因此在数据进入数据仓库之前, 必然要经过统一与综合,这一步是数据仓库建设中最关键、最复杂的一步,所要完成的工作有:
- 要统一源数据中所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致,等等。
- 进行数据综合和计算。数据仓库中的数据综合工作可以在从原有数据库抽取数据时生成, 但许多是在数据仓库内部生成的,即进入数据仓库以后进行综合生成的。
# 非易失性
不可更新性
数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的 集合,以及基于这些快照进行统计、综合和重组的导出数据。
数据非易失性主要是针对应用而言。数据仓库的用户对数据的操作大多是数据查询或比较复 杂的挖掘,一旦数据进入数据仓库以后,一般情况下被较长时间保留。数据仓库中一般有大 量的查询操作,但修改和删除操作很少。因此,数据经加工和集成进入数据仓库后是极少更 新的,通常只需要定期的加载和更新。
# 时变性
数据仓库包含各种粒度的历史数据。数据仓库中的数据可能与某个特定日期、星期、月份、 季度或者年份有关。数据仓库的目的是通过分析企业过去一段时间业务的经营状况,挖掘 其中隐藏的模式。虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是永远 不变的。分析的结果只能反映过去的情况,当业务变化后,挖掘出的模式会失去时效性。 因此数据仓库的数据需要更新,以适应决策的需要。从这个角度讲,数据仓库建设是一个 项目,更是一个过程。数据仓库的数据随时间的变化表现在以下几个方面:
- 数据仓库的数据时限一般要远远长于操作型数据的数据时限。
- 操作型系统存储的是当前数据,而数据仓库中的数据是历史数据。
- 数据仓库中的数据是按照时间顺序追加的,它们都带有时间属性。
# 使用场景
# 数据仓库与数据库的区别
- 数据库: 传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
- 数据仓库:数据仓库系统的主要应用主要是 OLAP(On-Line Analytical Processing), 支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
| 序号 | 差异项 | 数据库 | 数据仓库 | 备注 |
|---|---|---|---|---|
| 1 | 特征 | 操作处理 | 信息处理 | |
| 2 | 面向 | 事务 | 分析 | |
| 3 | 用户 | DBA、开发 | 经理、主管、分析人员 | |
| 4 | 功能 | 日常操作 | 长期信息需求、决策支持 | |
| 5 | DB | 设计 | 基于 ER 模型,面向应用星形/雪花模型,面向主题 | |
| 6 | 数据 | 当前的、最新的 | 历史的、跨时间维护 | |
| 7 | 汇总 | 原始的、高度详细 | 汇总的、统一的 | |
| 8 | 视图 | 详细、一般关系 | 汇总的、多维的 | |
| 9 | 工作单元 | 短的、简单事务 | 复杂查询 | |
| 10 | 访问 | 读/写 | 大多为读 | |
| 11 | 关注 | 数据进入 | 信息输出 | |
| 12 | 操作 | 主键索引操作 | 大量的磁盘扫描 | |
| 13 | 用户数 | 数百到数亿 | 数百 | |
| 14 | DB | 规模 | GB 到 TB >= TB | |
| 15 | 优先 | 高性能、高可用性 | 高灵活性 | |
| 16 | 度量 | 事务吞吐量 | 查询吞吐量、响应时间 |
# 数据仓库的作用在于
数据结构为了分析和查询的便利; 只读优化的数据库,即不需要它写入速度多么快,只要做大量数据的复杂查询的速度足够快就行了。 那么在这里前一种业务数据库(读写都优化)的是业务性数据库,后一种是分析性数据库,即数据仓库。
# 场景需求
- 数据量超过 TB 级,且采集的数据在不断的增加 ;
- 各个应用数据较为分散,无法集中收集 ;
- 审计需要采集用户操作、点击、历史、访问等数据,未能做到及时保存和提供数据分析 ;
- 用户明细和数据量统一不及时,数据分析较慢。
# 其它
- 略