首页  ·  知识 ·  大数据
一个轻量级数据仓库平台的设计和实现
俞东进 赵明德  21世纪网  实践应用  编辑:dezai  图片来源:网络
数据仓库是面向主题的、集成的、稳定的、随时间变化的用于支持管理人员决策的数据集合,它是一个综合的解决方案。在当前,建立数据仓库以及实施基
   数据仓库是面向主题的、集成的、稳定的、随时间变化的用于支持管理人员决策的数据集合,它是一个综合的解决方案。在当前,建立数据仓库以及实施基于数据仓库的各种应用正在成为不少企业和政府机关进一步提高管理和决策水平方面的迫切要求。

    虽然针对数据仓库系统的建设和使用,业界已经有了不少功能强大、性能优越的商业化产品,但是这些产品往往费用昂贵,而且适用性差。这些弊端在某种程度上阻碍了数据仓库以及相关应用的推广。

    本文涉及课题的目的就是设计一个基于关系型数据库的轻量级数据仓库平台,其主要功能包括数据仓库的元数据管理,业务数据的抽取、转换和装载(Extraction/ Transformation/Loading,ETL),数据清洗,在线联机分析,数据展现等。整个系统基于J2EE(Java 2企业版)标准架构,并支持众多相关的数据仓库技术规范,具有较强的可扩展性和互操作性。

    在系统的设计开发过程中,为了加快进度和提高产品质量,借鉴了多个优秀的开放源码项目,这些开放源码项目主要包括Octopus、Mondrian和JPivot等。同样整个产品系统的部署和运行也可以完全基于开源产品之上,当然,系统的推广也必须遵循相关的开放源码的许可证制度。

    开发完成的系统已经在最终用户中得到成功地运行,实现了面向劳动力市场的数据仓库建设和在线分析,而且性能良好。

1 总体设计

    整个数据仓库平台采用基于J2EE标准架构的多层体系结构。具体地讲,在数据库层,采用关系型数据库作为数据仓库的存储环境,在应用服务器层,采用标准的J2EE应用服务器,在客户端,元数据定义、外围数据管理、数据仓库管理、ETL模块等采用基于Java Swing技术的应用程序客户端,而在多维数据分析和展现部分则采用基于Web技术的浏览器客户端。

    1.1 设计原则

    在该轻量级数据仓库平台的开发过程中,遵循了以下几个设计原则:

    (1)建立数据仓库是进行联机分析和数据挖掘的基础和必然

    虽然实现对业务数据的联机分析和挖掘,并不一定需要首先建立数据仓库。但是,数据仓库存储了经过处理(转换、集成和清洗)后的业务数据,在这些数据基础上实现对数据的展现、分析和挖掘,会更有效和更有质量。

    (2)数据仓库的数据存储采用关系型数据库

    一般的,联机分析系统采用多维联机分析、关系型联机分析和混合型联机分析3种。本系统拟采用关系型数据库作为数据仓库的数据存储环境,因为采用关系型数据库进行关系型联机分析可以降低在数据存储层的开发难度,另外,目前关系型数据库技术已经发展相当成熟,而且性能优越,可以做到基于关系型数据库的联机分析的性能并不比基于多维数据结构的多维联机分析差,甚至有可能更好。

    (3)采用标准协议,实现系统的互操作性

    因为数据仓库作为一项工程,涉及到多个操作的整合和多个系统的集成,所以系统良好的互操作性是整个系统设计的一个关键目标。为提高系统的互操作性和可扩充性,在可以有标准协议的场合中,必须首先考虑使用标准协议。

    (4)借鉴开放源码项目的开发成果

    如果直接从底层开始开发,不但效率较低,而且其成果的质量也难于预测。所以,一个比较有效的开发捷径可以是借鉴和利用目前已经比较成熟的几个开放源码项目,在对它们进行详细分析的基础上,进行改进,以符合系统的需求。当然,同时也必须遵循开放源码项目的相关许可证制度。

    1.2 系统结构

    图1是系统的总体结构。


