数据仓库(三):数仓开发

  • 数据仓库开发过程
    • 建立或获得企业的数据模型;
    • 定义记录系统;
    • 设计数据仓库并按主题领域进行组织;
    • 设计和建立操作型环境中的记录系统和数据仓库之间的接口,这些接口能保证数据仓库的载入工作能有序的进行;
    • 开始载入第一个主题领域,进入载入和反馈过程,数据仓库中的数据在此过程中也在不断地改变。
  • 数据仓库开发成功的关键

    关键:是数据体系结构设计者和DSS分析者之间的反馈循环。有几点观察结果对数据仓库环境的成功建立是至关重要的问题:

  • DSS分析人员一定要严格遵循“给我我所要的东西,然后我能告诉你我真正需要的东西”的工作模式;
  • 反馈循环的周期越短,越有可能成功;
  • 需要调整的数据量越大,反馈循环所需要的周期就越长
  • 需要做数据的稳定性分析
  • 数据模型转变到数据仓库

    • 如果原先没有时间元素的话,时间元素必须加入到键码结构中
    • 必须清除所有的纯操作型数据
    • 需要将参照完整性关系转换成“人工关系”
    • 将经常需要用到的到处数据假如到设计中
    • 对数据的结构进行调整
  • 增加数据阵列
  • 增加数据冗余
  • 在合适的情况下进一步分离数据
  • 在合适的时候合并数据表
  • 数据模型的内容

  • 标识主要主题领域。
  • 各个主要主题之间的各种关系。
  • 清晰地定义模型的边界。
  • 把原始数据和导出数据分离。
  • 每个主题领域需要标识
    • 键码
    • 属性
    • 属性分组之间的关系
    • 多重出现的数据
    • 数据的类型

许多部件构成了数据仓库系统。这个系统从现有的操作系统开始,一部分为支持数据仓库而设的后台处理,以访问和运用数据仓库内数据的用户工具而结束。在中间是个分散过程,它使数据以一种局部而不是集中的方式来支持用户。至于其他系统,则是覆盖这些处理过程技术的基础,如安全系统,它不仅控制着在终端数据仓库的输入过程,还控制着用户在数据仓库的前台访问能力。数据仓库处理的部件如图:

 后台处理

      数据仓库系统的后台处理利用了操作系统的数据存储器,以进入数据仓库内占有活动区域:这个处理包括以下几个部分:

  • 数据处理     为数据仓库收集数据的过程是从当前操作系统开始的。该数据仓库的后台处理需要被分成可管理的几个处理模块。操作系统生成必须处理和输入到数据仓库的事务。在数据仓库系统的结构内必须有一种方法来截取和收集那些在操作系统内已改变的数据,主要用于数据仓库的输入处理。
  • 数据采集     在收集到操作数据存储器内的变化后,数据仓库的后台处理必须采集所有同以前收集的事务相关的数据。数据采集过程通常仅仅获取驱动数据采集过程的关键信息。

            数据制备成事务库并用它来更新和供给数据仓库系统。这个过程在整个数据仓库系统中是最复杂的,因为用户正处理多种遗留数据源。这些数据源中的一些较为容易使用,而大部分则不是这样。

中间处理

      数据仓库系统的中间处理利用了一个登台区域来完成在数据仓库中对用户游泳的数据。登台区域有时被叫正式地指定为操作数据存储器。

  • 数据清理     在收集到所有从操作系统存储器得来的相关信息后,数据必须在放入数据仓库之前进行清理,以获得一个适当的统一的格式和定义。
  • 数据的放置和分发    当完成数据清理后,数据就必须放置到数据仓库中。
  • 标准报表的编译和索引 在数据已放入数据仓库数据存储器之后,对包含于数据仓库系统内的标准报表必须进行编译和索引。在这个过程结束后,报表很像数据仓库内的原始数据,将让用户在线有用,不必用纸张的形式发送。

      中间处理更新了数据仓库中登台区域的数据,并使之成为可供最终客户,也就是数据仓库系统的用户使用的信息库。

