摘 要:随着电力信息化的发展,传统数据仓库已经不能满足电力企业决策的需要,而实时数据仓库扩展了传统数据仓库的适用范围,能给电力企业提供关于日常战术操作的技术支持,文章讨论了实时数据仓库的几种实现方案,提出了可行的基于SOA的实时数据仓库体系结构,并针对电力系统实时数据仓库进行了设计。
关键词:SOA,数据仓库,实时,XML,电力系统
0 引言
电力企业多变的市场,使得信息和知识成为电力公司最有价值的资源,而通过采用先进的信息技术整合企业现行的软硬件资源,让人员和设备均处于最佳的运行状态,同时准确了解当前的生产情况和预测未来一段时间的市场需求,已成为提高电力企业竞争力的一个重要途径[1]。同时,电力系统是关系国计民生的重要保障,为保证电网安全、可靠、经济运行,电力系统高层不仅需要掌握电网历史数据,还要获得电力相关的实时信息,以辅助决策。所以数据仓库不仅要充当电网运行的记录器, 更要为实时运行分析和高级应用提供强大的数据基础[2]。然而,由于各地区及部门间信息化建设的不平衡性和独立性,导致了目前电力企业信息化不能利用传统的数据仓库方案来构造有效的数据仓库系统,难以提供企业级的决策分析支持,主要表现在异构性强、信息集成度差、数据冗余和多信息源以及缺乏企业级的决策支持系统等几个方面。
电力企业信息化的上述特征,使得电力企业迫切需要一个能够解决地区间信息化建设不平衡,且实时的数据仓库系统来为企业提供决策,本文提出了基于SOA(面向服务的体系结构)的电力系统实时数据仓库,它不仅可以为企业提供实时的业务数据,而且SOA技术可以基于现有的系统投资来发展,而不需要彻底重新创建系统。通过使用适当的SOA框架并使其可用于整个企业,可以将业务服务构造为现有组件的集合。使用这种新的服务只需要知道它的接口和名称。服务的内部细节以及在组成服务的组件之间传送的数据的复杂性都对外界隐藏了,从而可以通过合并构建在不同的机器上、运行在不同的操作系统中、用不同的编程语言开发的组件来创建服务,降低了在增强或创建新的业务服务的过程中带来的风险,也减少了维护和管理支持服务的基础架构的风险。
1 相关问题
1.1 传统数据仓库技术与实时数据仓库
传统数据仓库由Operational Data Store (ODS)、数据仓库、数据集市和BI工具组成。传统数据仓库中操作型数据从OLTP系统中在晚间的批处理中载入ODS,然后将ODS中的数据经过晚间的批处理通过分段传输和集中处理存入数据仓库。
实时数据仓库提倡操作型数据在事件产生时即由OLTP系统直接载入到数据仓库,保证数据仓库的实时更新。
实时数据仓库和传统数据仓库有以下几点区别[2]:
1) 战略的和战术的不同:传统数据仓库天生就是被动的,用户通过分析历史数据,可以制定长期的、战略性的计划;实时数据仓库注重改善战术性的决策用以支持和更有效的执行战略方案。
2) 实时性和批处理的不同:实时数据仓库提供随需应变的业务,它整合了源数据的最新的数据和历史或上下文的数据,为用户提供最新的视点。传统的数据仓库面向批处理,它用于非在线的分析。
3) 保证的和尽力而为的不同:传统数据仓库以尽力而为的原则执行非在线的操作,它要么保证有效性,要么保证执行性能。而实时数据仓库支持主动的、正在进行的决策,因此既保证有效性,又保证执行性能。
1.2 SOA技术
SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口联系起来,接口是采用中立的方式定义,它独立于实现服务的硬件平台、操作系统和编程语言,这使得构建在各种系统中的服务可以通用的方式进行交互,这种具有中立的接口定义的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。
SOA有以下特性:
1) SOA服务具有平台独立的自我描述XML文档,Web服务描述语言(WSDL)是用于描述服务的标准语言。
2) SOA 服务用消息进行通信,该消息通常使用XML Schema来定义。消费者和提供者或消费者和服务之间的通信多见于不知道提供者的环境中。
3) 在一个企业内部,SOA服务通过一个扮演目录列表(Directory Listing)角色的登记处(Registry)来进行维护;应用程序在登记处(Registry)寻找并调用某项服务;统一描述,定义和集成(UDDI)是服务登记的标准。
4) 每项SOA服务都有一个与之相关的服务品质(QoS,quality of service)。QoS的一些关键元素有安全需求(例如认证和授权),可靠通信,以及谁能调用服务的策略。
SOA凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要,提供选择从而可以通过不同的渠道提供服务,并可以把企业现有的或已有的应用作为服务,从而保护了现有的IT基础建设投资。
2 基于SOA的电力系统实时数据仓库体系结构
图1 时实数据仓库的体系结构
图1描述了电力系统实时数据仓库的体系结构,各部分的内容和功能如下:
1) 源数据库数据源:需要集成的各个应用系统的数据库,包括发电商信息数据库、输变电信息数据库、大用户信息数据库、电力信息数据库、合同信息数据库等。
2) 实时数据采集ETL:ETL(Extraction,Transformation,Loading,即数据抽取、转换、装载的过程)是电力系统实时数据仓库的核心,它按照统一的规则将数据从业务应用数据库中实时地提取、转换并加载到主题数据库中,是实现实时数据仓库建设的重要步骤,下一节我们具体说明ETL的实现方式。
3) 实时数据仓库:包含实时数据分区和静态数据分区两部分,采用表分离法存储实时和静态数据,实时数据的查询和存储,都是基于实时数据分区,静态数据或历史数据的查询基于静态数据分区实现。实时数据分区的数据建模可以与静态数据分区数据采用相同的建模形式,在固定的时间将实时数据分区的数据综合并导入数据仓库的静态数据分区。
4) BI工具:包括对实时数据仓库的查询、实时数据监控、按需分析业务应用、报表和OLAP分析等。
5) XML/SOAP/WSDL/UDDI是SOA技术实现方式,UDDI注册中心包含了所有关于Web服务的描述文件,对这些服务的调用均要首先在注册中心搜索以决定调用的端口和方式,SOAP封装WSDL描述的服务,实现实时数据传输。
3 实时数据采集ETL的设计
在数据仓库的建立和维护过程中ETL都扮演着一个极其重要的角色,它是数据源和数据仓库之间的桥梁与纽带[3],同时实时ETL的实现是实时数据仓库的基础,实时ETL过程数据增量捕获采用触发器方式进行,通过在数据库中建立触发器和辅助表,将更新数据抽取到辅助表中,ETL过程将辅助表中数据导出,转换,加载到目标数据仓库后,删除辅助表中相应数据,完成增量更新。本文中电力系统实时数据仓库的实时ETL流程如图2所示:
图2 数据更新流程
实时ETL基于SOA框架,它分为源数据库端包装器(Wrapper),更新策略控制和元数据管理三个部分,以Web服务方式连接各部分功能,包装器部署在源数据库端,通过ADO.NET连接源数据库。其中包括的元数据抽取模块和增量数据抽取模块分别负责实现元数据抽取和增量数据抽取Web服务。元数据管理提供元数据库读取Web服务,管理元数据库。更新控制策路则是该ETL过程的核心,它部署在数据仓库端,管理实时数据分区,提供ETL过程设计人员可视化的元数据管理工具和增量抽取流程定义工具。抽取规则通过更新策略控制调用Web服务传入XML形式的抽取规则定义来创建触发器和辅助表。当数据库中数据更新被触发器捕获时将更新数据进行包装,并调用相应的Web服务,通过简单对象访问协议(SOAP)将其发送给更新策略控制中心,由更新控制策略负责将SOAP中包含的实时数据更新到数据仓库的实时数据分区。这种结构采用Web服务技术,屏蔽了数据库和操作系统的异构性,易于实现系统的灵活扩展。
另一个问题是如何转化不同系统中异构的数据来更新到实时数据仓库中。目前电力系统应用中涉及的数据类型主要有关系数据库数据、XML数据、EDI数据和LDAP及其它形式的数据。前三类是当前数据存储的主要形式。而基于SOA技术的ETL数据更新主要应用XML组织形式的数据来传输,由于已经有EDI数据的XML组织方式XEDI存在,所以我们面对的是如何转换关系数据库数据和XML模式下的半结构化数据。本文采用关系模式和XML模式数据间转换基于对象关系映射模型(Object-Relational Mode1)理论来实现数据格式转换,XML、对象和表之间的转换关系如表1所示:
数据传输过程中采用XML格式作为中间层数据格式,提供了一个统一的数据访问、传输格式,屏蔽了存储于不同关系数据库中数据格式的差异性,为电力系统中异构数据源的集成提供了便利。本文利用XML消息来传递实时更新数据,Web服务就能够通过XML消息及互联网协议完成源数据库与数据仓库的交互,并采用简单对象访问协议(SOAP)以XML的方式传递消息来完成实时数据的更新。
4 电力系统实时数据仓库的设计
设计建造数据仓库包括两个主要方面——数据仓库与操作型系统的接口的设计和数据仓库本身的设计[4]。本文在第2、3节中介绍了电力系统实时数据仓库与操作型系统(源数据库)的接口的实现方式以及异构数据库之间的数据抽取,转化和装载方式,本节中将介绍数据仓库本身即存储结构的设计。
电力系统数据仓库是个庞大的系统,数据之间的关系错综复杂,而关系型数据库建模对这种复杂的数据关系来说有一定的困难,所以我们采用面向对象的方法来对数据库进行建模,同时考虑到数据仓库系统的开放性,而面向对象的数据库管理系统不支持SOL查询语言,与现有系统较难融合且信息共享困难,所以我们采用既有面向对象特征又有支持SQL语言的关系对象数据库——RODBMS来实施电力系统数据仓库的设计。
下面以某一电力公司为例,在现有的电力合同数据库系统的历史数据和用户资料基础上设计建造电力系统实时数据仓库,包括以下数据源:
发电商信息数据库;
输变电信息数据库;
大用户信息数据库;
电力信息数据库;
电力合同信息数据库等。
上文中提到,电力系统实时数据仓库的数据存储部分采用采用表分离法存储实时和静态数据,包含实时数据分区和静态数据分区两部分,因为实时分区的数据一段时间后要导入静态分区,所以两个数据分区的数据建模可以采用相同的建模形式。同时电力系统实时数据仓库中的实体并非完全平等,有的实体需要大量频繁的载入,而有的实体载入比较稀疏。比如电力系统中用户信息数据库、发电商信息数据库变化较少,电力合同信息数据库变化大且频繁,因此在载入数据时采取以电力合同信息为中心事实表的多维的数据结构模型——星型连接模型,如图3所示:
由于事实表包含了指向维表的外键,可与维表迅速连接,同时事实表还包含了维表中的经常被查询的非外键信息。同时事实表中还包括了维表中访问率较高的主要数据,只要扫描事实表就可进行查询,从而大大提高了查询速度。这种通过数据预连接和建立有选择的数据冗余,大大简化了电力系统实时数据仓库访问和分析过程的设计方法。
5 结束语
作为数据仓库技术的一个新的发展方向,实时数据仓库有效地克服了传统数据仓库实时差、难以为电力企业提供灵活及时的战术性决策等弊端,有着广阔的发展前景,SOA技术的使用构造了松耦合的电力系统实时数据仓库系统,既利用了现有的系统,又便于系统的扩展,且能够提供可靠的数据传输,所以使用基于SOA的实时数据仓库系统能够很好的满足电力企业的要求,也将为其决策提供强大支持,它的应用可以为电力企业的信息系统提供了良好的数据环境,在此基础上运用联机分析处理及数据挖掘等技术,可以为电力企业的战略和战术决策和管理提供极大的信息支持。
参考文献
[1] 刘吉臻,房方,牛玉广.电力企业中的实时数据库技术[J].中国电力.2004.37(2).73-77.
[2] 史晓辉.基于SOA实时数据仓库的研究与应用[D].北京:北京邮电大学,2006.10.
[3] 许力,马瑞新.基于 SOA的实时 ETL的研究与实现[J].计算机系统应用.2007.4.
[4] 朱义军,王乘,张锋. 应用在电力系统中的数据仓库及其设计[J].计算机仿真.2004.7
[5] 张俊,张忠能.实时数据仓库体系架构的研究[J].计算机工程.2004.12.
[6] 姜震,黄霞.实时数据仓库技术的研究[J].计算机系统应用.2007.7.
作者简介
刘双喜(1982-),男,硕士研究生,主要研究领域为MIS、计算机网络、数据仓库。
王翠茹(1953-),女,河北曲阳人,教授,主要研究领域为MIS、数据库、计算机网络;