一种面向并发olap的测试数据分层聚簇查询处理系统及方法

文档序号:6504682阅读:257来源:国知局
一种面向并发olap的测试数据分层聚簇查询处理系统及方法【专利摘要】本发明公开了一种面向并发OLAP的测试数据分层聚簇查询处理系统及方法,通过分层抽点、聚簇、索引组织表、大对象存储等一系列DBMS技术,降低并发OLAP中测试数据访问中的I/O代价,从而提高并发查询的处理能力。本发明在数据库管理系统中针对I/O性能和并行OLAP处理性能实现了并发查询处理优化技术,支持面向I/O性能来优化设置并发OLAP处理负载,从而提高了测试数据波形显示的可预期访问性能,实现了大规模并发OLAP的测试数据查询的加速处理。【专利说明】—种面向并发OLAP的测试数据分层聚簇查询处理系统及方法【
技术领域
】[0001]本发明涉及一种数据库查询处理系统与方法,尤其涉及一种面向大规模并发联机分析处理(OLAP)的测试数据查询处理系统及方法,降低并发OLAP中读取的代价,提高并发查询处理能力的方法,属于测试数据管理【
技术领域
】。【
背景技术
】[0002]当今,数据处理大致可以分成两类:联机事务处理(on-linetransactionprocessing,简写为OLTP)和联机分析处理(On-LineAnalyticalProcessing,简写为0LAP)。OLTP主要是日常的事务处理,例如银行交易。OLAP的设计目标是满足决策支持或者多维环境下特定的查询和报表需求。包括OLAP在内的诸多应用驱动了数据仓库技术的出现和发展;而数据仓库技术反过来又促进了OLAP技术的发展。[0003]对于测试数据的统一查询访问属于OLAP范畴,1/0(输入/输出)是最主要的性能瓶颈。当并发查询独立地访问磁盘上的事实表时,大量的随机位置访问加连续访问会产生巨大的磁盘寻道延迟,I/o带宽占用,极大地降低磁盘的有效吞吐性能。目前主流技术通常采用并发查询处理的对慢速磁盘上的数据事实表I/o访问进行共享,并消除不同查询处理任务对磁盘访问的争用。在这个过程中,技术的关键是建立共享I/o上的并发查询处理代价模型,获得I/o延迟与缓存数据上的并发查询处理延迟之间的最佳负载匹配。[0004]然而,测试数据往往一次测试单个物理量的数据量就会达到IG以上,在测试过程中,往往在同一时点产生上千个物理量值,在大量并发查询时,会导致并发查询处理的整体数据量过大而照成执行时间过长,使得性能难以接受,无法获得可以接受的测试数据并发查询性能。另外,在传统的磁盘数据库中,数据堆表的存储往往是DBMS自身控制,用户很难干涉每个元组的存储具体物理位置,经常同时访问的数据物理存储往往存储在不同的物理数据块上,这又进一步降低了磁盘1/0的性能。[0005]海量并发OLAP的测试数据查询的情况下,并发查询处理所面临的关键技术挑战有三点:一是每个物理量的测试数据由多个时间点的量值组成,常常达到千万级甚至亿级,用户访问常常是整个测试某个或多个物理量的全图,因此产生的I/o代价过大,在大规模并发查询的情况下,性能变得不可接受;二是商用DBMS通常的存储形式(堆表)很难将连续的测试数据物理上存储在同一或相邻的数据块上,以消除或减少与事实表扫描所造成的I/O争用;三是商用DBMS通常的存储形式(堆表)的无序性,无法保存简单的固定采样率的测试数据,必须增加时间列,这样存储空间增大一倍以上(连同索引),需要兼顾查询性能的前提下尽量降低存储空间开销。【
发明内容】[0006]本发明所要解决的技术问题在于:克服现有技术的不足,提供一种面向大规模并发OLAP的测试数据分层聚簇查询处理系统及方法,通过分层抽点、聚簇、索引组织表、大对象存储等一系列DBMS技术,降低并发OLAP中测试数据访问中的I/O代价,从而提高并发查询的处理能力。[0007]本发明技术解决方案:一种面向并发OLAP的测试数据分层聚簇查询处理系统,包括:数据接口模块、分层抽点模块、聚簇存储模块、索引组织表模块、大对象存储模块、文档管理模块和综合查询模块;[0008]数据接口模块,建立与外部的测试部分的数据接口,接收上述外部测试部分产生测试数据,建立Oracle镜像,实现定时读取上述外部测试部分产生的测试数据,存储于Oracle数据库服务器,供分层抽点模块和文档管理模块调用;[0009]分层抽点模块,读取数据接口模块产生的测试数据,其进行分层的CUBE计算,生成树形的数据层次结构,用户实际向系统发出查询请求时,系统由分层数据结构树根部开始检索,向叶子端逐层访问,这样的结构可以降低读取海量曲线数据带来的磁盘与网络负载,分层抽点模块生成分层数据供聚簇存储模块调用;[0010]聚簇存储模块,读取分层抽点模块产生的分层数据,对分层数据采用聚簇的形式存储,以实验ID+时间戳两个属性列(实验ID:每个实验的唯一标识;时间戳:每个测试物理量发生的时间点)为聚簇因子存储曲线数据,控制数据存储位置,生成聚簇数据供索引组织表模块调用;[0011]索引组织表模块,读取分层抽点模块、聚簇存储模块产生的分层数据,采用索引组织表的形式存储,即:索引结构中不但存储索引属性列(例如实验ID、时间戳两个属性列),还存储实际值(物理量值),而不再访问堆表。这样的存储结构不但降低存储空间,而且减少索引-表的指针访问,所有数据完全存储在索引结构上,避免通过指针访问表,加速大规模并发数据库访问效率,本模块所生成的索引组织表存储数据供综合查询模块调用;[0012]大对象存储模块,读取分层抽点模块、聚簇存储模块产生的最底层数据采用大对象(BLOB)形式存储,以实验+物理量为单位存储于数据库的BLOB字段中,以支持各种复杂的用户查询,每个BLOB对应一个实验的一个物理量,在数据库访问中,采用二进制数据检索技术,实现起止点+偏移量(OFFSET)的访问方式,提高查询效率;大对象存储的BLOB产生数据供综合查询模块调用;[0013]文档管理模块,读取数据接口模块产生的文档数据,实现测试用例与测试文档管理模块实现全过程文档管理,所述全过程文档管理包括测试用例、测试结果、任务书、需求分析报告、阶段验收报告、最终验收报告、线路图、用户手册,实现版本控制,产生文档数据供综合查询模块调用;[0014]综合查询模块,读取文档管理模块产生的文档数据以及索引组织表模块、大对象存储模块的测试数据,该模块的技术特征为用户通过型号名称、版本号和关键字检索测试用例及测试结果功能,为用户提供一个基于关系数据、测试数据、文档数据三类数据混合查询的查询平台。综合查询模块实现集中、统一的多角度、多功能、可对比的图形化用户查询界面,以及测试用例、测试结果高度共享,确保用户更为便捷的对比来自各五个测试平台的仿真数据,查询结果以报表形式输出或以多种数据格式导出。[0015]所述分层抽点模块具体实现如下:[0016](2)第一步,从数据接口模块取得仿真数据,对仿真数据进行分层的CUBE计算根据每个实验的采集数据量,自动计算出需要分层的层数以及每层的抽点率,所得分层层数和抽点率供分层模块调用相应的抽点算法进行分层处理;[0017](I)第二步,根据第一步的分层的层数以及每层的抽点率,,生成树形的数据层次结构;树的最底层,即叶子节点,存放全部真实仿真数据;其他层依次用树形分层算法以子层抽点的精度的存储子层的近似仿真数据,即一定数量的时间戳相邻的仿真数据,取最大值和最小值存储于父层;通过这种分层抽点降低数据量的CUBE模式,使得前段测试数据曲线显示时每次曲线产生仅需千条数据;实际系统执行时用户查询由树根部向叶子端逐层访问,每次读取的数据量不超过2000个,避免以降低读取海量曲线数据带来的磁盘与网络负载,提高查询效率。本步所得层次结构供平滑处理模块调用;[0018](3)第三步,根据第二步的分层结构,采用OLAP计算方法,对统一规范的数据进行分层的CUBE计算,进行平滑处理,近似计算既要保留原始数据的特征数据,即该段数据的最大值和最小值,还要使得近似曲线尽可能平滑,方便用户正确理解数据的趋势变化。平滑处理算法首先判断该段数据的趋势,即:上升,下降或平缓,根据趋势,调整最大值、最小值的时间戳取值,以得到相对平滑曲线。通过传统关系数据库技术建立稳定、高效的存储模式结构,对于数据量较小的表采取高范式的模式设计,避免出现数据冗余或不一致的情况;对于数据量较大且很少修改的表,数据可以适当允许冗余,以保证查询时连接所产成的巨大磁盘代价,确保查询相应时间,最终输出平滑的分层抽点数据。[0019]所述聚簇存储模块具体实现如下:[0020](I)第一步,从分层抽点模块获得数据,判断是否进行聚簇处理,传统关系数据库堆表的存储模式中,表中每条记录存放的物理地址由数据库系统根据当时磁盘情况而决定,即使连续插入的数据,物理存储地址也不一定连续,因此这种存储模式并不适合仿真实验测试曲线数据存储与读取。对仿真实验测试曲线数据存储与访问有其独特的方式,首先由于一般来说曲线数据被加载到数据库后极少发生改变,即修改或个别条元组增删,因此可以忽略因此带来的元组迁移代价;其次对仿真实验测试曲线数据访问并不像传统关系数据那样存在大量的随机访问,由于大部分操作是读取曲线或曲线的一部分,因此多数发生的时间戳连续的数据访问。最理想的存储方式是时间戳相邻的曲线数据,物理上也相邻存储,这样即可以最大限度的降低数据访问时带来的I/o交换。本步通过采样,根据采样数据,判断实验是否连续,判断结果供第二步调用;[0021](2)第二步,根据第一步的判断结果是否进行聚簇处理,如果是,则系统采用聚簇的形式存储测试曲线数据,这种存储模式的特点是,数据存储位置可以控制,但发生修改时代价高;以实验ID+时间戳(实验ID:每个实验的唯一标识;时间戳:每个测试物理量发生的时间点)为聚簇因子,调用关系数据库固有的聚簇存储函数,导入存储曲线数据,合理的利用聚簇的优点,又没有发生过多的记录修改时数据迁移代价。[0022]所述索引组织表存储模块具体实现如下:[0023](I)第一步,从分层抽点模块获得数据,判断是否为最底层数据,如果否,则采用调用算法调整测试数据的存储方式,抽取传统同一实验同一时间戳同时多个物理量的形式的存储结构,将测试数据按照实验+单个物理量为单位进行存储,同一实验的多个物理量之间存储联系不再存在,而是通过数据库主外键形式保持逻辑联系,得到单个物理量的存储数据供第二步调用;[0024](2)第二步,清除原表中数据,读取第一步处理结果,调用关系数据库固有的索引组织标存储函数,导入第一步处理结果,生成索引组织表,除了最底层叶子节点外,其他层分层抽点数据采用索引组织表的形式存储,能够降低存储空间,减少索引-表的指针访问,数据完全存储在索引结构上,避免通过指针访问表,从而进一步降低I/o代价,加速大规模并发数据库访问效率,提高查询性能;最终得到以索引组织表形式存在的分层抽点数据。[0025]所述大对象存储模块具体实现如下:[0026](I)第一步,从分层抽点模块获得数据,判断是否为最底层数据,如果是,则采用大对象(BLOB)形式存储最底层数据。测试数据数据量巨大(相对于关系数据库),单个测试实验单个物理量数据量往往超过1000万条,甚至上亿;当测试数据进入关系数据库被关系化,由于传统数据库没有记录顺序的界定,因此需要增加时间戳列(文件形式存储测试数据不需要存储时间戳,而是通过数据的先后顺序+采样率来记载),使得数据量增加2-3倍;一个实际的测试数据OLAP系统存储多年的测试数据,即便采用分区表等技术,传统的关系数据库对于如此海里的数据仍然不能提供足够的数据支持。创建表,该表带有BLOB字段,逐个物理量将最底层数据按照时间戳顺序,依次导入到BLOB字段中,每个物理量对应一个BLOB数据;[0027](2)第二步,读取第一步产生的BLOB数据,进行统一规范处理,调用相应程序,力口上相应的实验ID,以实验+物理量形式存储。采用二进制形式对测试数据进行特殊处理、压缩,以实验+物理量为单位存储于数据库的BLOB字段中,即每个实验的每个物理量都对应一个BL0B,以支持各种复杂的用户查询。由于树形分层存储模式最大的数据量位于树的叶子节点,即最底层,因此对于最底层数据采用大对象(BLOB)形式存储,原始测试数据文件使用FTP或者BFILE形式存储以支持用户下载原始文件时全文件读取;在保存原始测试数据文件的前提下,抽取原始测试波形数据,以二进制文件形式进行单物理量再构造,数据存储在数据库的BLOB字段中,这样既可以消除记录关系化记载时同时存储的时间戳,降低存储空间;每个BLOB对应一个实验的一个物理量,消除了同一时间戳多个物理量同时存储带来的读取代价;第二步得到以实验+物理量为单位存储于数据库的BLOB字段中的最底层分层抽点数据;[0028](3)第三步,读取第二步处理结果数据,做偏移量统一处理,在数据库访问中,完全抛弃传统关系数据库的索引+ROWID形式,而是采用二进制数据检索技术,实现起止点+偏移量(OFFSET)的访问方式,提高查询效率,最终得到以起止点+偏移量(OFFSET)存在的底层分层抽点数据。[0029]面向并发OLAP的测试数据分层聚簇查询处理方法,实现步骤如下:[0030](I)建立与外部构件库、快速软平台、全数字软平台、动态测试平台模块数据接口,接收外部五个测试平台产生测试数据,建立Oracle镜像,实现定时读取外部五个测试平台产生的测试数据,存储于Oracle数据库服务器,供分层抽点模块、文档管理模块调用;[0031](2)经过接口模块产生的测试数据,由分层抽点模块对其进行分层的CUBE计算,生成树形的数据层次结构,实际系统执行时用户查询由树根部向叶子端逐层访问,降低读取海量曲线数据带来的磁盘与网络负载,生成分层数据;[0032](3)聚簇存储模块读取分层抽点模块产生的分层数据,对分层数据采用聚簇的形式存储,以实验ID+时间戳为聚簇因子存储曲线数据,控制数据存储位置,生成聚簇数据;[0033](4)索引组织表模块调用聚簇存储模块产生的分层数据,采用索引组织表的形式存储,降低存储空间,减少索引-表的指针访问,数据完全存储在索引结构上,避免通过指针访问表,加速大规模并发数据库访问效率,生成的索引组织表存储数据;[0034](5)系统通过大对象存储模块读取聚簇存储模块产生的最底层数据,采用大对象(BLOB)形式存储,以实验+物理量为单位存储于数据库的BLOB字段中,以支持各种复杂的用户查询,每个BLOB对应一个实验的一个物理量,在数据库访问中,采用二进制数据检索技术,通过父层起始点时间戳以及每个数据存储单位的大小,计算出起始点的偏移量(OFFSET);通过父层起始点时间戳、读取的时间长度每个数据存储单位的大小,计算出读取终点的偏移量(OFFSET)。最终实现起止点偏移量+终止点偏移量的大对象访问方式,提高查询效率。大对象存储的BLOB产生数据供综合查询模块调用;[0035](6)系统通过文档管理模块读取数据接口模块产生的文档数据,实现测试用例与测试文档管理模块实现全过程文档管理,包括测试用例、测试结果、任务书、需求分析报告、阶段验收报告、最终验收报告、线路图、用户手册等,实现版本控制,产生文档数据供综合查询模块调用;[0036](7)用户通过综合查询模块读取文档管理模块产生的文档数据以及索引组织表模块、大对象存储模块的测试数据,为用户通过型号名称、版本号和关键字检索测试用例及测试结果功能,为用户提供一个基于关系数据、测试数据、文档数据三类数据混合查询的查询平台。综合查询模块实现集中、统一的多角度、多功能、可对比的图形化用户查询界面,以及测试用例、测试结果高度共享,确保用户更为便捷的对比来自各五个测试平台的仿真数据,查询结果以报表形式输出或以多种数据格式导出。[0037]与现有技术相比较,本发明具有如下的有益效果:[0038](I)分层抽点算法,逐层降低数据量,抽点算法既保留原始数据的特征数据,将每次用户访问的I/o代价控制在一定范围内,大大的提高了查询性能,此外这种存储形式关系数据访问的重用性更高;[0039](2)采用聚簇存储技术,确保逻辑上相邻的仿真测试数据物理上也是相邻存储,使得每次读取数据对磁盘都是连续访问,避免磁盘数据库最不擅长的随机访问,减少读取数据块数;[0040](3)采用索引组织表及BLOB大对象技术,进一步降低存储空间,减少大规模并发访问代价,通过起始点+偏移量技术读取测试数据,加速最底层数据的访问速度,弥补了传统关系数据库对于超海量数据访问性能支持的不足。【专利附图】【附图说明】[0041]图1为本发明系统组成示意图;[0042]图2为本分层的抽点模块实现流程图;[0043]图3为本发明的聚簇存储模块实现流程图;[0044]图4为本发明的索引组织表模块实现流程图;[0045]图5为本发明的大对象存储模块实现流程图;[0046]图6为本发明的文档管理模块实现流程图。【具体实施方式】[0047]本发明中面向并发OLAP的测试数据分层聚簇查询处理系统依托Oracle数据库框架,实现对构件库、快速软平台、全数字软平台、动态测试平台和在轨维护支持环境五个模块所产生的仿真数据进行统一数据管理及有机集成,并具有较强图表分析、交互查询、综合数据对比功能,实现对测试用例和测试结果的共享查看、比对分析以及报表输出,此外统一卫星仿真数据综合分析平台可以支持多个型号和多测试数据版本。[0048]面向并发OLAP的测试数据分层聚簇查询处理系统是面向设计数据与技术数据管理需求,方便快捷地实现数据文件管理的软件平台。统一卫星仿真数据综合分析系统将融合现有分布式数据管理、分布式文件管理、分布式数据库系统等诸多功能,提供对整个系统的产生的各类仿真测试数据的存储、备份、查询、权限控制,安全管理等功能。[0049]用户可以通过面向并发OLAP的测试数据分层聚簇查询处理系统对整个系统的产生的各类数据,包括结构化数据、非结构化数据、半结构化数据进行多角度混合查询、测试试验技术分析计算、查询结果展示等。[0050]在数据管理方面面向并发OLAP的测试数据分层聚簇查询处理系统具备真实性、完整性、可追溯性和时效性等特点。[0051]更稳定的通讯[0052]面向并发OLAP的测试数据分层聚簇查询处理系统可以对管理子网内的连接进行良好的监控和维护,合理分配网络资源,实现无丢包、无异常断开、忙碌仲裁、空闲自行关闭等的稳定性标准。[0053]更统一、集中的数据管理[0054]面向并发OLAP的测试数据分层聚簇查询处理系统可以对管理子网内的各种类型数据进行集中统一管理。将结构化、半结构化的仿真测试数据进行关系化处理,包括模拟波形、数字波形,建立非结构化的各类文档等数据与仿真试验关系数据之间的紧密联系。可为用户提供基于多种数据类型的混合查询。[0055]更高的查询效率[0056]面向并发OLAP的测试数据分层聚簇查询处理系统不仅将各种类型数据集中存储于数据库中,而且将一些对试验数据的复杂处理操作也在数据库中以存储过程、函数(指数据库内部)、触发器、外部函数等形式实现,使得最大程度的实现数据与计算相靠拢,客户端将用户查询处理发送数据库服务器,由于服务器具备一定的对技术数据复杂运算处理能力,只需将执行结果返回给客户端。此外统一卫星仿真数据综合分析系统使用分层索引技术,降低用户单次查询用于图形化显示的数据量。这些技术避免的大规模的数据迁移,从而降低网络负载,提高查询效率。[0057]更便捷的操作[0058]面向并发OLAP的测试数据分层聚簇查询处理系统使用更加强大的邮件快捷菜单和拖拽式操作以及完全图形化的可视界面力求在使用上做到轻松便捷。[0059]更灵活的配置需求[0060]面向并发OLAP的测试数据分层聚簇查询处理系统支持与目前主流的各种数据库系统无缝接口,包括Oracle、SqlServer、MySql等,并且可以实现无缝连接和快捷的配置,使用户在使用上和配置选择上灵活以便。[0061]系统开发环境[0062]软件开发环境是建立在Redhat企业版6.1操作系统平台下的0RACLE11.2.0.2数据库。数据库层开发采用ORACLE官方企业管理器以及PL/SQLDeveloper,展示层开发采用ORACLE超文本数据库以及ORACLEAPEX。[0063]系统运行环境[0064]操作系统:服务器要求安装Redhat企业版6.1;测试台式机要求安装windowsXPSP3系统。[0065]浏览器:FIREF0X5.0/IE6.0及其以上版本的浏览器。[0066]其他:虚拟机等。[0067]面向并发OLAP的测试数据分层聚簇查询处理系统是依托Oracle数据库框架,实现对构件库、快速软平台、全数字软平台、动态测试平台和在轨维护支持环境五个模块所产生的仿真数据进行统一数据管理、有机集成、交互查询、综合数据对比功能的综合平台。统一卫星仿真数据综合分析系统支持抽点存储、波形显示、数据对比、统计查询等功能;支持对测试中产生的各类文件进行多版本管理及回溯等功能;为用户提供自定义表的创建、编辑、查询、统计等功能;对用户、实验进行统一的权限管理。[0068]从结构组成上划分,它包含测试数据接口模块、测试数据集中清洗与CUBE生成模块、测试用例与测试文档管理模块、测试数据综合分析模块四个组成部分。其中测试数据集中清洗与CUBE生成模块包含分层抽点模块、聚簇存储模块、索引组织表模块、大对象存储模块。见图1针对修改后的权利要求作适应性的修改,[0069]构件库、快速软平台、全数字软平台、动态测试平台和在轨维护支持环境五个模块所产生的各种类型的仿真数据以及测试文档通过仿真测试数据接口模块实现数据导入系统,将结构化的关系数据或者半结构化数据导入到仿真测试数据集中清洗与CUBE生成模块,测试用例、测试结果等文档导入到测试用例与测试文档管理模块进行文件版本管理;仿真测试数据集中清洗与CUBE生成模块对测试数据进行去除脏数据统一规范,采用相同的数据模式存储,对统一规范的数据进行分层抽点、聚簇存储、二进制处理等;测试用例与测试文档管理模块将分项目、分版本的保存测试用例、测试结果、任务书、需求分析报告、阶段验收报告、最终验收报告、线路图、用户手册等各类型文档;仿真数据APEX综合分析模块通过型号名称、版本号和关键字检索测试用例及测试结果功能,实现集中、统一的多角度、多功能、可对比的图形化用户混合查询界面,用户可以便捷的对比来自多个项目、多个物理量的仿真测试数据,查询结果以报表形式输出或以多种数据格式导出。[0070]测试数据接口模块[0071]数据接口模块可以建立与构件库、快速软平台、全数字软平台、动态测试平台模块数据接口,建立Oracle镜像,实现定时读取新产生的工程数据,存储于Oracle数据库服务器;[0072]数据集中清洗与CUBE生成模块[0073]数据集中清洗与CUBE生成模块负责对读入的构件库、快速软平台、全数字软平台、动态测试平台四模块数据进行清洗,去除脏数据,进行统一规范,采用相同的数据模式存储,并且采用OLAP计算方法,对统一规范的数据进行分层的CUBE计算,采用聚簇存储、实体化视图、B+TREE索引等技术,对各层CUBE进行优化,以确保合理的查询响应时间,包含分层抽点模块、聚簇存储模块、索引组织表模块、大对象存储模块,见图2。[0074]经过接口模块产生的测试数据,由分层抽点模块对其进行分层的CUBE计算,生成树形的数据层次结构,实际系统执行时用户查询由树根部向叶子端逐层访问,降低读取海量曲线数据带来的磁盘与网络负载,生成分层数据。[0075]—种面向并发OLAP的测试数据分层聚簇查询处理方法,在基于分层抽点、聚簇、索引组织表、大对象存储等一系列DBMS技术基础上进行大规模并发OLAP测试数据查询处理,其特征在于:[0076]所述测试曲线数据分层抽点技术包括如下步骤:[0077](I)第一步,从数据接口模块取得仿真数据,对仿真数据进行分层的CUBE计算,生成树形的数据层次结构。树的最底层,即叶子节点,存放全部真实仿真数据;其他层依次用树形分层算法以各种精度的存储其下层的近似仿真数据,即一定数量的时间戳相邻的仿真数据,取最大值和最小值存储于父层。[0078]每个模块某个型号单个测试版本的仿真测试数据往往超过100万条,最大可达到千万级,使用这些数据生成图表时,由于不可避免产生的内存与硬盘数据交换,即I/o数据块,会造成查询相应时间不可接受,因此需要对仿真数据进行分层的CUBE计算,生成树形的数据层次结构。[0079]树的最底层,即叶子节点,存放全部真实仿真数据,这个层次的数据量最大,每个实验的仿真测试数据可以容纳千万条记录;其他层依次用树形分层算法以各种精度的存储其下层的近似仿真数据,即一定数量的时间戳相邻的仿真数据,取最大值和最小值存储于父层,这种分层抽取的方法既成指数的逐层降低存储数据,又保留了测试数据曲线的特征值,没有丢失重要的特征点。[0080]通过这种分层抽点降低数据量的CUBE模式,使得前段测试数据曲线显示时每次曲线产生仅需千条数据,缩短查询相应时间。例如实际系统执行时用户查询由树根部向叶子端逐层访问,每次读取的数据量不超过2000个,以降低读取海量曲线数据带来的磁盘与网络负载,提高查询效率。[0081](2)第二步,系统根据第一步的抽取结果,根据每个实验的采集数据量,自动计算出需要分层的层数以及每层的抽点率,调用相应的抽点算法程序进行分层处理,得到分层后的抽点数据。[0082](3)第三步,系统根据第二步的抽点结果,采用OLAP计算方法,对统一规范的数据进行分层的CUBE计算,进行平滑处理,近似计算既要保留原始数据的特征数据(最大值,最小值),还要使得近似曲线尽可能平滑,方便用户正确理解数据的趋势变化。[0083]同时通过传统关系数据库技术建立稳定、高效的存储模式结构,对于数据量较小的表采取高范式的模式设计,避免出现数据冗余或不一致的情况;对于数据量较大且很少修改的表,数据可以适当允许冗余,以保证查询时连接所产成的巨大磁盘代价,确保查询相应时间。[0084]通过传统关系数据库技术建立稳定、高效的存储模式结构,对于数据量较小的表采取高范式的模式设计,避免出现数据冗余或不一致的情况;对于数据量较大且很少修改的表,数据可以适当允许冗余,以保证查询时连接所产成的巨大磁盘代价,确保查询相应时间。最终输出平滑的分层抽点数据。[0085]所述聚簇存储模块具体实现如下:[0086](I)第一步,从分层抽点模块获得数据,判断是否进行聚簇处理,传统关系数据库堆表的存储模式并不适合仿真实验测试曲线数据存储与读取。对仿真实验测试曲线数据存储与访问有其独特的方式。首先由于一般来说曲线数据被加载到数据库后极少发生改变,即修改或个别条元组增删,因此可以忽略因此带来的元组迁移代价;其次对仿真实验测试曲线数据访问并不像传统关系数据那样存在大量的随机访问,由于大部分操作是读取曲线或曲线的一部分,因此多数发生的时间戳连续的数据访问。最理想的存储方式是时间戳相邻的曲线数据,物理上也相邻存储,这样即可以最大限度的降低数据访问时带来的I/o交换。[0087]聚簇存储模块读取分层抽点模块产生的分层数据,对其采用聚簇的形式存储,以实验ID+时间戳为聚簇因子存储曲线数据,控制数据存储位置,生成聚簇数据。采用聚簇存储、实体化视图、B+TREE索引等技术,将时间戳临近的仿真数据在物理地址上连续存放,以降低查询过程中读取的数据块数,实现对各层CUBE数据进行优化,以确保合理的查询响应时间。[0088]传统商用关系数据库通常默认采用堆表(heaptable)形式存储每条元组(tuple),即记录,记录存储的物理位置由DBMS根据当时物理块情况决定,即使连续插入的元组,物理位置上也不一定连续存放,这样存储方式是为适应在多数OLTP情况下元组发生改动而设计,可以在元组发生增、删、改时尽量降低元组迁移。[0089](2)第二步,根据第一步的判断结果是否进行聚簇处理,如果是,则系统采用聚簇的形式存储测试曲线数据,这种存储模式的特点是,数据存储位置可以控制,但发生修改时代价高。以实验ID+时间戳为聚簇因子存储曲线数据,合理的利用聚簇的优点,又没有发生过多的记录修改时数据迁移代价。[0090]经过分层、聚簇模块处理的数据经过特定条件判断,分别以索引组织表和大对象存储形式进行存储,判断读取数据是否为最底层数据,如果是,则以大对象形式进行存储,如果否,则以索引组织表形式进行存储,见图4。[0091]所述索引组织表存储模块具体实现如下:[0092](I)第一步,从分层抽点模块获得数据,判断是否为最底层数据,如果否,则采用索引组织表进行测试数据的存储方式,打破传统同一实验同一时间戳同时多个物理量的形式,将其按照实验+单个物理量为单位进行存储,同一实验的多个物理量之间存储联系不再存在,而是通过数据库主外键形式保持逻辑联系。[0093]索引组织表模块调用聚簇存储模块产生的分层数据,采用索引组织表的形式存储,降低存储空间,减少索引-表的指针访问,数据完全存储在索引结构上,避免通过指针访问表,加速大规模并发数据库访问效率,生成的索引组织表存储数据。[0094](2)第二步,清除原表中数据,读取第一步处理结果,得到索引组织表,除了最底层叶子节点外,其他层分层抽点数据采用索引组织表的形式存储,可以降低存储空间,减少索引-表的指针访问,数据完全存储在索引结构上,避免通过指针访问表,从而进一步降低I/O代价,加速大规模并发数据库访问效率,提高查询性能。最终得到以索引组织表形式存在的分层抽点数据。[0095]由于测试曲线数据采集方式等原因,多数测试数据的存储形式为同一时刻,即时间戳,多个物理量(可能上千个)测试曲线数据同时存储,使得同一数据块上存储多物理量的测试曲线数据。这一存储形式有利于数据采集时多个物理量的快速数据导入,对于原有的单机文件模式访问数据读取性能影响并不大。[0096]在大规模并发数据库访问中,多数用户每次查询可能只涉及一次测试的I个或几个物理量整段或局部的值变化,有时更多的是关心多个测试间某一或某几个物理量的差异,很少涉及测试的所有物理量数据。采用传统存储方式会使得用户仅访问I个或几个物理量数据时,系统会读取整个文件的数据(由于同一数据块上存储多物理量的数据),造成访问延迟。此外用户访问原始测试时,需要将整个原始文件下载,打开,进行文件操作和数据读取。而很多时候这种访问仅涉及原始文件中极少的局部数据,因此造成数据库1/0,和网络传输的极大浪费。例如某一试验采集了100个物理量两天内数据,共10个GB,假设每个物理量的数据大致相同,都是100MB,当用户只访问其中I个物理量数据时,由于磁盘数据库读取是以物理块为单位,同一数据块上存储多物理量,所读取的数据中,仅有1/100是用户本次查询所需要的结果,但系统却不得不读取整个10个GB的数据,造成极大的系统开销。在实际仿真测试中,测试数据很多时超过100个物理量,造成无形数据库系统资源耗费的现象更加严重。[0097]所述大对象存储模块具体实现如下:[0098](I)第一步,从分层抽点模块获得数据,判断是否为最底层数据,如果是,则采用大对象(BLOB)形式存储最底层数据。测试数据数据量巨大(相对于关系数据库),单个测试实验单个物理量数据量往往超过1000万条,甚至上亿;当测试数据进入关系数据库被关系化,由于传统数据库没有记录顺序的界定,因此需要增加时间戳列(文件形式存储测试数据不需要存储时间戳,而是通过数据的先后顺序+采样率来记载),使得数据量增加2-3倍。一个实际的测试数据OLAP系统存储多年的测试数据,即便采用分区表等技术,传统的关系数据库对于如此海里的数据仍然不能提供足够的数据支持。同时这些数据完全关系也没有必要。[0099](2)第二步,读取第一步产生的BLOB数据,进行统一规范处理,加上实验ID,以实验+物理量形式存储,采用二进制形式对测试数据进行特殊处理、压缩,以实验+物理量为单位存储于数据库的BLOB字段中,即每个实验的每个物理量都对应一个BL0B,以支持各种复杂的用户查询。由于树形分层存储模式最大的数据量位于树的叶子节点,即最底层,因此对于最底层数据采用大对象(BLOB)形式存储,原始测试数据文件使用FTP或者BFILE形式存储以支持用户下载原始文件时全文件读取。在保存原始测试数据文件的前提下,抽取原始测试波形数据,以二进制文件形式进行单物理量再构造,数据存储在数据库的BLOB字段中,这样既可以消除记录关系化记载时同时存储的时间戳,降低存储空间;每个BLOB对应一个实验的一个物理量,消除了同一时间戳多个物理量同时存储带来的读取代价。第二步得到以实验+物理量为单位存储于数据库的BLOB字段中的最底层分层抽点数据[0100](3)第三步,读取第二步处理结果数据,做偏移量统一处理,在数据库访问中,完全抛弃传统关系数据库的索引+ROWID形式,而是采用二进制数据检索技术,实现起止点+偏移量(OFFSET)的访问方式,提高查询效率。最终得到以起止点+偏移量(OFFSET)存在的底层分层抽点数据。[0101]测试用例与测试文档管理模块[0102]文档管理模块,读取数据接口模块产生的文档数据,实现测试用例与测试文档管理模块实现全过程文档管理,包括测试用例、测试结果、任务书、需求分析报告、阶段验收报告、最终验收报告、线路图、用户手册等,实现版本控制,产生文档数据供综合查询模块调用;[0103]数据综合分析模块[0104]数据综合分析模块读取文档管理模块产生的文档数据以及索引组织表模块、大对象存储模块的测试数据,为用户通过型号名称、版本号和关键字检索测试用例及测试结果功能,实现集中、统一的多角度、多功能、可对比的图形化用户查询界面,以及测试用例、测试结果高度共享,确保用户更为便捷的对比来自各五个测试平台的仿真数据,查询结果以报表形式输出或以多种数据格式导出。[0105]总之,本发明通过分层抽点、聚簇、索引组织表、大对象存储等一系列DBMS技术,降低并发OLAP中测试数据访问中的I/O代价,从而提高并发查询的处理能力。本发明在数据库管理系统中针对I/O性能和并行OLAP处理性能实现了并发查询处理优化技术,支持面向I/O性能来优化设置并发OLAP处理负载,从而提高了测试数据波形显示的可预期访问性能,实现了大规模并发OLAP的测试数据查询的加速处理。[0106]本发明未详细阐述部分属于本领域技术人员的公知技术。[0107]以上对本发明所提供的面向并发OLAP的测试数据分层聚簇查询处理方法进行了详细的说明。对本领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。【权利要求】1.一种面向并发OLAP的测试数据分层聚簇查询处理系统,其特征在于包括:数据接口模块、分层抽点模块、聚簇存储模块、索引组织表模块、大对象存储模块、文档管理模块和综合查询模块;数据接口模块,建立与外部的测试部分的数据接口,接收上述外部测试部分产生测试数据,建立Oracle镜像,实现定时读取上述外部测试部分产生的测试数据,存储于Oracle数据库服务器,供分层抽点模块和文档管理模块调用;分层抽点模块,读取数据接口模块产生的测试数据,其进行分层的CUBE计算,生成树形的数据层次结构,用户实际向系统发出查询请求时,系统由分层数据结构树根部开始检索,向叶子端逐层访问,分层抽点模块生成分层数据供聚簇存储模块调用;聚簇存储模块,读取分层抽点模块产生的分层数据,对分层数据采用聚簇的形式存储,以实验ID和时间戳两个属性列为聚簇因子存储曲线数据,控制数据存储位置,生成聚簇数据供索引组织表模块调用;索引组织表模块,读取分层抽点模块、聚簇存储模块产生的分层数据,调用关系数据库索引组织表函数,采用索引组织表的形式存储,将分层抽点数据转化成索引组织表形式,本模块所生成的索引组织表存储数据供综合查询模块调用;大对象存储模块,读取分层抽点模块、聚簇存储模块产生的最底层数据采用大对象(BLOB)形式存储,以实验和物理量为单位存储于数据库的BLOB字段中,以支持各种复杂的用户查询,每个BLOB对应一个实验的一个物理量,在用户对本系统访问中,采用二进制数据检索技术,实现起止点+偏移量(OFFSET)的访问方式;大对象存储的BLOB产生数据供综合查询模块调用;文档管理模块,读取数据接口模块产生的文档数据,实现测试用例与测试文档管理模块实现全过程文档管理,所述全过程文档管理包括测试用例、测试结果、任务书、需求分析报告、阶段验收报告、最终验收报告、线路图、用户手册,实现版本控制,产生文档数据供综合查询模块调用;综合查询模块,读取文档管理模块产生的文档数据以及索引组织表模块、大对象存储模块的测试数据,该模块的技术特征为用户通过型号名称、版本号和关键字检索测试用例及测试结果功能,为用户提供一个基于关系数据、测试数据、文档数据三类数据混合查询的查询平台,查询结果以报表形式输出或以多种数据格式导出。2.根据权利要求1所述的一种面向并发OLAP的测试数据分层聚簇查询处理系统,其特征在于:所述分层抽点模块具体实现如下:(1)第一步,从数据接口模块取得仿真数据,对仿真数据进行分层的CUBE计算根据每个实验的采集数据量,自动计算出需要分层的层数以及每层的抽点率,所得分层层数和抽点率供分层模块调用相应的抽点算法进行分层处理;(2)第二步,根据第一步的分层的层数以及每层的抽点率,,生成树形的数据层次结构;树的最底层,即叶子节点,存放全部真实仿真数据;其他层依次用树形分层算法以子层抽点的精度的存储子层的近似仿真数据,即一定数量的时间戳相邻的仿真数据,取最大值和最小值存储于父层;实际系统执行时用户查询由树根部向叶子端逐层访问,每次读取的数据量不超过2000个,所得分层结构供平滑处理模块调用;(3)第三步,根据第二步的分层结构,采用OLAP计算方法,对统一规范的数据进行分层的CUBE计算,进行平滑处理,平滑处理算法首先判断该段数据的趋势,即:上升,下降或平缓,根据趋势,调整最大值、最小值的时间戳取值,以得到相对平滑曲线,最终输出平滑的分层抽点数据。3.根据权利要求1所述的一种面向并发OLAP的测试数据分层聚簇查询处理系统,其特征在于:所述聚簇存储模块具体实现如下:(1)第一步,从分层抽点模块获得数据,判断是否进行聚簇处理。通过采样,根据采样数据,判断实验是否连续,判断结果供第二步调用;(2)第二步,根据第一步的判断结果是否进行聚簇处理,如果是,则采用聚簇的形式存储测试曲线数据,得到以聚簇形式存储的分层结构数据,供索引组织表模块和大对象模块调用。4.根据权利要求1所述的一种面向并发OLAP的测试数据分层聚簇查询处理系统,其持征在于:所述索引组织表存储模块具体实现如下:(1)第一步,从分层抽点模块获得数据,判断是否为最底层数据,如果否,则采用调用算法调整测试数据的存储方式,抽取传统同一实验同一时间戳同时多个物理量的形式的存储结构,将测试数据按照实验+单个物理量为单位进行存储,同一实验的多个物理量之间存储联系不再存在,而是通过数据库主外键形式保持逻辑联系,得到以单个物理量为单位的存储数据供第二步调用;(2)第二步,清除原表中数据,读取第一步以单个物理量为单位的存储数据,调用关系数据库固有的索引组织标存储函数,导入第一步处理结果,最终得到以索引组织表形式存在的分层抽点数据。5.根据权利要求1所述的一种面向并发OLAP的测试数据分层聚簇查询处理系统,其特征在于:所述大对象存储模块具体实现如下:(1)第一步,从分层抽点模块获得数据,判断是否为最底层数据,如果是,则采用大对象(BLOB)形式存储最底层数据。创建表,该表带有BLOB字段,逐个物理量将最底层数据按照时间戳顺序,依次导入到BLOB字段中,得到以每个物理量为单位的BLOB数据;(2)第二步,读取第一步产生的BLOB数据,进行统一规范处理,为每个BLOB加上相应的实验ID,以实验和物理量形式存储;第二步得到以实验+物理量为单位存储于数据库的BLOB字段中的最底层分层抽点数据;(3)第三步,读取第二步处理结果数据,做偏移量统一处理,在用户对本系统访问中,采用二进制数据检索技术,实现起止点和偏移量(OFFSET)的访问方式,提高查询效率,最终得到以起止点+偏移量(OFFSET)存在的底层分层抽点数据。6.面向并发OLAP的测试数据分层聚簇查询处理方法,其特征在于实现步骤如下:(1)建立与外部构件库、快速软平台、全数字软平台、动态测试平台模块数据接口,接收外部五个测试平台产生测试数据,建立Oracle镜像,实现定时读取外部五个测试平台产生的测试数据,存储于Oracle数据库服务器,供分层抽点模块、文档管理模块调用;(2)经过接口模块产生的测试数据,由分层抽点模块对其进行分层的CUBE计算,生成树形的数据层次结构,实际系统执行时用户查询由树根部向叶子端逐层访问,降低读取海量曲线数据带来的磁盘与网络负载,生成分层数据;(3)聚簇存储模块读取分层抽点模块产生的分层数据,对分层数据采用聚簇的形式存储,以实验ID和时间戳为聚簇因子存储曲线数据,控制数据存储位置,生成聚簇数据;(4)索引组织表模块调用聚簇存储模块产生的分层数据,调用关系数据库固有的索引组织标存储函数,最终得到以索引组织表形式存在的分层抽点数据;(5)通过大对象存储模块读取聚簇存储模块产生的最底层数据,采用大对象(BLOB)形式存储,以实验+物理量为单位存储于数据库的BLOB字段中,每个BLOB对应一个实验的一个物理量,在用户访问本系统时,采用二进制数据检索技术,通过父层起始点时间戳以及每个数据存储单位的大小,计算出起始点的偏移量(OFFSET);通过父层起始点时间戳、读取的时间长度每个数据存储单位的大小,计算出读取终点的偏移量(OFFSET),大对象存储的BLOB产生数据供综合查询模块调用;(6)通过文档管理模块读取数据接口模块产生的文档数据,实现测试用例与测试文档管理模块实现全过程文档管理,包括测试用例、测试结果、任务书、需求分析报告、阶段验收报告、最终验收报告、线路图、用户手册,实现版本控制,产生文档数据供综合查询模块调用;(7)用户通过综合查询模块读取文档管理模块产生的文档数据以及索引组织表模块、大对象存储模块的测试数据,为用户通过型号名称、版本号和关键字检索测试用例及测试结果功能,为用户提供一个基于关系数据、测试数据、文档数据三类数据混合查询的查询平台。【文档编号】G06F17/30GK103473260SQ201310256140【公开日】2013年12月25日申请日期:2013年6月25日优先权日:2013年6月25日【发明者】郭尚升,杨孟飞,陈朝晖,党纪红,王振华,关小川,李博申请人:北京控制工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1