想了解数据仓库是什么,请跟着看吧,以下是我个人在项目开发中,学习到的内容,提出与大家分享。
很抱歉,我有点懒,并没有把图片上传上来,所以,如果有人想要我总结的这份文档,可以给我发Email:jiajibin0618@126.com,我会给你发一份:P
[@more@]在原有关系型数据库基础上发展形成的,但不同于数据库系统的组织结构形式,它从原有的业务数据库中获得的数据形成当前基本数据层,经过综合后形成轻度综合数据层,轻度综合数据再经过综合后形成高度综合数据层。如下图:
高度综合轻度综合当前基本数据历史元数据轻度综合高度综合高度综合高度综合历史历史历史
综合数据与详细数据是不同“粒度”的数据。粒度是指数据仓库的数据单元中保存数据的细化或综合程度的级别。细化程序越详细,“粒度”级就越低。
1) 数据集市概念
数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手段;而数据集市则是部门级的,一般只能为某个局范围内的管理人员服务,因此也称为部门级数据仓库。它是一种更小、更集中的数据仓库,为公司提供分析商业数据的一条廉价途径。
数据集市有两种,独立的数据集市和从属的数据集市。
2) 数据集市与数据仓库的差别
l 数据仓库面向整个企业范围的主题。而数据集市面向某一特定部门的数据模型建立,特定需求而定。
l 部门的主题与企业主题之间可能存在关联,也可能不存在关联。数据仓库中存储整个企业内非常详细的数据,而数据集市中的数据的详细程度要低一些,包含概要和累加数据要多一些。
l 数据集市的数据组织一般采用星型模型。大型数据仓库的数据组织,如NCR公司采用第三范式。
3) 数据库集市特点
l 规模小;
l 特定的应用;
l 面向部门;
l 由业务部门定义,设计和开发;
l 由业务让管理和维护;
l 快速实现;
l 价格较低廉;
l 投资快速回收;
l 工具集的紧密集成;
l 更详细的、预先存在的数据仓库的摘要子集;
l 可升级到完整的数据库。
4) 数据集市两种结构
l 从属数据集市,结构如下图:
数据源数据仓库从属数据集市数据源 数据源 数据源 数据分析数据分析数据分析
l 独立数据集市,结构如下图:
数据源独立数据集市数据源 数据源 数据源 数据分析数据分析数据分析
5) 关于数据集市的误区
l 单纯用数据量大小来区分数据集市和数据仓库
用大小来判断一个企业,是实施数据仓库还是数据集市的做法是很片面的。尺寸大小不是数据集市的本质特征,真正的问题在于,数据集市(它可能是一个数据仓库的子集)的数据模型一定是满中应用的特定需求的。
l 简单地理解数据集市容易建立
数据集市的确比数据仓库的复杂性程度低一些,因为它只针对某一需要解决的特定的商业问题,但是围绕数据获取的很多复杂问题并没有减少。
数据集市要从多个数据源中提取数据,这个过程很耗时,因为这个过程与建立一个数据仓库一样,需要相同的计划和管理,并且需要把数据模型化。
l 数据集市很容易升级成数据仓库
数据集市针对特殊业务需要,不可能很容易地伸缩,如果没有事先的扩展数据模型,追加数据是非常困难的。例如,一个数据集市可以很快找到最畅销款式的鞋的销售数字,为了增加关于这种鞋的信息,比如,新顾客的百分比,就需要更新数据模型,这种数据集市的扩充是困难的。
数据仓库系统由数据仓库、仓库管理和分析工具3部分组。其结构形式如下图
关系数据源其他数据数据文件数据建模 ETL 元数据系统管理综合数据当前数据历史数据查询工具 OLAP DM C/S 源数据仓库管理数据仓库分析工具
星型模型是由“事实表”(大表)以及多个“维表”(小表)所组成。“事实表”中存放大量关于企业的事实数据(数字实际值)。对象(元组)个数很大,而且非规范化程度很高。
“事实表”有大量的行,而“维表”有相对较少的行,采用星型模型,因为他的结构相对简单,所以存取数据速度快,主要针对各个维做了大量的预处理,如按照“维”进行预先的统计、分类、排序等,都相对很快;它是非规范化的,以增加存储空间代价,提高多维数据的查询速度。而规范化的关系数据库设计是使数据的冗余保持在最少,并减少了当数据改变时系统必须执行的动作。
其缺点:当业务问题发生变化,原来的维不能满足要求时,需要增加新的维。由于事实表的主键由所有的维表组成,这种维的变化带来数据变化将是非常复杂、非常耗时的。星型模型的数据冗余很大。
雪化模型是对星型模型的维表进一步层次化,原来的各“维表”可能被扩展为小的事实表,形成一些局部的“层次”区域。
它的优点是最大限度减少数据存储量,以及把较小的“维表”联合在一起来改善查询性能。
它的缺点:增加了查询的复杂性。牺牲了一部分查询速度。
每个数据仓库都包含了多个星型模型的结构。多个相关的星型模型通过相同的维表连接起来形成网状结构,称为星网模型。在大数星型模型中,各个事实表共享的维表是时间维。
是传统的关系数据库理论,它是目的是准确的描述数据实体及其关系,避免冗余、异常等问题。对于海量数据(如TB级),且需要大量的动态业务分析时,就显示了它的优势。
第一范式:如果关系模式,它的每一分量是不可分的数据项,则此关系模式为第一范式。第二范式:如果关系模式R属于1NF,且每个非主属性完全依赖于码,则R为2NF。
第三范式:如果关系模式R属于2NF,不存在非主属性对码的传递依赖,则称R为3NF。
ETL过程在开发数据仓库时,占去70%的工作量。主要步骤如下:
1) 决定数据仓库中需要的所有的目标数据。
2) 决定所有的数据源,包括内部和外部数据源。
3) 准备从数据源到目标数据的数据映射关系。
4) 建立全面的数据抽取规则。
5) 决定数据转换和清洗规则。
6) 为“综合表”制定计划。
7) 组织数据缓冲区域和检测工具。
8) 为所有的数据装载编写规程。
9) 维表的抽取、转换和装载。
10) 事实表的抽取、转换和装载。
l 确认数据源
工作内空:
1) 列出对事实表的每一个数据项的事实;
2) 列出每一个维度属性;
3) 对于每个目标数据项,找出源数据项;
4) DW中一个数据元素有多个来源,选择最好的来源;
5) 确认一个目标字段的多个“源字段”,建立合并规则;
6) 确认多个目标字段的一个“源字段”,建立分离规则;
7) 确认默认值;
8) 检查“缺失值”的数据源;
数据抽取技术
当前值:源系统中存储的数据都代表了当前的时刻的值,当商业交易时,这些值数据会发生变化的。
周期性的状态:这类数据存储的是每次发生变化时的状态。
数据仓库必须保持更新(实时或延缓),使数据源中变化的历史状态可以在数据仓库中反映出来。
l 转换基本功能:
1) 选择:从源系统中选择整个记录或者部分记录。
2) 分离/合并:对源系统中记录中的数据进行分离操作或者对多源系统中选择的部分数据进行合并操作。
3) 转化:对字段的转化包括对源系统进行标准化和使字段对用户来说是可用和可以理解的。
4) 汇总:数据仓库中需要保存很多汇总数据。这需要将最低粒度数据进行汇总。
5) 清晰化:对单个字段数据进行重新分配和简化,使数据仓库更便利使用。
l 数据转换类型:
1) 格式修正:数据类型和单个字段长度的变化。
2) 字段的解码:对所有晦涩编码进行解码,将它们变成用户可以理解的值。
3) 计算值和导出值。在DW中,有时需要用销售和成本一起计算出利润值。导出字段包括平均每天的收支差额和相关比率。
4) 单个字段的分离:在旧系统中将客户名称、地址存放在大型文本字段中;姓和名存放在一个字段中;城市、地区和邮政编码存放在一个字段中。在DW中却需要把姓名和地址存放在不同的字段中,便利不同要求的分析工作。
5) 信息合并:从多个“源”中取部分信息,重新组成DW的新实体。
6) 特征集合转化:原系统数据采用EBCDIC编码,可DW中用的是ASCII编码,这样要进行代码集合的转化。
7) 度量单位的转化:有时数据源采用的度量单位可以与DW单位不同,需要转换。
8) 日期/时间转化:日期和时间 的表示应该转化成国际标准格式。
9) 汇总:创建DW的汇总数据。用于客观战略性的查询。
10) 关键字重新构建:在源系统中关键字可能包含很多项的内容。在DW中转换成合适合于事实表和维表的普通键值。
l 数据整合和合并
1) 实体识别问题,源系统中有多个子系统,而每个子系统中都有客户信息,DW中要从每个子系统中找到统一的客户的记录组成自己的实体记录。(这个过程常要用户参与,并制定相应的识别算法)。
2) 多数据源相同属性不同值的问题,可能多数据源中,各自描述的某一个相同的数据有差异(如成本),这时取哪一个一般有3种方法:
A. 分别给这些系统不同的优先权,取高优先权的成本数据;
B. 根据最新的刷新日期来选择其中一个“源”系统的成本数据;
C. 根据其他相关字段来选择合适的源系统的成本数据;
l 如何实施转换:
1) 编写程序:
2) 使用转换工具:
创建完装载映像,数据转换就结束了,接下来就是数据装载。它完成将转换好的数据存储到数据仓库的数据库中。
数据装载方式:
基本装载,按照装载目标表,将转化过的数据输入到目标表中去,若目标表中已有数据,装载时先清除这些数据,再装入新数据。目标表可以是事实表或维表。
追加,如果数据已在目标表中存在,追加过程在保存已有数据的基础上增加输入数据。当输入数据记录已经存在,输入记录可能作为副本增加进去,或者丢弃新输入数据。
破坏性合并,如果输入的记录与已存在的记录键是互相匹配的,则输入的数据更新已存的数据,如果输入的记录与已存在的各个记录的键不匹配,则在目标表中添加这个新的输入数据。
建设性合并,如果输入记录主键与已存在记录的键匹配时,保留已有记录,增加输入记录,并标记为旧记录的替代(最好有时间)。
元数据描述了DW的数据和环境,遍及DW的所有方面,是整个DW的核心。它分为四类,分别关于数据源的元数据、关于数据模型的源数据、关于DW映射的元数据和关于DW使用的元数据。
最基本的元数据相当于数据库系统中的数据字典。它还定义了DW有什么,数据内容和位置,指明抽取和转换规则,存储了与DW主题有关的各种商业信息,而整个DW的运行都是基于元数据的,如修改、跟踪、ETL、综合等。
有两类人会用到元数据:最终用户(包括商业分析员)和IT人员(包括开发人员和管理人员)。
最终用户
包括的元数据有:数据内容、汇总数据、商业维度、商业指标、浏览路径、源系统、外部数据、数据转换规则、最后更新日期、数据装载和更新周期、查询模板、报表格式、预定詾查询和报表、OLAP数据等。
最终用户需要的元数据也称为商业元数据,它像一幅公路地图,显示了信息所在地,及如何到达到个地方。最终用户通过商业元数据的引导,能够有效地从DW中获得所需要信息,提高分析效果。
IT人员
包括的元数据有:源数据结构、源平台、数据抽取方法、外部数据、数据转换规则、数据清洗规则、准备区域结构、维度模型、初始装载、增量装载、数据汇总、OLAP系统、Web访问、查询和报表设计。
IT人员需要的元数据也称为技术元数据,为负责开发、管理和维护DW服务。它像一个工作指南。
对现有业务系统的数据源的描述信息,是对不同平台的数据源的物理结构和含义的描述。具体为:
1) 数据源中所有物理数据结构,包括所有的数据项及数据类型。
2) 所有数据项的业务定义。
3) 每个数据项更新的步频率,以及由谁或哪个过程更新的说明;
4) 每个数据项的有效值;
5) 其他系统中具有相同业务含义的数据项的清单。
描述了DW中有什么数据以及数据之间关系,是用户使用管理DW的基础。支持用户从DW中获得数据。为了描述数据仓库中的数据及数据之间关系,元数据要定义以下内容:
1) I/O对象:支持数据仓库I/O操作的各称对象。元数据要描述该I/O对象的定义、类型、状态、存档(刷新)周期。
2) 关系:两个I/O对象之间关联。这种关联有3种:一对一、一对多和多对多。
3) 关系成员:描述每个关系中两个I/O对象的具体角色(在一对多中是父亲还是儿子)、关系度(一对一还是一对多)及约束条件(必须满足还是可选关系)。
4) 关系关键字:描述两个I/O对象是如何建立关联的。每个关系都是通过I/O对象的关键字来建立的,元数据要指明建立每个关系的相应对象的关键字。
描述数据源与DW之间的映射,即用元数据反映DW中的数据项是从哪个物定的数据源抽取的,经过哪些转换、变换和装载过程。这类元数据可以用来生成源代码,以完成数据的转换工作,即完成由操作型数据库转换成面向主题的数据仓库数据库。其工作量占整个DW开发的70%。主要涉及两个问题:
l 抽取工作之间的复杂关系:
1) 获取:从外部或内部数据源获取对决策支持系统用户有用的数据。
2) 过滤:过滤掉不需要的内容(如上次抽取后一直没改变的数据)。
3) 验证:从用户的角度验证数据质量。
4) 融合:把本次抽取的数据与DW中的数据进行融合。
5) 综合:对数据进行综合,生成综合级数据。
6) 装载:把新数据装入到数据仓库中。
7) 存档:把新装入的数据单独存为一个文件,以便减少更新操作的数据量。
l 数据源与目标数据之间的映射:
1) 抽取工作:描述每一个抽取工作,并为每一个抽取工作标识其源系统,明确其刷新周期(两次抽取之间的间隔)。
2) 抽取工作步骤:定义抽取工作中的步骤,包括说明每一步的类型(如过滤、验证等)。
3) 抽取表映射:为每一个抽取步骤建立输入表文件/表与输出文件/表之间的关联。
4) 抽取属性映射:为每一个抽取步骤建立输入表(文件)的属性与输出表(文件)的属性之间的关联。
5) 记录筛选规则:在抽取工作的每一步骤中进行记录的筛选。
描述DW中信息的使用情况。用户最关心的两类元数据:
l 元数据告诉DW中有什么数据,它们从哪里来,即如何按主题查看数据仓库内容。
l 元数据提供已有的可重复利用的查询语言信息。如果某个查询能够满足用户的需求,或者与用户的愿望相似,用户就可以再次使用这些查询而不必从头开始编程。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10028836/viewspace-917387/ ,如需转载,请注明出处,否则将追究法律责任。