前台处理

      前台处理过程涉及到允许用户对数据仓库所包含的信息进行正确的访问,及提供用户工具集所需的目录和中间数据信息。大多数数据仓库项目的目标应当是驱使这一过程进入强大的用户领域,并脱离信息系统空间。然而,需要构造几个关键的应用程序以用于经验不足的数据仓库用户。该过程的任务包括用新的信息内容来更新访问数据仓库的应用程序,通过适当的用户工具组内的视图或分类定义来提高访问能力。

 

数据仓库的技术体系结构

      虽然普遍认为数据仓库系统能够改善最终用户查询、报表生成和DSS能力,而且能帮助组织投入公司数据以获取市场竞争优势,但在数据仓库系统构成方面看法却不尽相同。数据仓库的技术体系结构如下图:

  • 设计模块:用于设计数据仓库数据库
  • 数据获取模块:用于从源文件和源数据库中获取数据,并进行清洁、传输,将它加到数据仓库数据库中
  • 管理模块:用于管理数据仓库的运行
  • 信息目录模块:用于为管理者和企业用户提供有关存储在数据仓库数据库中的数据的内容和含义信息
  • 数据访问模块:用于为企业的最终用户提供访问和分析数据仓库数据的工具
  • 中间件模块:用于最终用户工具提供访问数据仓库数据库的方法
  • 数据传递模块:用于向其他仓库和外部系统中分配数据仓库数据

 

数据仓库的三个重要组成部分,专家们一般把整个数据仓库的建设按照其不同性质,把它分为三个截然不同的部分,分别是:源数据、数据准备、以及数据呈现。现在讲的最多的OLAP分析和决策支持等,都是属于数据呈现的部分,下面我们来讲一讲数据准备阶段的问题。

数据的有效性检查

      为避免数据冗余,要认识到数据装入数据仓库之前,应该对数据进行有效性检查,这是很重要的。如果没有进行刃具的有效性检查,就有可能破坏依赖于数据仓库的商务分析的完整性,帮助检查数据的有效性的最好方法是源系统专家。源系统专家包括具有技术专业知识和非技术知识的人士。

      检查数据仓库中数据的有效性是一个非常耗时但必不可少的过程。建议该过程应高度自动化。SQL Server7中有许多内置功能,可自动进行数据有效性检查。

清除和转换数据

      有效性检查是决定是否符合给定标准的过程。标准是依赖于安装的,为某个站点开发和执行的标准可能在其他地方毫无意义。如果数据不在给定的界限之内,它就成为我们称作scrubbing(清除)过程的对象。清除数据包括对那些在给定范围之外的数据采取纠正措施。

数据仓库中的数据来自于多种业务数据源,这些数据源可能是在不同的硬件平台上,使用不同的操作系统,因而数据以不同的格式存在不同的数据库中。如何向数据仓库中加载这些数量大、种类多的数据,已成为建立数据仓库所面临的一个关键问题。

在数据迁移的过程中,通常需要将操作数据转换成另一种格式以更加适用于数据仓库设计。在太多数情况下,转换是将数据汇总,以使它更有意义。

    在转换结构中,确保能找出一种最好的方法保证数据从传统的数据存储器到数据仓库的同步。同步结构应当把重点放在转换语言的标准化、数据移动平台、通信策略和支持策略方面。数据仓库与操作数据存储器之间的同步过程能够采取不同的结构。

    除寻找自动化转换操作的工具之外,还应估计数据转换的复杂性。大多数传统的数据存储方法缺乏标准,常常有些不规则的东西让开发员摸不着头脑。工具正在不断改进以有助于转换过程的自动化,包括复杂问题,如掩匿的数据、传统标准的缺乏及不统一的关键数据。

