数据仓库
作者:互联网
定义
数据仓库(data warehouse,也称为企业数据仓库)是用于报告和数据分析的系统,被认为是商业智能的核心组件。数据仓库是来自一个或多个不同源的集成数据的中央存储库。数据仓库将当前和历史数据存储在一起,用于为整个企业的员工创建分析报告。
用途
-
制定年度目标
-
优化业务流程
数据仓库主要用于数据挖掘和数据分析,辅助领导做决策。
数据仓库的特点
1 面向主题
主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。面向主题的数据组织方式,就是在较高层次上对分析对象的数据的一个完整,一致的描述,能完整、统一的刻画各个分析对象所涉及的企业的各项数据,以及数据之间的联系。
2 集成性
数据仓库的数据是从原有分散的数据库数据抽取来的。(1)要统一数据源中所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致等。(2)进行数据综合和计算。
3 时间差异性
数据仓库的数据随时间的变化而不断变化的。(1)数据仓库随时间变化不断增加新的数据内容。(2)数据仓库随时间变化不断删去旧的数据内容。(3)数据仓库中包含大量的综合数据,这些综合数据中很多根时间有关,如数据经常按照时间段进行综合,或隔一定的时间片进行抽样等等。
4 不变动性
数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一般情况下并不进行修改操作。
数据仓库发展历程
1 简单报表阶段
这个阶段,系统的主要目的是解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所需要的汇总数据。这个阶段的大部分表现形式为数据库和前端报表工具。
2 数据集市阶段
这个阶段,主要根据业务部门的需要,进行一定的数据采集,整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据。
3 数据仓库阶段
这个阶段,主要是按照一定的数据模型,对整个企业的数据进行采集,整理,并且能够按照各个业务部门的需要,提供跨部门的,完全一致的业务报表数据,能够通过数据仓库生成对业务具有指导性的数据,同时,为领导决策提供全面的数据支持。
数据库与数据仓库的区别
数据库
是一种逻辑概念,用来存放数据的仓库。通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里可以有很多字段。字段一字排开,对应的数据就一行一行写入表中。数据库的表,在于能够用二维表现多维关系。目前市面上流行的数据库都是二维数据库。如Oracle、DB2、MySQL、Sybase、MS SQL Server等。
数据仓库
是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现的存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大得多。数据仓库主要用于数据挖掘和数据分析,辅助领导决策。
表操作性处理和分析型处理的比较
操作性处理 | 分析型处理 |
细节的 | 综合的或提炼的 |
实体—关系(E-R)模型 | 星型模型或雪花模型 |
存取瞬间数据 | 存储历史数据,不包含最近的数据 |
可更新的 | 只读、只追加 |
一次操作一个单元 | 一次操作一个集合 |
性能要求高,相应时间短 | 性能要求宽松 |
面向事物 | 面向分析 |
一次操作数据量小 | 一次操作数据量大 |
支持日常操作 | 支持决策需求 |
数据量小 | 数据量大 |
客户订单、库存水平和银行账户查询等 | 客户收益分析、市场细分等 |
数据仓库架构分层
1) ODS层(临时存储层)
是接口数据的临时存储区域,为后一步的数据处理做准备。
2) PDW层(数据仓库层)
是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。
3) DM层(数据集市层)
这层数据是面向主题来组织数据的,通常是星型或雪花结构的数据。
4) APP层(应用层)
完全为了满足具体的分析需求而构建的数据,也是星行或雪花结构的数据。
为什么要对数据仓库分层?
1) 用空间换时间,通过大量的预处理来提升应用系统的用户体验(效率),因此数据仓库会存在大量冗余的数据。
2) 如果不分层的话,如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大。
3) 通过数据分层管理可以简化数据清洗的过程,因为把原来一步的工作分到了多个步骤去完成,相当于把一个复杂的工作拆成了多个简单的工作,把一个大的黑盒变成了一个白盒,每一层的处理逻辑都相对简单和容易理解,这样我们比较容易保证每一个步骤的正确性,当数据发生错误的时候,往往我们只需要局部调整某个步骤即可。
星型模型和雪花模型
1 星型模型
当所有维表都直接连接到“事实表“上时,整个图解就像星星一样,故将该模型称为星型模型。
星型架构是一种非正规化的结构,多维数据集的每一个维度都是直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家A省B的城市C以及国家A省B的城市D的两条记录,那么国家A和省B的信息分别存储了两次,即存在冗余。
2 雪花模型
当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的“层次”区域,这些被分解的表连接到主维度表而不是事实表。将地域维表又分解为国家,省份,城市等维表。它的优点是:通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。
星型模型和雪花型模型对比
1) 数据优化
雪花模型使用的是规范化数据,也就是说数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量。通过引用完整性,其业务层级和维度都将存储在数据模型之中。相比较而言,星型模型使用的是反规范化数据。在星型模型中,维度直接指的是事实表,业务层级不会通过维度之间的参照完整性来部署。
2) 业务模型
在雪花模型中,数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的。而在星型模型中,所有必要的维度表都在事实表中都只拥有外键。
3) 性能
雪花模型在维度表、事实表之间的连接很多,因此性能方面会比较低,而星型模型的连接就少得多。
4) ETL(将资料从来源端经过抽取(extract)、转置(transform)、加载(load)至目的端的过程)
雪花模型加载数据集市,因此ETL操作在设计上更加复杂,而且由于附属模型的限制,不能并行化。星行模型加载维度表,不需要在维度之间添加附属模型,因此ETL就相对简单,而且可以实现高度的并行化。
总结
雪花模型使得维度分析更加容易,星型模型用来做指标分析更合适。
标签:模型,数据仓库,星型,维度,数据,数据库 来源: https://blog.csdn.net/weixin_39918388/article/details/115135581