数据仓库概念
数据仓库是一个面向主题的、集成的、非易失的、随时间变化的用来支持管理人员决策的数据集合
面向主题:操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。主题是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。
集成:数据仓库的数据有来自于分散的操作型数据,将所需数据从原来的数据中抽取出数据仓库的核心工具来,进行加工与集成,统一与综合之后才能进入数据仓库;
非易失的:数据仓库中的数据通常以批量方式载入和访问,在数据仓库环境中一般不进行更新
随时间而变化:数据仓库中的每个数据单元只是在某一时间是准确的。在一些情况下,数据中加有时戳,而在另一些情况下记录则包含一个事务的时间。总之,在任何情况下,记录都包含某种形式的时间标志用以说明数据在那一时间是准确的。
数据仓库发展
数据仓库和决策支持系统的起源可以追溯到计算机与信息系统发展的初期。
1. 20世纪60年代:穿孔卡和纸带作为最常用的存储介质,应用以报表处理为特征。
主文件和磁带的使用量的迅速增长,出现了大量冗余数据,导致:
1)更新数据时需要保持数据一致性
2)程序维护的复杂性
3)开发新程序的复杂性
4)支持所有主文件需要大量硬件
2. 20世纪70年代:出现磁盘存储器,数据库管理系统以及在线事务处理(OLTP)
3. 20世纪80年代:出现个人计算机和第四代编程语言,最终用户直接控制系统和数据,早期的管理信息系统MIS(Management Infomation System)可以实现。
4. 自然演化体系结构:大型在线事务处理系统出现后不久,出现了用于“抽取”处理的程序。抽取程序搜索整个文件或数据库,使用某些标准选择合乎要求的数据,并将这些数据传送到其他文件或数据库中。随着抽取程序应用的普遍,抽取程序的蜘蛛网开始形成。
自然演化体系结构带来了一些问题:
1)数据缺乏可信性
2)生产率问题
3)无法将数据转化为信息
5.体系结构化的数据仓库环境:主要存在两种数据,原始数据(操作型数据)和导出数据(DSS型数据)|
体系结构化数据仓库环境
主要包括四个层次的数据:
1. 操作层:包含面向应用的原始数据,主要服务于高性能事务处理领域
2. 数据仓库层:存储不可更新的集成的原始历史数据
3. 部门层(数据集市层):根据用户的需求为满足部门的特殊需求而建立
4. 个体层:常常是暂时的,小规模的,主要完成大多数的启发式分析。
数据集成:
当数据从操作型层到数据仓库层,如果不进行数据集成就没有意义。当数据以非集成状态到达数据仓库,它就无法支持数据的企业试图。数据集成通过ETL进行,只需进行一次。
数据仓库用户
数据仓库用户也成为DSS分析员,他们的主要工作是定义和发现在企业决策中使用的信息。
DSS分析员在发现模式下工作,只有看到报表时,他们才开始探讨是否有必要进行DSS分析。
传统的SDLC(软件开发生命周期)不适用于DSS分析员,SDLC假设在设计之初,需求是已知的,但是,DSS分析员眼中,到DSS开发生命周期的最后才发现真正的需求。
数据粒度
数据粒度是数据仓库中保存数据的细化和综合程度。数据粒度的设计,直接影响到存储量及查询质量,并且直接影响到用户的分析需求。
选择合适的粒度级别是数据仓库建设好坏的重要关键内容。选择粒度级别的一般方法,是先利用常识建立数据仓库的一小部分,并让用户去访问这些数据;然后根据系统运行情况及客户的反映,适当调整粒度的级别。在设计数据粒度时,通常需重点考虑以下因素:
1. 要接受的分析类型、可接受的数据最低粒度和能存储的数据量
2. 粒度的层次定义越高,就越不能在该仓库中进行更细致的分析
3. 在同一模式中使用多重粒度
4. 如果存储资源有一定的限制,就只能采用较高粒度的数据粒度划分策
5. 粒度的确定实质上是业务决策分析、硬件、软件和数据仓库使用方法的一个折衷
6. 数据粒度划分策略一定要保证数据的粒度确实能够满足用户的决策分析需要,这是数据粒度划分策略中最重要的一个准则。
数据分区
在数据仓库环境中,我们的问题不是要不要对细节数据进行分区,而是如何分区。恰当地数据分区使得数据可以增长,并且可以进行管理。
对数据进行分区的目的是把数据划分成小的可管理的物理单元。当数据存放在大的物理单元时,以下任务无法轻松完成:
1.重构
2.索引
3.扫描
4.重组
5.恢复
6.监控
活样本数据库
活样本数据库是从数据仓库中取得的真实数据或轻度综合数据的一个子集。当对于正常的存取和分析,如果数据仓库中的数据是在是太多,可以考虑使用活样本数据库。
建立活样本数据库的一个重要问题是如何装载数据,这决定了活样本数据库中的数据量以及其中的数据随机程度。
活样本数据库的最大好处是存取效率非常高,因为活样本数据库的大小要比从中导出它的大数据库小的多。
数据仓库开发生命周期
传统SDLC:收集需求->分析->设计->编程->测试->集成->实现
数据仓库SDLC:实现数据仓库->集成数据->检验偏差->针对数据编程->设计DSS系统->分析结果->理解需求
数据仓库的开发和传统的SDLC相反,我们可以称这种周期为CLDS,传统的SDLC需求驱动,首先必须理解需求,然后进入设计和开发阶段。
CLDS刚好相反,它由数据开始,得到数据后,将数据集成,然后检验数据存在什么偏差。之后,针对数据写程序、分析程序的执行结果,最后,需求才得到理解。一旦系统需求得到理解,就需要对系统的设计进行调整,针对不同的数据集开发新的开发周期。因为开发生命周期不断地重新安排不同类型的数据,所以,CLDS常称为螺旋式开发。
数据仓库监控
监控数据仓库环境中的数据对有效管理数据仓库环境是最基本的,包括:
1.哪些数据被使用
2.数据增长状况
3.最终用户的响应时间
4.谁在使用数据仓库
5.用户在使用数据仓库中的多少数据
6.数据仓库何时被使用
7.确定数据仓库中有多少数据正在被使用
8.数据仓库的使用率水平
数据仓库中的错误数据
数据仓库设计人员必须清楚如何对数据仓库中的错误数据进行处理。
如果数据仓库中的错误数据时由于ETL问题而批量进入的,我们必须找出ETL工具并作出调整。
即使最好的ETL处理工具,仍然会有错误数据进入数据仓库环境。
假设我们有一条销售记录,销售额为1000,一段时间后我们发现这条数据是有问题的,销售额不是1000,而是100。我们可以采用以下方法纠正数据。
1. 找出相应的数据并修正。引发的问题:数据出现不一致性、很多时候不是修正一个条目,而是很多很多条目。
2. 加入修正条目。引发的问题:可能修正很多条目、修正公式复杂
3. 不考虑历史数据,重设数据以保证当前数据的正确性。引发的问题:数据无法解释。
reference:
<数据仓库> 美:william H.Inmon 王志海等译
<数据仓库设计:现代原理与方法> 意大利:Matteo Golfarelli Stefan Rizzi 战晓苏等译
数据仓库中的数据粒度确定原则