一种联机分析处理系统中多维数据读写的方法和装置的制作方法

文档序号:6562840阅读:169来源:国知局
专利名称:一种联机分析处理系统中多维数据读写的方法和装置的制作方法
技术领域
本发明涉及计算机技术领域,特别是指一种联机分析处理系统中多维数据读写的方法和装置。
背景技术
在科技快速发展的今天,社会各个领域中的需要统计的数据都飞速增长,海量数据的记录、查询为计算机技术带来新的发展方向,提供新的技术课题。
企业资源计划(ERP,Enterprise Recourse Planning)系统为企业的带来新的数据管理方式。通过ERP系统,企业能更加高效的运用、管理企业的各类资源。ERP数据库中存储大量的数据,从分析处理过程来看,分析一般需要多表操作、较长的运行时间,若直接利用ERP业务系统的数据库中现有的数据进行决策的分析和推理、将影响ERP系统的效率,并造成繁忙的网络数据传输。因此需要结合联机分析处理系统(OLAP,Online Analytic Processing)。
管理决策人员通过OLAP从不同的角度、快速灵活地对数据仓库中的数据进行多维分析处理。OLAP系统主要包括多维联机分析处理系统MOLAP(Multidimensional OLAP)和关系联机分析处理系统ROLAP(Relational OLAP)。从逻辑上看,OLAP抽象模型包括结构模型和查询模型,结构模型表示多维数据集的各种对象,查询模型表示在这些对象上面的查询。实现时将结构模型和查询模型映射为物理实现模型。OLAP结构模型中,核心是多维数据集立方体,即立方体(Cube)。Cube中含有大量的发生数据和聚合数据,聚合数据是由维度层级结构决定的,维度个数、维度成员数以及层级结构的复杂度决定了聚合数据的数据量。其中,维度是人们观察数据的特定角度,如时间维度、地理维度等。用户在某个维度上观察数据时还可以存在细节程度不同层次的各个描述方面。如,时间维度包括日期、月份、季度、年。维度中包括的成员时维度上的取值,是数据在某个维度中位置的描述。如,“某年某月某日”是在时间维度上位置的描述。通过各个不同的维度,能够更加灵活的观测数据。Cube中的每个数据均对应于各个维度中的一个成员,通过各个维度中成员的组合即可查询到相应的数据。
对于多维的数据结构,OLAP服务器在数据的存储和查询上有不同的实现方式,但大都应用于海量数据,处理时,OLAP服务器预先存储有来自数据源中的海量数据,并生成Cube数据,用户通过OLAP服务器从不同维度进行数据分析时,将OLAP服务器中生成的海量Cube数据划分为多个部分数据,每次将一部分数据读入到内存中建立报表数据,再将内存中建立的报表数据组合成完整的报表后,显示到用户的终端上。
上述进行OLAP数据分析时,主要是应用于海量数据的查询、分析,且查询的Cube数据是已经在OLAP服务器中生成的。对于小数据量的存储和查询,如果仍采用OLAP服务器生成Cube数据,再通过OLAP服务器进行Cube数据的查询、分析,将会对OLAP服务器利用效率上产生较大的浪费。而目前对于小数据量的查询、分析,还没有完整的解决方案。

