数据仓库-简介


数据仓库定义

20世纪80年代,IBM研究人员开发出“商业数据仓库”。
本质上,数据仓库试图提供一种从操作型系统到决策支持环境的数据流架构模型

数据仓库之父Bill Inmon在1991年出版的Building the data warehouse一书中首次提出被广泛认可的数据仓库定义。

面向主题
主题是一个抽象的概念,与业务相关的数据的类型,每一个主题基本对应一个宏观的分析领域。
主题域是对某个主题进行分析确认后的主题的边界,如客户,销售,产品都是主题域的例子。

集成
数据仓库必须能够解决多个分散系统的数据源统一成一致的、无歧义的数据格式后,再放到数据仓库中。

随时间变化
为了发现业务变化的趋势、存在的问题,或者新的机会,需要分析大量的历史数据。数据仓库中数据是反映了某一历史时间点的数据快照,这也就是随时间变化的含义。
任何数据仓库的数据都不能只入不出,有一定的生命周期,到了一定时候需要从数据仓库中移除,移除的方式可能是细节数据汇总后删除,将老数据转存到大容量介质后删除和直接武力删除等。

非易失
指的是,一旦进入数据仓库中,数据就不应该再有所改变。数据仓库中的数据一般都是静止的。

除了以上的四个特性,数据仓库还有一个重要的概念就是粒度。粒度是指数据的细节和汇总程度,细节程度越高,粒度级别越低。
例如单个事务是低粒度级别,而全部一个月的事务的汇总就是高粒度级别。粒度级别越低,数据量越大。
如果数据进入数据仓库粒度高于数据仓库,那么需要对数据进行拆分。
如果数据进入数据仓库粒度低于数据仓库,则需要过滤汇总。


建立数据仓库的原因

通常数据仓库的数据来自于各个应用系统。业务系统中的数据形式多种多样,可能是oracle、mysql、sqlserver 、db2等关系数据库里的结构化数据,可能是文本,csv等平面文件或者word、excel文档中的非结构化数据,还可能是html、xml等自描述的半结构化数据。

这些业务数据经过一系列的数据抽取、转换、清洗、最终以一种统一的格式装载进入数据仓库。

数据仓库里的数据提供给后面即席查询、分析系统、数据集市、报表系统、数据挖掘系统等。

为什么不直接访问业务系统用于数据分析

  • 出于数据安全或其他因素不能直接访问
  • 业务系统变更频繁,重新设计和测试
  • 很难建立和维护来源多个业务系统版本的报表
  • 业务系统列名称是硬编码,有时无意义,让编写分析系统更困难
  • 业务系统数据格式不统一
  • 业务系统表结构为事务处理性能优化,有时候不适合查询和分析
  • 没有适当的方式将有价值的数据合并进特定应用的数据库
  • 没有适当的位置存储元数据
  • 用户需要看的的显示数据字段,有时数据库不存在
  • 通常事务处理优先级比分析系统高,性能差
  • 有误用业务数据的风险
  • 极可能影响业务系统的性能

使用数据仓库的好处

  • 将多个数据集成到单一数据存储,因此可以使用单一数据查询引擎展示数据
  • 维护历史数据
  • 缓解事务处理数据库资源竞争问题
  • 整合数据,使得企业有了统一的中心视图
  • 提供一致的编码和描述,减少和修正坏数据,提高数据质量
  • 一致性的表示组织信息
  • 提供所有数据的单一通用数据模型
  • 重构数据,使得数据对业务用户更有意义
  • 提供优秀的分析查询性能
  • 开发决策查询更简单

操作型系统与分析型系统

操作型系统完成组织的核心业务,下订单、更新库存、记录支付信息。尽可能快的处理事务,同时维护数据的一致性和完整性。
而分析系统主要作用是通过数据分析评估组织的业务经营状况,进一步辅助决策。

操作型系统

操作型系统是一类专门用于管理面向事务的应用的信息系统。
在数据库中使用事务主要出于两种目的:
保证工作单元的可靠性
提供并发访问数据库的多个程序间的隔离