提取处理是数据仓库成功的关键。在提取过程中,数据会被格式化,并分发给需要从操作环境中共享数据的资源。元数据存储的工作是定义和解释数据资源和数据标准。因此,在操作数据上执行的转换过程应该用元数据存储中定义的标准数据格式放置数据。

我们可以定义数据变换的几个基本类型,每一类都有自己的特点和表现形式:

  • 简单变换

       单变换是所有数据变换的基本构成单元。这一类中包括的数据处理一次只针对一个字段,而不是考虑相关字段的值。

  • 清洁和刷洗

    目的是为了保证前后一致地格式化和使用某一字段或相关的字段群。

  • 集成

    集成是将业务数据从一个或几个来源中取出,并逐字段地将数据影射到数据仓库的新数据结构上。

  • 聚集和概括

聚集和概括是把业务环境中找到的零星数据压缩成数据仓库环境中的较少数据块,有时进行聚集中的细节数据是为了避免仓库存入业务环境中的那样具体的数据,有时则是为了建立包括仓库的聚集副本或概括副本的数据商场。

简单变换

      顾名思义,它是数据变换中最简单的形式,这些变换一次改变一个数据属性而不考虑该属性的背景或与它相关的其他信息。

  • 数据类型转换

      最常见的简单变换是转换一个数据元的类型。当现有应用程序存储某个类型的数据只在该应用程序的背景下有意义,在企业水平上却没有意义时,就常常要求进行这类变换。

      这类转换可以通过编码程序中的简单程序逻辑完成,或者运用数据仓库数据变换工具完成。

  • 日期/时间格式的转换
  • 因为大多数业务环境都有许多不同的日期和时间类型,所以几乎每个数据仓库的实现都必须将日期和时间变换成标准的仓库格式。这可以通过手工程序编码来完成。它能把一个日期或时间字段拆成几个子部分,然后再将它们拼成想要的字段。然而市场上的大多数数据变换工具只提供了日期和时间格式之间迅速进行简单转换的设施,而手工编码上下的功夫要少得多。
  • 字段解码

      简单地说,数据一般不应该以编码的格式放在数据仓库中。我们在业务数据库中建立代码是为了节省数据库存储空间。虽然人不理解这些代码,但这并不是大问题,因为我们与那些代码的交互作用是由应用程序管理的。这些程序在必要的时候会成为我们破解那些值的代码。

      在数据仓库环境中,情况就大不一样了。因为拥护可能来自公司的任何部门,所以仓库的所有用户不可能都有足够的背景知识和培训,使他们能够理解在业务数据库中使用的编码值。

      因此,业务系统和外部数据中的编码值在存入数据仓库之前,应该转换为经过解码的、易于理解的相应值。一方面,我们想把编码值充分扩展,使它们为最大多数的用户理解;另一方面,把一个值扩展得太多要占用额外的存储空间,而且把该值当作查询中的检索标准也很困难。由于顾客情况代码不被普遍理解,所以应该扩展为一个有意义的、易于理解的值,以便仓库用户能够认出它。用到的准则是:必须长到足以被大多数仓库用户理解。

      从技术角度看,字段解码是个非常易于实现的过程,它可以很容易地结合到变换程序中去,也可以在数据转换工具中轻松地完成,然而,确定应该进行多少解码工作是很难的。但一个好的解决方法往往提供了足够的解码,这样即使普遍用户也可以理解字段值的含义,并且可以用全面理解数据元值及其用法的元数据加深他的理解。