图1 系统结构


    在整个系统中,以数据仓库的数据存储为核心,以MySQL为参考实现,并可支持其他关系型数据库。元数据定义则以XML格式表达。

    在数据抽取/转换/装载中,数据源支持各类关系型数据库(Oracle、MSSQL、MySQL、Access、DB2等)和非关系型数据(Excel、Csv、XML等)。相应功能包括目标数据库定义、数据迁移规则定义、数据清洗、数据规范化处理等。

    系统同时提供一个联机分析处理(Online Analytic Process,OLAP)引擎。其中数据计算层用于支持多维查询表达式(Multi Dimensional Expressio,MDX)语句的语法分析、语义分析和执行,并通过自动构造MDX语句,实现包括上钻(drill up)、下钻(drill down)、轴交换(sw ap axes)、切片(slice)、切块(dice)等的通用OLAP运算;数据聚合层则利用Cache缓存技术存放已经计算的基于维度的测量数据,如果计算层所需的数据无法从聚合层获取,则聚合层负责直接从数据仓库中取得相应的数据。

    系统提供了一整套支持OLAP操作的JSP标签库,用于在Web浏览器上实现对数据表现的交互式操纵。系统同时支持基于Web服务的XMLA(XML for Analysis)协议,客户端程序可以向OLAP引擎发起通过SOAP(Simple Object Access Protocol)协议包装的XMLA请求,并获得相关的XMLA响应。另外,考虑到JOLAP(Java OLAP)协议正在成为未来J2EE架构的标准组件,系统也同时提供了基于JOLAP协议的客户端支持。

    1.3 元数据管理

    按照传统的定义,元数据是关于数据的数据。在数据仓库系统中,元数据作为描述数据仓库内数据的结构和建立方法的数据,可以很好地帮助数据仓库管理员和数据仓库的开发人员方便地找到他们所关心的数据。元数据按用途的不同分为两类:技术元数据和业务元数据。

    系统中的元数据包括如下几个部分:数据仓库中的关系型数据模型、多维数据模型、ETL转换(清洗)规则元数据以及其它元数据(如主题定义等)。

    系统的多维数据模型是整个平台的关键元数据,它由物理模型和逻辑模型两部分组成。其中,物理模型即为系统的数据源,包括由表格、视图、连接等元素组成的星型模型,其由关系数据库实现。而逻辑模型则是一个多维数据集,它由立方体、测量、维度、层次、级别和成员等各元素组成。一个逻辑模型由多个Cube组成,一个Cube是一组Dimension和Measure的某种组织形式的组合,一个Measure是用户感兴趣的一组数据集,一个Dimension是一组用来限定Measure的展示方式的属性值,每个Dimension对应多个Hierarchy,而每个Hierarchy又对应多个Level,一个Level上有若干个属性值,最后,Cell表示限定的一个测量值。

    ETL转换(清洗)规则元数据则包括对数据转换的源和目的的定义、转换时触发的动作(如数据清洗)定义、数据规范化处理定义等。

    系统对除关系型数据模型之外的元数据定义,都以XML格式文件存放,同时,系统提供对元数据管理的统一的图形操作界面。

数据仓库是面向主题的、集成的、稳定的、随时间变化的用于支持管理人员决策的数据集合,它是一个综合的解决方案。在当前,建立数据仓库以及实施基于数据仓库的各种应用正在成为不少企业和政府机关进一步提高管理和决策水平方面的迫切要求。

    虽然针对数据仓库系统的建设和使用,业界已经有了不少功能强大、性能优越的商业化产品,但是这些产品往往费用昂贵,而且适用性差。这些弊端在某种程度上阻碍了数据仓库以及相关应用的推广。

    本文涉及课题的目的就是设计一个基于关系型数据库的轻量级数据仓库平台,其主要功能包括数据仓库的元数据管理,业务数据的抽取、转换和装载(Extraction/ Transformation/Loading,ETL),数据清洗,在线联机分析,数据展现等。整个系统基于J2EE(Java 2企业版)标准架构,并支持众多相关的数据仓库技术规范,具有较强的可扩展性和互操作性。

    在系统的设计开发过程中,为了加快进度和提高产品质量,借鉴了多个优秀的开放源码项目,这些开放源码项目主要包括Octopus、Mondrian和JPivot等。同样整个产品系统的部署和运行也可以完全基于开源产品之上,当然,系统的推广也必须遵循相关的开放源码的许可证制度。

    开发完成的系统已经在最终用户中得到成功地运行,实现了面向劳动力市场的数据仓库建设和在线分析,而且性能良好。