发明内容
有鉴于此,本发明在于提供一种联机分析处理系统中多维数据读写的方法和装置,以解决上述小数据量的存储和查询的问题。
为解决上述问题,本发明提供一种联机分析处理系统中多维数据读写的方法,包括从数据源中获取出初始数据,设定初始数据中各个维度中成员的任意组合,将所述组合和其相对应初始数据中的度量值数据写入到内存中,利用所述组合从所述内存中读取相应的度量值数据。
其中,所述写入包括将所述任意组合作为哈希表的关键字Key,将所述相对应的度量值数据作为哈希表的值Value,将所述组合和所述相对应的度量值数据以哈希表的形式写入到内存中。
其中,所述读取包括利用所述关键字Key,从内存中读取相对应的度量值数据。
其中,所述写入包括在内存中建立与各个维度中成员的全部任意组合相对应的多维数组;将所述组合相对应的度量值数据写入与所述数组下标相对应的内存空间中。
其中,所述读取包括利用所述数组下标,从内存中读取相对应的数据。
本发明还提供一种联机分析处理系统中多维数据读写的装置,包括数据采集单元,用于从数据源中提取初始数据,并发送至组合生成单元和内存读写单元;组合生成单元,用于利用初始数据设定各个维度中成员的任意组合,并将所述组合信息发送至内存读写单元;内存读写单元,用于将所述组合和其相对应初始数据中的度量值数据写入到内存中,利用所述组合从所述内存中读取相应的数据。
其中,所述内存读写单元用于将所述任意组合作为哈希表的关键字Key,将所述相对应的度量值数据作为哈希表的值Value,将所述组合和所述相对应的度量值数据以哈希表的形式写入到内存中。
其中,所述内存读写单元用于利用所述关键字Key,从内存中读取相对应的度量值数据。
其中,所述内存读写单元用于在内存中建立与各个维度中成员的全部任意组合相对应的多维数组;将所述组合相对应的度量值数据写入与所述数组下标相对应的内存空间中。
其中,所述内存读写单元用于利用所述数组下标,从内存中读取相对应的度量值数据。
本发明的方法和装置,解决了小数据量的OLAP存储和查询,将小数据量的OLAP的存储和查询全部在内存中处理。在内存中读写多维数据,将多维数据模型以哈希表的形式进行存储,更加有利于内存的存储和查询。而且对于小数据量的读写,哈希表占用内存空间小,不会对系统性能产生瓶颈,完美地解决了基于内存的小数据量的OLAP存储和查询。


