分级存储数据多维分析技术的研究与应用
2015-11-25项玉良任开银张明明黄高攀
项玉良,任开银,张明明,黄高攀
(1.南京南瑞集团公司,江苏 南京 210003;2.江苏省电力公司,江苏 南京 210003)
0 引言
信息技术随着需求的变化在不断地向前发展,从最初单机版的应用软件发展到网络版的管理系统(MIS),然后又出现了ERP(企业资源计划)、CRM(客户关系管理)等。商业智能则是最近几年信息技术领域研究和应用比较多的一个概念,多维数据分析是商业智能应用中的一项主要技术,其往往通过商业智能前端展现工具进行体现,后端则一般是基于数据仓库和OLAP 服务器来实现。针对目前大量的数据信息都是存储在关系数据库中,需要找到一种解决办法,使关系数据库中数据能够以多维形式进行展现,并且能将这种展现应用于日常的业务系统中。IBM公司开发的Cognos 系统以及SAP 公司开发的BI 系统都是针对大量数据的智能分析系统,这2 种系统都是采用读取配置的数据源进行建模和数据分析,所分析的数据仅局限在本地数据源中,不能分析分布式系统的数据。
通过对分布式存储的数据结构的分析,采用统一建模的方式,配置分布式数据计算代理服务抽取所需数据到主站,最后进行统一的数据分析展示。在某OMS 项目的应用中,集成该多维数据分析工具,实现分布式数据的多维分析和展现,增强了数据统计的真实性、灵活性和直观性。
本文解决的主要问题有:
1)大多数多维分析方法及工具不支持分析展现分级存储的数据,需要先把分级存储数据抽取到主站的数据中心后才能进行全局性多维分析。这样就导致多维分析的即时性较差,影响对数据价值的利用。
2)多数多维分析产品在使用上主要面对具有专业知识的技术人员,对用户的要求比较高。当业务发生变化时,用户不能自助式做模型调整,影响系统使用的友好性。
1 分布式多维方法的基本原理
本文提出用于快速实现分级存储数据的多维分析方法,其流程如图1 所示。
图1 多维分析流程
分级存储数据的多维分析系统由统一存储模型管理、多维分析模型管理、多维分析分布式计算引擎3 个组件组成,相互协作完成多维分析及展示。
1.1 分级数据多维分析方法组成模型
分级存储数据的多维分析方法主要组成模型如下:
1)统一存储模型。
负责把多级存储数据映射成统一存储模型,屏蔽多级存储的位置差异,实现多级存储数据的统一数据模型描述。
2)多维分析模型。
负责把统一数据模型按照业务规则映射成多维分析模型,多维分析模型是多维分析计算的基础,多维分析模型的好坏直接影响多维分析功能的复杂度和效率,本文的多维分析模型结合国内用户的使用习惯,比常用的多维分析工具功能更加强大,能够实现不规则的多维分析业务场景。
3)多维分析计算引擎。
负责解析多维分析模型,生成多维分析计算指令,并把指令智能路由到计算节点,执行预聚合操作。操作结果返回计算引擎,由计算引擎执行二次聚合计算,生成多维分析计算结果集。
1.2 分级数据多维分析方法步骤
多级存储数据的多维分析方法包括以下步骤:
1)统一数据建模。结合智能路由算法,按照一定规则将多级存储数据构建成统一数据模型。
2)构建多维分析模型。在多维分析模型可视化构建界面,按照多维分析业务场景,将统一数据模型中的属性映射成多维分析模型中的指标或维度信息。
3)多维分析计算。计算引擎把多维分析模型按照路由信息自动生成下级计算节点对应的聚合计算语句,并由计算代理执行聚合操作,生成预聚合结果并上传到主站,然后执行二次聚合计算,生成多维计算结果集。
4)多维分析展现。计算引擎根据多维分析模型,结合统一存储模型,形成维度成员查询算法,查询出维度成员,生成展现报表的单元格对象,并把多维分析结果填充到单元格对象,展现多维分析结果。
2 分布式多维数据分析的实现及应用
2.1 系统架构
基于分布式的多维数据分析系统,主要有浏览器、服务引擎和分布式计算代理等,基于此设计的系统架构如图2 所示。
图2 分布式多维数据分析架构图
整个系统核心的部分是报表引擎和分布式计算代理。报表引擎主要用于解析报表展示模型,执行统计运算,生成展示结果,由报表展示模块实现展示。分布式计算代理则是对分布式的数据进行处理并发送至主站。
1)客户端。
浏览器主要功能有报表发布、应用管理、统一存储及分析模型配置和报表展现。
2)服务引擎。
服务引擎由数据服务、模型解析、模型缓存、任务调度、智能路由、维度管理和聚合计算组成。其中维度管理主要分2 种私有维度和公共维度,维度值数据由分布式方式汇总得到。聚合计算实现了对聚集表的管理,主要针对OLAP 缓存的管理,缓存了各个计算代理的查询结果,即单元格数据集合,如果计算模块所需的数据不在缓存中,则从相应的代理节点进行查询获取数据并缓存。
负责接受客户端分布式数据请求、模型和维度缓存管理、历史快照管理以及分布式数据的聚合和汇总计算。
3)分布式计算代理。
分布式计算代理由路由监听、请求解析、数据获取、聚合计算组件和计算单元格对象组成,负责接收主站发送的计算请求,将系统业务数据加载到内存中进行预计算,包括聚合计算、编码转换、日期聚合转换,得出中间结果集,异步发送给主站系统的消息队列。
在计算代理中采用数据同步与缓存机制,缓存存放的数据一般是对数据库数据处理后的拷贝,可通过读写缓存中的数据,提升读取性能。计算代理每次回答主站的计算请求时,要在底层关系数据库中执行很多SQL 语句来构建多维查询结果,因此应该尽可能利用已查询到的结果集,节省访问物理数据库的时间。由于用户查询遵循一定规则,下一次查询经常会用到最近的查询结果,因此将缓存机制引入计算代理中是提高性能的有效方法。
2.2 分布式多维分析系统的数据模型
图3 数据模型
分布式多维分析系统的数据模型主要包括对象模型和报表模型,如图3 所示。对象模型由类、数据源、属性、属性关联组成,其关系是类由属性聚合而来,属性之间通过属性关联进行关联。同时类依赖于数据源和包;报表模型由指标集、指标、维度和报表描述规范构成,其中指标集由多个指标和维度聚合而成,报表描述规范依赖于所定义的指标集。指标集是由类派生而来。
为了灵活快速展现不同业务系统的各种指标数据,以适应多变的业务现场需求,本系统采用了业务对象的二次建模方式。第一层次,从业务对象构建对象模型及其关联;第二层次,基于对象模型构建指标集模型和报表描述规范,迅速生成所需报表,而且可以任意增删维度和指标,同时还可以针对不同指标进行聚合运算。通常多维分析工具只针对单一数据源进行展现,而本系统通过定义分布式数据源,由多个路由节点同时汇总至主站聚合展现,满足了分布式业务系统的报表分析需求。这是本系统的一大创新点。
2.3 分布式多维分析系统执行流程
多维分析系统执行流程如图4 所示。
图4 请求执行算法流程图
1)系统初始化:报表引擎服务启动初始化,加载对象模型、路由及公共维度数据。
2)执行一次请求过程:
①构造请求实体:当客户端发起请求报表展现,首先从历史快照中根据请求过期时间范围查找,如果存在则直接返回,否则继续向报表引擎请求,引擎根据请求对象的指标、维度和条件构造生成计算请求对象。
②动态路由:报表引擎从路由表中查找各个地区的请求地址,通过Hessian 通信组件异步发送计算请求对象。
③代理计算:每个计算代理节点在初始化时将业务数据预加载;计算代理采用内存数据库进行计算,把数据存放在服务器的内存中,可以直接在代理节点对数据进行分析查询操作,不需要把代理节点的数据下载,减少了数据传输的时间。当主站发送计算请求,计算代理从缓存中取数据,通过聚合计算、编码转换、日期聚合转换,将计算得出中间结果集发送给主站消息队列。
④汇总和聚合计算:当所有数据都异步发送到主站消息队列上,报表引擎将其作为中间结果集汇总插入一张临时表的内存数据库来计算。报表引擎为每个生成的计算单元格执行内存表达式计算,比如常用的聚合计算:求和、求平均值、同比等;每个单元格由其约束条件生成一条SQL 语句,从内存库的临时表汇总查询值填充到每个计算单元格。最终将报表单元格集合以JSON 形式返回给请求的客户端。
3 结束语
多维数据分析是商业智能应用的主要内容之一,本文在多维数据分析理论研究的基础上,提出了一种基于关系数据库的分布式多维数据分析与实现,通过预定义维度、指标模型,实现了E-R 模型到多维模型的一种映射,在这种映射的基础上,将多维分析的操作转化为结构化查询语句,完成了对分布式数据的统计查询。为分布式数据的统计分析提供了多角度、多层次的分析特性,更增加了数据统计的直观性。
[1]王珊.数据仓库技术与联机分析处理[M].北京:北京科学技术出版社,1998.
[2]刘云峰,王倩宜,杨旭,等.一种支持大数据集成架构的多维分析系统[J].华东师范大学学报(自然科学版),2015,23(7):4-7,12.
[3]宋擒豹,杨向荣,沈均毅.数据仓库技术研究[J].计算机工程,2002,28(1):125-127.
[4]杨光,张雷,艾波.OLAP 技术及其发展[J].计算机应用研究[J],1999,16(7):7-10.
[5]王胜.商务智能系统关键技术研究[D].青岛:山东科技大学,2009.
[6]Jake Sturm.Microsoft SQL Server 7.0 数据仓库技术指南[M].刘汉宇,郝春明,裴莹,等译.北京:机械工业出版社,2000.
[7]孙泳,刘少辉,史中植.数据仓库中多维分析的数据展现[J].计算机工程与应用,2004,40(4):174-177.
[8]David Iseminger.数据库与数据仓库实用操作大全[M].北京:北京大学出版社,2001.
[9]蒋建民,张世勇.在关系数据库上实现OLAP 多维分析[J].渝州大学学报(自然科学版),2002,19(1):18-20.
[10]Paulraj Ponniah.数据仓库基础[M].段云峰,李建威,韩洁,等译.北京:电子工业出版社,2004:394-431.
[11]潘东静.基于OLAP 的多维分析模型设计及应用[J].德州学院学报,2004,20(6):55-58.
[12]Tom Soukup,Lan Davidson.可视化数据挖掘[M].朱建秋,蔡伟杰译.北京:电子工业出版社,2004:4-21.
[13]姚家奕.多维数据分析原理与应用[M].北京:清华大学出版社,2004.
[14]李泽海,孙吉贵,赵君.商业智能技术及行业应用分析[J].吉林大学学报(信息科学版),2003,21(1):54-60.
[15]余长慧,潘和平.商业智能及其核心技术[J].计算机应用研究,2002,19(9):14-16.
[16]Efrem G Mallach.Decision Support and Data Warehouse Systems[M].Boston:Mcgraw-Hill,2005:79-80.
[17]Mohamrned J Zaki,Yi Pan.Introduction:Recent Developments in Parallel and Distributed Data Mining[M].Kluwer Academic Publishers,2002.
[18]Wikipedia.Business Intelligence[EB/OL].http://en.wikipedia.org/wiki/Business_intelligence,2015-08-26.