1 总体设计

    整个数据仓库平台采用基于J2EE标准架构的多层体系结构。具体地讲,在数据库层,采用关系型数据库作为数据仓库的存储环境,在应用服务器层,采用标准的J2EE应用服务器,在客户端,元数据定义、外围数据管理、数据仓库管理、ETL模块等采用基于Java Swing技术的应用程序客户端,而在多维数据分析和展现部分则采用基于Web技术的浏览器客户端。

    1.1 设计原则

    在该轻量级数据仓库平台的开发过程中,遵循了以下几个设计原则:

    (1)建立数据仓库是进行联机分析和数据挖掘的基础和必然

    虽然实现对业务数据的联机分析和挖掘,并不一定需要首先建立数据仓库。但是,数据仓库存储了经过处理(转换、集成和清洗)后的业务数据,在这些数据基础上实现对数据的展现、分析和挖掘,会更有效和更有质量。

    (2)数据仓库的数据存储采用关系型数据库

    一般的,联机分析系统采用多维联机分析、关系型联机分析和混合型联机分析3种。本系统拟采用关系型数据库作为数据仓库的数据存储环境,因为采用关系型数据库进行关系型联机分析可以降低在数据存储层的开发难度,另外,目前关系型数据库技术已经发展相当成熟,而且性能优越,可以做到基于关系型数据库的联机分析的性能并不比基于多维数据结构的多维联机分析差,甚至有可能更好。

    (3)采用标准协议,实现系统的互操作性

    因为数据仓库作为一项工程,涉及到多个操作的整合和多个系统的集成,所以系统良好的互操作性是整个系统设计的一个关键目标。为提高系统的互操作性和可扩充性,在可以有标准协议的场合中,必须首先考虑使用标准协议。

    (4)借鉴开放源码项目的开发成果

    如果直接从底层开始开发,不但效率较低,而且其成果的质量也难于预测。所以,一个比较有效的开发捷径可以是借鉴和利用目前已经比较成熟的几个开放源码项目,在对它们进行详细分析的基础上,进行改进,以符合系统的需求。当然,同时也必须遵循开放源码项目的相关许可证制度。

    1.2 系统结构

    图1是系统的总体结构。
图1是系统的总体结构。


图1 系统结构


    在整个系统中,以数据仓库的数据存储为核心,以MySQL为参考实现,并可支持其他关系型数据库。元数据定义则以XML格式表达。

    在数据抽取/转换/装载中,数据源支持各类关系型数据库(Oracle、MSSQL、MySQL、Access、DB2等)和非关系型数据(Excel、Csv、XML等)。相应功能包括目标数据库定义、数据迁移规则定义、数据清洗、数据规范化处理等。

    系统同时提供一个联机分析处理(Online Analytic Process,OLAP)引擎。其中数据计算层用于支持多维查询表达式(Multi Dimensional Expressio,MDX)语句的语法分析、语义分析和执行,并通过自动构造MDX语句,实现包括上钻(drill up)、下钻(drill down)、轴交换(sw ap axes)、切片(slice)、切块(dice)等的通用OLAP运算;数据聚合层则利用Cache缓存技术存放已经计算的基于维度的测量数据,如果计算层所需的数据无法从聚合层获取,则聚合层负责直接从数据仓库中取得相应的数据。

    系统提供了一整套支持OLAP操作的JSP标签库,用于在Web浏览器上实现对数据表现的交互式操纵。系统同时支持基于Web服务的XMLA(XML for Analysis)协议,客户端程序可以向OLAP引擎发起通过SOAP(Simple Object Access Protocol)协议包装的XMLA请求,并获得相关的XMLA响应。另外,考虑到JOLAP(Java OLAP)协议正在成为未来J2EE架构的标准组件,系统也同时提供了基于JOLAP协议的客户端支持。

    1.3 元数据管理

    按照传统的定义,元数据是关于数据的数据。在数据仓库系统中,元数据作为描述数据仓库内数据的结构和建立方法的数据,可以很好地帮助数据仓库管理员和数据仓库的开发人员方便地找到他们所关心的数据。元数据按用途的不同分为两类:技术元数据和业务元数据。

    系统中的元数据包括如下几个部分:数据仓库中的关系型数据模型、多维数据模型、ETL转换(清洗)规则元数据以及其它元数据(如主题定义等)。

    系统的多维数据模型是整个平台的关键元数据,它由物理模型和逻辑模型两部分组成。其中,物理模型即为系统的数据源,包括由表格、视图、连接等元素组成的星型模型,其由关系数据库实现。而逻辑模型则是一个多维数据集,它由立方体、测量、维度、层次、级别和成员等各元素组成。一个逻辑模型由多个Cube组成,一个Cube是一组Dimension和Measure的某种组织形式的组合,一个Measure是用户感兴趣的一组数据集,一个Dimension是一组用来限定Measure的展示方式的属性值,每个Dimension对应多个Hierarchy,而每个Hierarchy又对应多个Level,一个Level上有若干个属性值,最后,Cell表示限定的一个测量值。

    ETL转换(清洗)规则元数据则包括对数据转换的源和目的的定义、转换时触发的动作(如数据清洗)定义、数据规范化处理定义等。

    系统对除关系型数据模型之外的元数据定义,都以XML格式文件存放,同时,系统提供对元数据管理的统一的图形操作界面。
