一、数据仓库设计方法概述
(一)DW设计与DB设计方法的比较
1.处理类型不同
(1)DB:操作型数据环境,面向业务
(2)DW:面向主题的分析型数据环境,面向分析,从基本主题开始,不断发展新主题
2.面向需求不同
(1)DB:一组较确定的应用(业务处理)需求,较确定的数据流
(2)DW:需求不确切;分析处理需求灵活;没有固定模式;用户对分析处理需求不甚明了;其设计很难以需求为基础
3.设计目标不同:
(1)DB:事务处理的性能(OLTP),支持多用户并发访问,高效的增、删、改操作
(2)DW:建立DSS的数据环境,全局的分析环境,支持用户快速的分析和查询
4.数据来源不同
(1)DB:企业的业务流中产生的数据
(2)DW:系统内部,主要从OLTP系统中获取,经过转换、重组、综合;同时包括部分外部信息
5.设计方法不同:
(1)DB:SDLC——应用需求驱动
(2)DW:CLDS——数据驱动+需求驱动
(二)数据仓库设计方法
1.在数据仓库建设过程中明确需求
(1)数据仓库建造过程中,如果开发者等完全明确需求中之后开始工作,那么这个仓库永远见不起来
(2)开发人员与DSS分析员的反馈循环十分重要
2.数据仓库设计原则
(1)坚持“以数据驱动为中心,数据驱动和需求驱动相结合”的原则
【1】数据驱动是指根据当前数据基础和质量等情况,进行数据源分析
【2】需求驱动是指根据业务方向性需求、业务问题等,确定系统范围和需求框架
(2)坚持“统一规划、分步实施、步步见效、逐步完善的原则”
(3)开发模型:演化模型(快速原型法)
(4)企业数据仓库的建设需要领域展架和数据仓库技术专家之间的相互协作
3.在实际工程中的设计方法
(1)数据仓库的设计和实现是一项工程,是不断建立、发展和完善、循环求精的过程,并不是一个可以简单购买的产品
(2)确定范围与项目定义
【1】主要任务:系统边界的界定;定义并描述项目
【2】步骤: 了解用户方向性需求,发现业务问题,确定范围;
对业务问题进行排序,选择高优先级业务问题,界定系统边界;
定义和识别项目的目的、范围、前景、价值、约束、风险、障碍等,制定质量管理、配置管理等计划,形成
项目定义文档 ;
确定主题域,建立概念模型
(3)应用系统及其数据的调研与分析
【1】目标:为数据仓库系统发现运行稳定、数据可靠的源系统,并考察其数据情况
【2】主要任务:对系统边界内的应用系统进行调研和分析,制定高层应用系统流程图,识别所有主要的应用系统及其主要
内容;
分析主要应用系统的数据,形成应用系统数据分析文档;
(4)数据驱动系统设计方法的基本思路
【1】从源数据出发,分析数据,为新应用(分析处理)所用
【2】根据分析处理的特点重新考察数据间联系,重组数据
【3】数据(结构)具有相对的稳定性,而处理变化很快,强调具有相对的稳定性,二处理变化很快,强调数据模型的作用,支持识别DB与DW中数据的“共同性”
(三)DW设计的三级数据模型
1.DB与DW三级数据模型的区别:
(1)DW的数据模型中扩充了码结构,包含时间元素
(2)DW的数据模型中不包含纯操作型数据;但包含一些导出数据
2.DW设计的三级数据模型
(1)概念模型:“信息世界”中的信息结构,用E-R方法,以主题替代实体
(2)逻辑模型:一般采用关系模型
(3)物理模型:物理存储结构、存储方法 如建立数据分片、合并表、建立包括广义索引在内的各种索引机制
3.Inmon的三级数据模型
(1)高级数据模型:采用E-R方法,E-R图中的每个实体都有预期对应的DIS进一步定义
(2)中级数据模型:称为dis(Data ItemSet)一个dis与E-R中的一个主题域对应
【1】dis的基本结构
基本数据组:应包括主题的码和属性,一个主题只存在一个基本数据组
连接数据组:反映主题之间的联系,往往是一个主题的公共码键;在ER图中表明的关系在DIS中由连接数据组体现
二级数据组:相对稳定的数据组
类型数据组:频繁变动的数据组 稳定性:基本数据组 > 二维数据组 > 类型数据组
(3)低级数据模型:物理模型
4.确定集成范围和稳定性分析
(1)确定集成范围:定义数据模型的边界,确定实体属于或不属于模型范围
【1】集成范围需要在建模之前进行定义
【2】集成范围由系统的建模者、管理人员和最终用户共同确定
(2)稳定性分析:
【1】根据各个数据属性是否经常变化的特性将这些属性分组
【2】按这些属性分组进行表的划分
(四)性能问题
提高系统新能,主要是提高系统的物理I/O性能
在数据仓库的设计中,应尽量减少每次查询处理要求的I/O次数,而使每次I/O又能返回尽量多的记录
提高数据仓库性能的主要途径:
1.粒度划分
(1)粒度:数据的综合程度 细节——轻度综合——高度综合
【1】一张表的数据量很大时,就需要两个级别的粒度
【2】粒度的划分,主要考虑行数。因为按行组织索引,索引依赖于行数,索引大小直接影响I/O次数
【3】提高粒度的方法:当源数据放入数据仓库时,对它进行汇总;
当源数据放入数据仓库时,对它求平均或进行计算;
把最大/最小的一组值放入数据仓库;
只把显然需要的数据放入数据仓库;
用条件逻辑选取记录的一个子集放入数据仓库;
【4】主要目的是:减少索引时所需要的I/O次数,通过增加中间值或者选取一部分数据使查询某一数据时不用遍历全表
2.数据分片
(1)分片:把逻辑上统一的数据分割成较小的、可以独立物理的物理单元(分片)进行存储
(2)为什么需要数据分片
在OLTP环境中,修改操作较为频繁,采用数据分片技术容易导致记录在分片之间的转移,转移代价较高;在OLAP环境中,数据极少更新,利用数据分片拘束可以大大提高性能
【1】减少内存的使用空间:系统仅需要将用户查询所涉及的数据调入内存
【2】Join操作代价较低:将一个大的Join擦欧总分解为若干个小Join操作之和
【3】数据分片后,可以利用并行操作提升查询的效率
【4】增加灵活性。
(3)数据分片的标准
【1】数据量的大小
【2】数据分片处理的对象的特征以及属性之间的相关性
【3】易于实现
【4】与粒度划分策略统一起来
例如:按时间与商品类对销售数据进行综合(粒度划分)
每一粒度再按时间与商品类进行分片,分片后仍便于做高度综合
(4)数据分片策略
对于给定的磁盘个数,进行数据分片的方法
【1】范围分片:利用属性值的范围进行数据分片
优点:数据逻辑比较清楚
缺点:导致数据分配的不平衡
【2】循环轮转法:按照一定顺序,一次存放各个数据。数据分配均匀。
【3】Hashing方法:利用Hash函数。数据分配均匀
3.合并表
当有许多表时,动态连接需要进行大量的I/O,表在物理上合并之后,只需要较少的I/O
(1)数据数组
在合适的情况下,创建数据数组可以提高性能,节约资源
【1】数列中值的数量稳定
【2】数值按顺序访问
【3】创建于修改有规律
4.选择冗余
一项数据属性(主外码不算此类)存在于多个关系模式中,提高了性能,省去了Join操作
5.进一步分离数据
根据访问概率的巨大差异进一步分离数据
6.导出数据
事先在源数据基础上,进行汇总或计算,生成导出数据,导出数据,只计算一次就可以永久使用
7.建立广义索引
(1)位图索引
【1】针对一些特殊的列建立索引
【2】列中的每一个值对应一个向量中的一位
【3】向量的长度对应于记录的条数
【4】不适合列中值的个数太多的情况
(2)连接索引
一个表对另一个表中包含本表中相关列内容进行索引
(3)建立广义(创造性)索引
【1】用于处理最大(小)值问题
【2】当数据装入到DW时,生成“广义索引”内容
【3】广义索引随着数据仓库的发展,数目会增加,但每个索引的规模小,需要在元数据中定义“广义索引”
元数据:关于数据的数据;描述数据结构、内容、码、索引等信息
元数据的重要性:管理人员做分析时,往往先从元数据入手。例如:从元数据中查找广义索引,在进一步搜索
支持数据转换:DB环境的数据 DW环境的数据
元数据描述“转换”;元数据本身具有良好的灵活性,适应变化。
支持对数据仓库中数据的理解,例如:结构、粒度层次、分片策略、索引等
二、数据仓库设计步骤
基本思路:
数据驱动:
从现存数据库系统基础上进行开发:抽取、综合、集成
服务管理决策分析
原型法:
不断反馈、循环、理解需求,使系统增长、完善
步骤是大体上的,不是绝对的顺序
决策人员的参与极其重要
大体步骤:
概念模型设计 逻辑模型设计 物理模型设计
数据仓库生成 数据仓库运行与维护
(一)概念模型设计
1.任务:
(1)确定系统边界
【1】深入了解目前拥有的操作型数据
【2】了解方向性需求
【3】确定信息需求,确定数据覆盖范围
【4】了解源数据的状况 例如“涉及的信息”包含DB中哪些部分
(2)确定主题域
【1】确定系统所包含的主题域
【2】确定主题域的内容:公共码键,代表主题的属性组
【3】主题域之间的联系
(二)逻辑模型设计任务
1.对主题域中所包含的内容进行进一步的细化,每一主题域包含若干个数据组
2.消除纯粹是操作型的数据:如操作人员、校对人员、客户电话号码等
3.对主题域之间的关系进一步细化为表与表之间的关系,对多对多的关系进行有效分析
4.增加时间属性:数据仓库中的数据反映历史变化的过程,它是一定时间的数据快照,因此必须包含时间主键。
(三)逻辑模型具体任务
1.分析主题域
(1)对E-R概念模型中的主题进行选取,选取当前实施的主题域
(2)选取主题域大(足以建立一个可应用系统)小(实施快、方便)合适
2.粒度层次的划分
(1)数据量很大,宜采用多重粒度
(2)对商品销售记录
3.数据分片策略
(1)数据量大小
(2)数据分析处理要求:与分析处理的对象有关
(3)分片标准:尽量自然、易实施
(4)与粒度层次划分相适应
4.引入冗余
(1)提高查询效率,减少Join操作
5.增加导出数据
(1)增加派生数据:对于用户经常需要分析的数据,或者未来提供系统访问的效率,可以适当增加派生数据
6.简要记录
(1)把操作型数据中许多不同的、详细记录组合一起;以聚集形式代表许多条操作型记录
(2)优点:
【1】为最终用户的访问和分析提供了一种紧凑方便的数据组织形式
【2】使数据量降低2-3个数量级
(3)缺点:信息的细节程度降低
7.关系模式定义——实质就是对表的定义,确定各个表和表的公共键
(1)由多个表来实现主题,各表之间安依靠公共码键相联系
(2)表的划分,各个表的关系模式,细节数据用表来组织;综合数据也用表来组织
8.定义记录系统——从现有系统环境中选取与主题域最贴切的数据作为定义记录系统
(1)根据DW中多个表的关系模式,从源数据中选择最合适的数据作为记录系统
(2)所选数据所在表的关系模式最接近DW中多个表的关系模式
(3)记录系统定义,计入DW的元数据中
(4)表述数据模型的最好数据:最实时、最准确、最完备、与输入现存系统环境的数据源最近、具有结构兼容性
9.重建操作型处理环境
(1)原因:操作型环境处于一种“混乱”状态:系统老化、技术老化、组织上的巨变、大幅度改变了需求
(2)数据体系结构设计人员得将变化动因与体系结构的钙奶呢结合起来,实现操作型处理环境的重建
【1】差异列表:该数据模型与现存系统不同之处
【2】影响分析:每一个差异项目是如何表明差异的
【3】资源估计:修复差异项目需要多少费用
【4】给管理层的报告:需要修复什么、估计需要什么资源、工序、损失分析
(三)物理模型设计
1.确定数据的存储结构
选择合适的存储结构时的主要因素:
(1)存取时间
(2)存储空间利用率
(3)维护代价
2.确定索引策略
根据DW中数据不可更新的特点,可以设计多种索引,如广义索引,放在元数据中
3.确定数据的存放位置
(1)根据重要程度、使用频繁和响应时间对数据进行分类,不同类的数据可以存放在不同的存储设备中
(2)考虑冗余存储、数据序列等方法
4.确定存储分配
选择存储分配的参数(设定),进行优化,如:存储开的大小、缓冲区的大小和个数
(四)数据仓库的生成
1.转换和集成的复杂性
(1)迁移时的技术难度:
【1】DBMS的变化,即记录系统是在一个DBMS中,而数据仓库在另一个DBMS中
【2】操作系统的变化,记录系统在一个操作系统中,而数据仓库在另一个操作系统中
【3】记录系统涉及多个DBMS和/或操作系统时,需要将源自不同DBMS和操作系统的数据合并起来
【4】在Web记录中获取基于Web的数据,一旦捕获到数据以后如何将数据放入数据仓库中使用
【5】基本数据格式的变化,如某个环节难过中的数据是用ASCII码存储的,而数据仓库中的数据是用EBCDIC存储
(2)选择数据十分复杂,为判定一个记录是否需要抽取,需要针对其他文件记录进行协调查询
(3)输入关键字需要重建并进行转换
(4)对输入数据进行清理,取值范围检查、交叉记录检验
(5)数据文件进行合并
【1】存在多个数据源时,加载到数据仓库要进行文件合并
【2】不同输入文件使用不同的关键字结构,合并程序必须进行关键字解析
【3】因为多个输入文件的顺序可能不相同甚至互不相容,输入文件需要重新排序
(6)会产生多个输出结果:创建数据仓库时,会产生不同的综合层次的结果
(7)需要提供缺省值:输出值没有对应的输入源
(8)刷新时的效率:区分需要与不需要抽取的操作型数据
(9)经常需要进行数据的汇总:多个操作型输入记录合并成的单个“简要”数据仓库记录
(10)重命名操作的跟踪:数据元素从操作型环境到数据仓库转移过程中,可能被改名字,因而必须生成记录这些变化的文档
(11)进行数据格式转换:输入记录具有不常见的或非标准的格式
(12)大容量输入问题:并行装载、并行读入,必须引入特殊的设计方法
(13)加入时间元素:数据仓库反映对信息的历史需求,当操作型数据载入到数据仓库时应加入时间元素
(14)必须符合企业数据模型:数据源的应用程序往往是很久以前设计的经过多次维护,但没有相关文档,并且未考虑与其他应用的集成,因而建数据仓库时必须考虑企业数据模型所体现的有关规则与限制
2.转换与集成的步骤
(1)考虑数据从操作型环境到DSS环境中的映射问题
(2)以程序说明的形式将接口形式化,用于把数据从操作型环境引入数据仓库中
(3)所有编程的标准活动
(4)执行前面开发的程序,把数据子啊如数据仓库