图1是本发明方法的流程图;图2是本发明实施例中维度成员关系的数据结构图;图3是本发明实施例中维度成员与数据的对应关系图;图4是本发明装置的结构示意图。
具体实施例方式
全球经济快速发展的今天,无论是跨国公司、企业还是政府机关,每天都会有大量的数据需要处理,这些数据包括各个类别,如生产、销售、日常办公等。决策者通过对生成的大量数据进行分析,对市场销售、生产进度进行决策。但对于有些小型公司,每天的产生的数据较少,如果使用大型分析海量数据的OLAP系统,则会浪费较大的系统资源。
下面详细阐述本发明的思想和具体实现的过程,本发明主要应用于内存嵌入式小数据量的OLAP。对于生成的多维数据,本发明将各个维度中成员的组合和与其相对应的数据存储在内存中进行分析处理。参见图1,本发明的主要步骤包括步骤S101从数据源中获取出初始数据;步骤S102设定初始数据中各个维度中成员的任意组合;步骤S103将所述组合和其相对应初始数据中的度量值数据写入到内存中,利用所述组合从所述内存中读取相应的度量值数据。
下面给出本发明的具体实施例。
对于公司产生的数据,需要预先设定数据的维度(Dimension),维度是人们观察数据的特定角度,是考虑问题时的一类属性,属性集合构成一个维度(时间维度、地理维度等)。
维度的层次(Level)是人们观察数据的某个特定角度(即某个维)还可以存在细节程度不同的各个描述方面。如时间维度日期、月份、季度、年。
维度的成员(Member)维度上的取值,是数据在某个维度中位置的描述。如“某年某月某日”是在时间维度上位置的描述。
通过各个不同的维度,能够更加灵活的观测数据。每个维度的层级关系是以树型的数据结构进行存储的,这样便于进行数据的汇总和聚集。
下面给出本发明的具体实施例。为便于更清晰地理解对本发明,在本发明的实施例中维度以三维为例。
以特快专递公司的数据为例,在进行OLAP分析时,需要先从数据源中获取数据,数据源可以是数据库或以各类格式软件存储的数据。获取初始数据后,取出初始数据中的维度成员,设定初始数据中各个维度中成员的任意组合,通过维度成员与度量值数据的对应关系生成维度成员组合与度量值数据的对应关系。如,特快专递公司产生的数据包括三个维度,分别为源、路线和时间。各个维度的层级关系参见图2。源的维度成员包括航空、海路、公路、铁路四个成员;路线的维度成员包括非洲、亚洲、澳洲、欧洲、北美洲、南美洲六个成员;时间的维度成员包括第一季度、第二季度、第三季度、第四季度四个成员。在各个维度上任意取出一个成员,组成的组合称为元组,如(航空,非洲,第一季度);(航空,南美洲,第二季度)等。每个元组中对应于一组度量值数据,在该组度量值数据中包括一个或多个数据。
各个维度中的成员与数据的对应关系参见图3。在图3中,维度成员和相对应的数据以立方体的形式展现出来。在立方体中,有三个维度和两个度量值,立方体内的单元格存储的是度量值,度量值代表事实数据。如元组(航空、非洲、第一季度)对应的单元格对应有两个度量值为190和99/02/17,(航空、南美洲、第二季度)对应的单元格对应有两个度量值为490和99/06/03。立方体中的每个单元格也对应于各个维度上的一个成员。由于本发明最终应用于小数据量,因此在整个立方体中,存储的数据量是稀疏的。在基于内存的小数据量的OLAP,在存储到内存中时,以哈希表的形式存储最为简便,快捷。在各类语言中,如JAVA、VC++等等,调用哈希函数时,都会自动将数据以哈希表的形式存储到内存中。
存储时,可以将元组作为哈希函数的关键字Key,将度量值作为哈希函数的Value值。具体实现代码如下Public void put(Object key,Object value);Public Object get(Object key);其中,put和get函数用于存储和读取数据。将元组和度量值作为哈希表存储,不需要特殊处理维度的层级关系;读取数据时,通过get函数能够根据关键字key从内存中读出相应的数据。
哈希表是一种能够实现快速查找的数据结构,查找记录时需进行一系列和关键字的比较。查找方法是建立在比较的基础上,查找的效率依赖于查找过程中所进行的比较次数。
理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立一种确定的对应关系,使每个关键字和存储数据的唯一的存储位置相对应。
哈希函数在实现时,记录的存储位置和它的关键字之间可以有多种对应关系,每种对应关系在查找速率和效率上都有各自的优点。建立对应关系时,需要先确定Key值,即由组成各个元组的成员确定出一个Key值,由Key值确定出数据在内存中的地址。确定的方式主要由以下几种,如直接定址法,是直接将Key值作为内存中的地址来存储数据。这种方式的特点是计算简单,冲突最小。
数字分析法,是将Key的若干数位作为内存中的地址。
平方取中法,是将Key取平方后的中间几位作为内存中的地址。
折叠法,是将Key值分割成位数相同的几部分(最后一部分的位数可以不同),然后取这几个部分的叠加和(舍去进位)作为内存中的地址。
除留余数法,是将Key值被某个不大于哈希表表长的数除后所得余数为内存地址。
随机数法,是选择一个随机函数,将Key值的随机函数值作为内存地址。
哈希函数在确定Key值和Value值的对应关系时,大都是通过上述几种函数来确定内存地址和存储数据的对应关系。
用户在进行OLAP操作时,各个维度上的成员可以通过图2所示的父节点,即汇总级别上的成员,得到子节点位于即维度上成员的Key值和需要汇总的Value值。如查询时间维度上的汇总级别的成员上半年,与航空、非洲组成的元组(航空、非洲、上半年)对应的度量值时,先找出(航空、非洲、上半年)的两个子节点(航空、非洲、第一季度)和(航空、非洲、第二季度)的Key值,(航空、非洲、上半年)的度量值就可通过查询(航空、非洲、第一季度)和(航空、非洲、第二季度)的Key值所对应的Value值聚集汇总得到。实现时可以通过维度中父节点和子节点之间节点的层级关系进行处理。
以哈希表存储,存储的空间占用较少,利用率较高,且不易OLAP在基于内存实现时造成系统的性能瓶颈。
本发明在将元组和其对应的度量值写入到内存中的方式不止一种,有多种实现的方式,还可以以数组的方式写入到内存中。在以数组的方式写入到内存中时,需要事先将各个维度成员所能组成的所有元组分配好相应的内存空间。每个维度对应一个数组维度,数组中的每个空间的下标值对应一个元组的组合。数组中空间的下标值对应存储单元的存储空间用于所存储的数据。
数组和哈希表的存储方式是不同的,数组需要预先占用所有各个元组对应的空间,由于小数据量的数据在整个数组中是稀疏的,会造成一定空间的浪费。哈希表在数据存储中是随着数据的不断存储而不断的分配空间。因此,在向内存写入数据时,以哈希表的形式会比数组的形式更能提高系统效率,因为占用的内存空间少,系统可以使用更多的内存空间完成其它工作。
本发明还提供一种联机分析处理系统中多维数据读写的装置,包括数据采集单元401,用于从数据源中提取初始数据,并发送至组合生成单元402和内存读写单元403;组合生成单元402,用于利用初始数据设定各个维度中成员的任意组合,并将所述组合信息发送至内存读写单元403;内存读写单元403,用于将所述组合和其相对应初始数据中的度量值数据写入到内存中,利用所述组合从所述内存中读取相应的数据。
在本发明的装置中,所述内存读写单元402用于将所述任意组合作为哈希表的关键字Key,将所述相对应的度量值数据作为哈希表的值Value,将所述组合和所述相对应的度量值数据以哈希表的形式写入到内存中。
在本发明的装置中,所述内存读写单元403用于利用所述关键字Key,从内存中读取相对应的度量值数据。
在本发明的装置中,所述内存读写单元403用于在内存中建立与各个维度中成员的全部任意组合相对应的多维数组;将所述组合相对应的度量值数据写入与所述数组下标相对应的内存空间中。
在本发明的装置中,所述内存读写单元403用于利用所述数组下标,从内存中读取相对应的度量值数据。
对于本发明的方法和装置,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种联机分析处理系统中多维数据读写的方法,其特征在于,包括从数据源中获取出初始数据,设定初始数据中各个维度中成员的任意组合,将所述组合和其相对应初始数据中的度量值数据写入到内存中,利用所述组合从所述内存中读取相应的度量值数据。
2.根据权利要求1所述的方法,其特征在于,所述写入包括将所述任意组合作为哈希表的关键字Key,将所述相对应的度量值数据作为哈希表的值Value,将所述组合和所述相对应的度量值数据以哈希表的形式写入到内存中。
3.根据权利要求2所述的方法,其特征在于,所述读取包括利用所述关键字Key,从内存中读取相对应的度量值数据。
4.根据权利要求1所述的方法,其特征在于,所述写入包括在内存中建立与各个维度中成员的全部任意组合相对应的多维数组;将所述组合相对应的度量值数据写入与所述数组下标相对应的内存空间中。
5.根据权利要求4所述的方法,其特征在于,所述读取包括利用所述数组下标,从内存中读取相对应的数据。
6.一种联机分析处理系统中多维数据读写的装置,其特征在于,包括数据采集单元,用于从数据源中提取初始数据,并发送至组合生成单元和内存读写单元;组合生成单元,用于利用初始数据设定各个维度中成员的任意组合,并将所述组合信息发送至内存读写单元;内存读写单元,用于将所述组合和其相对应初始数据中的度量值数据写入到内存中,利用所述组合从所述内存中读取相应的数据。
7.根据权利要求6所述的装置,其特征在于,所述内存读写单元用于将所述任意组合作为哈希表的关键字Key,将所述相对应的度量值数据作为哈希表的值Value,将所述组合和所述相对应的度量值数据以哈希表的形式写入到内存中。
8.根据权利要求7所述的装置,其特征在于,所述内存读写单元用于利用所述关键字Key,从内存中读取相对应的度量值数据。
9.根据权利要求6所述的装置,其特征在于,所述内存读写单元用于在内存中建立与各个维度中成员的全部任意组合相对应的多维数组;将所述组合相对应的度量值数据写入与所述数组下标相对应的内存空间中。
10.根据权利要求9所述的装置,其特征在于,所述内存读写单元用于利用所述数组下标,从内存中读取相对应的度量值数据。
全文摘要
本发明公开了一种联机分析处理系统中多维数据读写的方法和装置,涉及计算机技术领域,本发明的方法包括从数据源中获取出初始数据,设定初始数据中各个维度中成员的任意组合,将所述组合和其相对应初始数据中的度量值数据写入到内存中,利用所述组合从所述内存中读取相应的度量值数据。本发明的方法在向内存中读写数据时,以哈希表或数组的形式写入或读出。将多维数据模型以哈希表的形式进行存储,更加有利于内存的存储和查询。而且对于小数据量的读写,哈希表占用内存空间小,不会对系统性能产生瓶颈,完美地解决了基于内存的小数据量的OLAP存储和查询。
文档编号G06F17/30GK1949226SQ20061014565
公开日2007年4月18日 申请日期2006年11月23日 优先权日2006年11月23日
发明者林志贤 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1