2 相关开源项目介绍

    在本系统的开发中,为了加快系统的开发速度以及提高系统的质量,直接利用了几个比较优秀的开源项目的开发成果,并在其基础上进行分析改造。下面简单介绍其中相关的Mondrian、JPivot和Octopus 3个项目的大致情况。

    (1)Mondrian。Mondrian是一个用Java语言编写的支持联机分析处理的数据引擎,目前的版术是1.0.1,处于a状态(系统基术开发完成,但尚不稳定,有待进一步完善),可以直接从http://sourccforgc.nct/projccts/mondrian/下载源码和相关文档。使用Mondrian必须遵循CPL(Common Public Liccnsc)许可证协议。

    (2) JPivot。JPivot是一个呈现OLAP表格的JSP自定义标签库,目前的版术是1.0.2,处于稳定状态(系统开发完成),可以直接从http://sourccforgc.nctlprojccts/jpivot/下载源码和相关文档。使用JPivot必须遵循CPL许可证协议。

    (3) Octopus。Octopus是一个简易的数据抽取/转换/装载工具,目前的版术是2.6.2,处于产品化状态,可以直接从http://octopus.objcctw cb.org/下载源码和相关文档。使用Octopu、必须遵循LGPL(Lcsscr GNU Gcncral Public Liccnsc)许可证协议。

3 实 施

    该轻量级数据仓库平台的一个具体实施实例是通过该平台建立一个面向劳动力市场的数据仓库系统,它提供对于劳动力市场数据的采集、清洗、交换、发现和表现的开放式应用平台。数据仓库覆盖的主题主要包括:劳动力资源信息、劳动力求职人员信息、企业基本信息、职业介绍信息和职业培训信息。用户通过该系统可以很好地实现面向劳动力市场的数据仓库建设和在线分析。

    图2是运用该轻量级数据仓库平台实现某市“劳动力市场职业介绍信息”主题的一个在线分析示例。其中,展现了单位类型、发布时间、文化程度3个维度和单位需求人次数、职业介绍成功人次数2个测量。


图2 某市“劳动力市场职业介绍信息”主题数据展现


4 展 望

    虽然与同类系统比较,该轻量级数据仓库平台有其独特的优势,但展望系统未来的发展,还有很多方面值得进一步深入,这些内容主要包括:

(1)对系统性能方面的考虑不多,虽然在实际使用时,面对几百个GB的数据量,系统表现出较令人满意的响应速度,但是考虑到一般的数据仓库的规模会在TB级甚至更多数据量,能不能同样表现出令人满意的性能尚不得而知;

(2)在对操作型数据进行抽取、转换和装载时,没有对数据版本进行合适的管理;

(3)对数据仓库的数据利用,尚局限在联机分析上,没有开展对数据仓库数据进行数据挖掘、从而支持决策分析的研究和设计。

本文作者:俞东进 赵明德 来源:21世纪网
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的