清洁和刷洗

      清洁和刷洗是两个可互换的术语,指的是比简单变换更复杂的一种数据变换。在这种变换中,要检查的是字段或字段组的实际内容而不仅是存储格式。一种清洁是检查数据字段中的有效值。这可以通过范围检验、枚举清单和相关检验来完成。

  • 有效值

      范围检验是数据刷洗的最简单形式,它是指检验一个字段中的数据以保证它落在预期范围之内,通常是数字范围或日期范围。

      枚举清单也相对容易实现。这种方法是对照数据字段可接受值的清单检验该字段的值。

      相关检验稍微复杂一些,因为它要求将一个字段中的值与另一个字段中的值进行对比。

      当然,数据清洁规则往往是这些不同方法的结合。

  • 复杂的重新格式化

      数据刷洗的另一主要类型是重新格式化某些类型的数据,这种方法适用于可以用许多不同方式存储在不同数据来源中的信息,必须在数据仓库中把这类信息转换成一种统一的表示方式。最需要格式化的信息之一是地址信息,由于没有一种获取地址的标准方式,所以同一个地址可以用许多不同方式表达出来。这就要求将地址解析成几个组成部分,然后将这些组成部分进行转换并重新排列成一个同意的格式。

集成

      要把从全然不同的数据源中得到的业务数据结合在一起,真正的困难在于将它们集成为一个紧密结合的数据模型。这是因为数据必须从多个数据源中提取出来,并结合成为一个新的实体。这些数据来源往往遵守的不是同一套业务规则,在生成新数据时,必须考虑到这一差异。

  • 字段水平的简单影射

      字段水平的简单映射在必须执行的数据变换总量中站去了大部分。这种映射的定义是指数据中的一个字段被转移到目标数据字段中的过程。在这过程中,这个字段可以利用前面讨论过的任何一种简单变换进行变换,它可以被刷洗或重新格式化。

  • 复杂集成

      在一般的数据仓库中,数据转移和集成中的10%~20%要比从源字段到目标字段的简单移动复杂一些。为了将源数据变换为目标数据,这些复杂集成必须做更多的分析。

  • 通用标识符问题

    通用标识符问题是许多公司在建立数据仓库时所遇到的最困难的集成问题之一。当同一业务实体存在于多个系统源,并且没有明确的办法确认这些实体其实是同一实体的时候,往往会发生这个问题。

      这个问题往往很难用自动化方法解决,通常要求复杂的算法配对可能的匹配。有时在仓库中存入可能的匹配是可以接受的,但有时这些匹配在存入数据仓库之前必须先由人来检验。很多公司实行一种两阶段战略来处理该问题。第一阶段是隔离,在这一阶段中,我们试图保证实体的每次出现都指派一个唯一标识符;第二阶段是调和,我们开始确认哪些实体其实是相同的,并且将该实体的各次出现合并在一起。

  • 目标元素的多个来源

当同一个目标数据元有多个来源时,会出现另一个复杂的数据集成问题,即很难保证该元素的各个来源总能保持一致。实际上,这样的数据元存在矛盾值比不同来源中的值相同更为普遍。解决冲突的简单办法是指定某一系统在冲突中占据主导地位。

  • 数据丢失问题

数值没有值的问题与一个数据元有多个冲突值的问题一样困难。有时为一个丢失的元素把空白或空值赋进仓库中也是可以接受的,而有时数据元必须有值,对该表格所做的查询才会有效。必须为该数据赋一些估计值。如果是业务系统,数据库中有这种明知不准确的值是没有意义的,但对数据仓库来说,有估计值比根本没有值可能要好得多。因此,对于仓库中的每种数据类型,设计人员必须在存入估计数据的内在风险和数据丢失所造成的误解的风险之间进行权衡。

用于这一目的最普遍技术是生成使曲线平滑的数据。然而,很多企业都有非常复杂的数据估计方法。这些方法能够调节许多变量,为丢失的数据生成一个非常接近实际的值。

  • 衍生数据/计算数据

数据变换的最常见形式之一就是计算和生成衍生数据元或计算数据元。它包括平均值、总和或统计计算,还包括复杂的业务计算。衍生数据字段通常是冗余的,因为计算中涉及的数据也存储在仓库中,然而,它能大大简化查询,保证存入仓库中的这些衍生值的正确性和一致性,这样,在查询中可以选用它们,而不必在用户需要时都计算一次。在这方面,数据变换工具是很有用的,因为这些工具能迅速而轻松地进行各种计算,无需担心编程员是否正确地编写了计算逻辑。