引申事务具有原子性、一致性、隔离型、持久性。
也就是常说的ACID
原子性:要么一系列操作全执行或不执行。
一致性:任何数据事务只能以允许的方式修改数据,任何数据操作必须遵循既有的规则,包括约束、级联、触发器以及他们的任意组合。他能保证不会因为程序错误而使数据库产生违反规则的结果。
隔离性:隔离性觉得了其他用户所能看到的事务完整性程度。
在数据库中按照由低到高,一般有读非提交、读提交、可重复读、串行化等几种隔离级别。oracle只实现了读提交和串行化,而mysql数据库则提供了全部四种隔离级别。
隔离级别越低,多用户访问数据库的能力越高。但同时增加脏读,丢失更新等并发操作引起的负面影响。
相反,高隔离降低了并发影响,但需要同时使用更多的系统资源,也增加了事务被阻塞的可能性。
持久性:数据库的持久性保证已经提交的事务是永久保存的。
高并发、高吞吐、具有大量检索插入更新操作,事务量大,但每个事务影响的数据量相对较小。
对操作型系统的应用主要要求是高可用、高速度、高并发、可恢复和保证数据的一致性。
常见操作是增改查、通常是插入和更新密集型的。
删除操作相对较少。
一般直接在数据库上修改,没有中间过渡区。

操作型系统数据库设计
在数据库逻辑设计上,操作系统的应用数据库大都使用规范化设计方法。通常要满足第三范式。能够最大限度减少数据冗余。因而提供更高效的方式执行数据写操作。

以Oracle数据库为例

  • 调整回滚段。可以提供读一致性、回滚事务和数据库恢复。
  • 合理使用聚簇。聚簇是一种数据库模式,其中包含共用一列或多列的多个表。数据库中的聚簇表用于提供连接操作的性能。
  • 适当调整数据块的大小。数据块大小应该是操作系统块大小的倍数,并且设置上限以避免不必要的I/O
  • 设置缓冲区高速缓存大小。合理的缓存大小能够有效的避免不必要的磁盘I/O。
  • 合理划分数据库分区。分区最大的作用是能在可用性和安全性维护期间保持事务处理的能力。
  • SQL优化。有效的利用数据库管理系统的优化器。使用最佳的数据访问路径。
  • 避免过度的使用索引。大量的数据修改会给索引维护带来压力,从而对系统产生负面影响。

以上所说为数据库系统为核心,数据库系统为例保持ACID特性本职上是单一集中式系统。
分布式事务、去中心化、CAP与最终一致性等一系列新的理论和技术为解决系统拓展问题应运而生。

分析型系统

在计算机领域,分析型系统是一种快速回答多维分析查询的实现方式。它也是更广泛范畴的所谓商业智能的一部分。
商业智能还包括数据库、报表系统、数据挖掘、数据可视化等研究方向。
分析型系统的典型应用包括销售业务分析报告、市场管理报告、业务过程管理、预算和预测、金融分析报告及其类似的应用。

  • 分析型系统的数据操作
    少量事务、复杂查询、处理归档和历史数据。数据很少修改,从数据库抽取数据是最多的操作,也是识别这种系统的关键特征。分析型数据库基本都是读操作。

  • 分析型系统的数据库设计
    相对少量的事务、但查询通常非常复杂并且也会包含聚合计算,例如今年和去年同时期数据对比,百分比变化趋势等。
    数据一般来源一个企业级数据仓库,是整合过的历史数据。

在数据库逻辑设计上,分析型数据库使用多维数据模型,通常设计成星型模式或雪花模式。

表分区
可以独立定义表分区的物理存储属性。
不同分区数据存放到多个物理文件上,分散I/O,利用分区消除查询时,不用扫描整张表,从而提高查询性能。

位图索引
当查询条件中包含低基数列(性别、不同值很少)。尤其包含有这些列上的or、and、not这样的逻辑运算时,或者从大量行的表中返回大量的行时,考虑位图索引。

物化视图
物化视图物理存储查询所定义的数据,能够自动增量刷新数据,并且可以利用查询重写特性极大地提高查询速度。是分析系统常用的技术。

并行化操作
查询大量数据时执行并行化操作,会导致多个服务器进程为同一个查询语句工作,使用该查询可以快速完成,但是会耗费更多的资源。

操作型系统和分析型系统对比

操作型系统注重数据分析和报表
操作型系统目标是一个大量数据改变的事务优化系统

数据科学、理解商业智能、数据挖掘、数据仓库、数据模型、ETL处理和大数据等系统的基础。

操作型系统:管理系统、交易系统、在线应用
分析型系统:报表系统、多维分析、决策支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值