聚集和概括

      大多数数据仓库都要用到数据的某种聚集和概括。这通常有助于将某一实体的实例数目减少到易于驾驭的水平,也有助于预先计算出广泛应用的概括数字,以使每个查询不必计算它们。概括是指按照一个或几个业务维将相近的数值加在一起。聚集指将不同业务元素加在一起或为一个公共总数。在数据仓库中它们是以相同的方式进行的。

      数据仓库中存放的最具体的数据不与业务系统中存放的细节数据一样聚集。这时,就有必要在变换业务数据的过程中加入一些数据聚集功能。这可以减少存储在数据仓库中的行数。

      聚集还可以去除数据仓库中的过时细节。在许多情况下,数据在一定时期内要以很具体的水平存放着,一旦数据到了某一时限,对所有这些细节的需求就大大减弱了。此时,这些非常具体的数据应该传送到离线存储器或近线存储器中,而数据的概括形式则可以存放在数据仓库中。

      目前可以得到的数据刷洗工具中,许多都已内置了概括功能,尤其是在时间维上进行聚集的功能。当然,不管如何做到这一点,重要的是用户能够轻松地访问元数据,了解生成总和数据所用的标准。

移动数据

将数据移出操作系统一般包括:在数据最终复制到数据仓库之前,将它们拷贝到一个中间位置。理想状况下,拷贝数据的过程应该在操作系统不忙时进行。确保了解自己的商务及其支持系统。如果还未完成大量的更新,就不应该移动数据。如果数据仓库中的数据来自多个相互关联的操作系统,就应该保证在这些系统同步工作时移动数据。

广义的数据准备,覆盖面很广泛,包含了从数据源抽取数据,一直到最终数据呈现在用户面前之间的所有工作,这其中的最主要的工作就是数据的抽取、转换、清洗、装载等一系列工作。在最初的数据仓库实现之前所有的这些工作都是用程序手工实现的。这样就造成了一个非常严重的问题,就是数据仓库的持续发展问题,因为利用程序实现每一个数据抽取过程,导致所有的数据逻辑都隐藏在程序内部,当数据仓库进一步发展时,这些程序的管理和修改,将成为阻碍数据仓库发展的最大的障碍。

 

经过一段时间的发展,人们最终认识到ETL工具的重要性,于是相关的ETL工具也纷纷出台,其中比较著名的是IBM的Visual warehouse,Ardent公司的data stage等等。如何判断一个ETL工具的优略呢,一般而言,主要有一下几个因素:

 

1

OPEN datasource

The tools must extract data from most kind of data source  use

Native database Driver

就是说这种工具必须从很多不同的数据源抽取数据,并尽可能地使用数据源本身提供的驱动程序来提高使用效率

2

OPEN target Database

The Tools must can Use most database like (DB2,ORACLE.ETC.) as Target database.

要支持不同的数据库作为数据仓库的载体

3

Schedule job

可以定时进行数据的更新的整理

4

High Performance

较高的工作效率

5

Metadata management

完善的元数据管理,可以对整个ETL过程中产生的元数据进行管理

6

Parallel support

支持并行数据抽取

7

Visualize UI

可视化的工作界面

8

Custom define program

可以支持用户自定义的程序做一些普通SQL语句无法完成的工作

9

Security

Support multi user and user group

支持多用户和多用户组的工作方式

10

Increment data extract support

可以实现数据的增量抽取

11

Use subject to manage ETL Job

用户可以对所有进程按照主题进行管理

12

Enable Complex cleansing and transform

Automatic generate SQL, Custom SQL support

支持复杂的数据清洗工作,自动生成SQL语句,用户自定义SQL

13

Support MDD data load

可以支持多维数据库的数据加载

14

Support TB data extract and load

可以支持TB级别的数据加载

15

Data model export and import

现有设置可以进行Export和import

  • 32
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trisyp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值