APP下载

基于数据库集群的飞参数据分布存储技术研究

2015-05-04张荣博

沈阳航空航天大学学报 2015年2期
关键词:数据表分区集群

张荣博,乔 红,徐 蕾

(沈阳航空航天大学 计算机学院,沈阳 110136)



基于数据库集群的飞参数据分布存储技术研究

张荣博,乔 红,徐 蕾

(沈阳航空航天大学 计算机学院,沈阳 110136)

针对飞参数据量快速增加及用于查询和分析的数据使用特点,提出采用数据库集群存储飞参数据的分布式数据存储方案;提出一种按照飞机故障分析的数据使用特征进行数据分区的飞参数据划分方法。实验结果显示,这种存储方案缩短了查询响应时间。结论是利用数据库集群存储飞参数据,支持对飞参数据的并行访问,飞参数据的存储扩充容易;按照故障分析属性的数据分区策略提高了故障分析时飞参数据的查询效率。

飞参数据;数据库集群;分布存储;分区;故障分析

飞参数据是指飞参记录系统记录下的飞机飞行参数[1],飞参记录系统的快速发展使得飞参数据量呈爆炸式的增长[2],飞参地面处理软件中利用数据文件存储和管理飞参数据的方式已经不能满足对海量飞参数据进行数据分析和查询的应用需求。飞参数据很多用于飞机的故障诊断、健康管理及飞行训练[3],主要使用方式是数据查询和分析,因此飞参数据的存储方式和查询效率是设计飞参数据分析系统所要考虑的最重要因素之一。采用数据库集群技术存储飞参数据可以适应数据快速增长的扩展性和数据高效率查询的要求[4]。

数据库集群节点中的数据分布主要有划分和复制两种方式[5]。飞参数据存储采用划分方式,即数据是分区的且只有一个副本。数据分区方法又分为水平分区和垂直分区两种[6],水平分区[7]是对数据库关系表进行选择操作,水平分区方法通常是按数据量或以时间段作为主键进行分区;Hassan I.Abdalla在文献[8]中介绍了一种利用查询频率和数据访问模式信息将数据进行水平分区的方法。数据的水平分区具有数据划分方法简单,数据查询效率高,支持并行操作等优点。

商用数据库具有最多列数限制,当数据属性个数超过这一限制时,需要对数据库中的数据表进行垂直分区。垂直分区是通过投影操作把关系的属性分为若干组,每个垂直分区只保持关系的部分属性[9]。Ali A.Amer[10]提出一种对数据库集群的数据表做静态垂直分区的方案,将集群中的数据库服务器根据用户的通讯成本进行分组,通讯成本低的用户和服务器构成一组,然后根据用户对数据属性的访问量做数据属性垂直分区;E.S.Abuelyaman[11]提出根据数据访问相关性统计进行数据属性分区,当数据访问的行为特征变化时,数据属性的分区方案也随之变化。

数据库集群中存储的数据在做了水平或垂直分区之后,若数据的访问能够比较均匀地分布在集群的不同服务器节点上,将获得高效的数据访问速度;反之会导致部分节点负载过大,数据传输集中,限制查询响应时间[12]。飞参数据结构规范、关联度大,在数据查询时,为减少对数据库集群中不同数据分区的访问量,针对飞参数据的关联性和使用特征,提出将飞参数据按照飞机故障分析的数据使用特征进行数据分区的分布式数据存储方案。实验结果表明,该数据分布存储方案一定程度地减轻了对飞参数据多分区访问导致的效率降低的问题。

1 飞参数据分布存储方案

在飞机飞行过程中,飞参记录系统通常每20毫秒记录一组数据,其中包括飞机的航向姿态系统、飞行控制系统、惯性导航系统、发动机、仪表、燃油、液压、电源等系统[13]中的几百个飞行参数,这些数据以飞参采集时间为索引,飞机的一次飞行任务将产生几十万甚至百万组数据记录。利用这些数据进行飞机的故障分析时,需要对一段时间内飞参数据进行分析,或对不同时期的飞参做对比分析,若将这些数据存储在一个数据库表中,则不能支持并行查询,若提取数据的时间跨度大,数据查询时间较长。且随着飞参数据量的不断增大存储量需要不断扩充。采用数据库集群技术可以很好解决上述问题。

1.1 数据库集群系统结构

数据库集群采用基于中间件的无共享数据体系结构[14],由集群中间件和多个独立的数据库服务器节点构成,节点间通过网络互联,集群中间件向用户提供统一的系统映像。数据库集群体系结构如图1所示。

图1 飞参数据库集群体系结构

飞参数据按照数据的分区策略进行了垂直和水平分区,集群数据库服务器中存放一个或者多个分区数据,数据的分区存储位置对用户是透明的,用户对飞参数据的查询请求统一地由集群中间件进行解析并进行数据查询任务的分配;集群中的数据库服务器节点可将查询结果直接返回到提出请求的用户节点中,进而缓解集群中间件的数据传输量。

集群中间件进行查询任务分配时,根据服务器实际的查询负载做服务器中的负载均衡[15]。在每个服务器中记录最近时间段内服务器中数据查询访问量,若当前查询任务所在服务器的查询访问量超过设定的阈值,则将当前访问的数据分区移动到最近具有低访问量且存储余量可以容纳新的数据分区的服务器节点中,同时修改集群中间件中的数据映像。

随着飞参数据的增加,当集群中数据库服务器节点的数据存储量达到饱和时,可以在集群中增加新的数据库服务器节点,这种方式的存储扩充只需要在集群中间件中增加新节点数据存储的映像,便可实现数据存储的扩展性需求。

1.2 数据分区方法

飞参数据具有数据属性多,数据量大的特点,利用数据库集群存储飞参数据时,需要在数据库集群节点中将飞参数据进行分区存储。采用水平和垂直分区两种方式对飞参数据进行划分。

飞参数据水平分区采用最少分区的原则,且保证飞机一次飞行的参数必须放在一个分区中;设商用数据库表可存储最大记录数为T,现有的飞参数据集为S,对S做水平分区算法如下:

1)k=1;Sk=Φ;Nk=0;//初始化分区计数为1,分区的数据集合Sk为空,Sk中元素个数为0;

2)while(S≠Φ){

3)在S中取出一架飞机一次飞行的飞行参数≥Sf;Nf=|Sf|;//Nf为集合Sf的基数

4)if(Nk+Nf

5)else {k=k+1;Sk=Sf;Nk=Nf;} // 构造一个新的分区;

6)}

7)获得k个分区S1,…,Sk;

上述算法将已有的飞参数据尽可能少地水平切分成k个分区,当需要加入一次新的飞行参数时,首先将增加的数据放在最后一个分区Sk中,若加入数据导致该分区的记录数据量超出限制,则生成一个新的分区存入新增加的数据。

对于飞参数据,若将所有数据属性直接作为数据库表的属性列比较简单,但实际上受数据库资源所限,商用数据库都有最大列数限制,并且列数太多,查询速度会变慢。对ORACLE数据库中数据表中属性列数量与数据访问速度之间关系的实验发现,当属性列大于一定值时(没有达到属性列的上限),对数据表的访问速度会降低。设数据库中数据表属性列数量限制阈值为T,当数据表属性列数量超过T时,需要对数据表进行垂直分区。

飞机故障分析是飞参数据主要的应用之一[2],在对飞参数据进行垂直分区时,一个故障分析所用到的相关属性最好分布在一个垂直分区中,会提高数据的查询效率。例如,设分析飞机故障F1和F2所需要的飞参属性集分别为F1={r1,1,r1,2,…,r1,m}和F2={r2,1,r2,2,…,r2,n},集合F1∩F2的基数值大于F1与其他故障属性集合交集的基数值,若集合F1∪F2的基数小于数据库表的属性列限制,则将集合F1∪F2中的属性分在一个垂直分区中。

即将故障分析所用到的属性尽可能少地分到不同的分区中。设需要分析的飞机故障属性集合构成线性表listF=(F1,F2,…,Fi,…,Fn),其中Fi(1

设飞参数据属性集合为R,数据属性个数为N,飞参数据属性的垂直分区算法如下:

1)初始化数据垂直分区计数k=1;第一个分区属性集合Sk=Φ;

2)while(listF!=Φ){

3)取故障表listF的第一个元素≥Fi;

4)Sk=Sk∪Fi;listF=listF-Fi

5)记录Sk中合并的故障属性集合数m=1;合并的故障标记pos[M]=i;

6)while(|Sk|

7)max=0;col=0;// 记录当前与Sk中属性交集最大的故障标记;

8)for(j=1,s=0;j≤n;j++)//查找与Sk中属性交集最大的故障标记;

9)if(Fj∈listF){

10)for(p=1;p≤m;p++)s=s+M[pos[p]][j];

11)if(s>max){ max=s;col=j;} // 更新当前与Sk中属性交集最大的故障标记;

12)}

13)if(col!=0){Sk=Sk∪Fcol;listF=listF-Fcol;}

14)}

15)if(listF!=Φ){R=R-Sk;k=k+1;Sk=Φ;}

16)}

17)if(|Sk|

18)R=R-Sk;//在属性集合去除上述过程中最后一个分区的属性。

19)s=|R|/T;

20)将R中剩余属性再平均分成s片

算法中,计算Sk中已有属性和新加入故障属性集Fj的共有属性个数时,是假设Fj与前面加入到Sk中的故障属性集(Fpos[p],1≤p≤m)的共有属性均不相同,否则,这种计算只是近似计算。

2 实验及结果分析

实现数据库集群的飞参数据分布存储方案以验证方案的有效性。数据库集群由一台服务器(曙光A840r-G)上搭建的三台虚拟机构成,虚拟机配置为:1核CPU、 3G内存、 80G硬盘、100Mbps网络带宽、Windows XP系统、Oracle 10g数据库系统;数据库中间件运行环境为:4核CPU、4G内存、80G硬盘、100Mbps网络带宽、Windows 7系统,客户端为三台普通PC机。

实验针对利用飞参数据完成飞机状态测评的应用需求,集群服务器中存储多次飞行的飞参数据,飞参数据属性为612个,仿真对10个常见飞机故障进行数据分析的数据查询请求,每个飞机故障涉及多个飞参属性,属性数量分布为{80,111,40,115,20,66,65,95,77,91},实验测试不同的数据存储方案对数据访问效率的影响程度。

(1)数据库中数据表属性列数量和数据访问速度之间关系的实验。在ORACLE数据库中建立n个属性列数量以20为单位依次递增的表,分别向每个表内插入100万条数据,记录所用时间。进行三次实验取其时间平均值,得出数据库表属性列数量与表操作所用的时间关系,结果如图2所示。结果表明,当数据库表属性列数据小于200时,数据操作时间与属性列增加近似呈线性关系,当数据库表属性列大于400时,操作时间会快速增加,因此在系统中设数据表属性列数阈值T=220。

图2 数据库表属性列数量与表数据插入时间关系

(2)数据垂直分区方案性能实验。基于上述数据库集群环境,对飞参数据进行分区,其中水平方向只分一个最大分区,垂直方向分别按照故障属性分区及等分分区的方法分成两个分区,在每个数据库服务器中放置一个经过分区的数据表;两种方法的仿真时间相同,在客户端按照等概率随机选择故障并按照故障查询条件对故障数据进行查询,系统仿真运行结束后,计算不同分区方案下读取一条数据记录所用的平均时间。实验结果如图3所示。结果表明当数据表中数据记录增加时,按照故障属性分区存储方案缩短了数据查询响应时间。

图3 两种数据分区方案中访问一条数据

(3)数据库集群中服务器数量对比实验。采用故障属性分区存储方案,在实验(2)中其他条件与方法不变的前提下,变更数据库集群中服务器数量,实验验证不同服务器数量对数据访问性能的影响。数据库集群中分别设置1个服务器(存储3个分区数据)、2个服务器(分别存储1个分区和2个分区)和3个服务器,比较不同环境下的数据访问性能,实验结果如图4所示。结果表明,服务器数量的增加,增加了数据的并行访问量,进而缩短了数据查询的响应时间,当数据表中数据记录量大时,效果更加明显。

图4 数据库集群中服务器数量对数据查询

(4)负载均衡性能对比实验。基于上述数据库集群环境,采用故障属性分区存储方案;初始时,利用数据复制的方法在集群的每个服务器中放置50个飞参数据分区,数据访问阈值设为每30分钟200次数据分区访问,定义客户端的一次故障查询为一个事务,由三个客户端并行地按照故障正态分布随机选择故障提出数据查询事务请求。图5给出加入负载均衡策略后数据查询的事务运行时间与无此策略时运行时间的对比,其中数据查询事务运行时间是多个客户端运行时间的平均值。结果表明若查询的事务量接近数据访问阈值时,数据迁移的代价使系统的性能并没有提高;随着数据查询事务量的增加,动态负载均衡策略能够平衡服务器中的查询负载,提高系统数据查询的整体效率。

图5 飞参数据查询中使用负载均衡方案性能对比

3 结语

飞参数据在飞机研制、试飞、训练、维护及事故调查等工作中起着非常重要的作用。本文针对海量飞参数据存储的扩展性需求与数据使用特点,提出利用数据库集群存储飞参数据的系统结构;针对飞参数据在飞机故障分析中的应用需求,提出了一种按照飞机故障分析的数据使用特征进行数据分区的分布式数据存储方案。实验结果表明,利用数据库集群存储飞参数据,在不同用户访问不同分区飞参数据时支持并行操作,飞参数据的存储扩充容易;按照故障属性的数据分区策略提高了故障分析时飞参数据的查询效率。

系统在设置数据库集群服务器数量时,只考虑了数据存储量对服务器数量的需求,没有进行大用户量的数据并行访问性能测试。因此集群服务器数量对比实验只在定性分析方面存在参考价值。

[1]Andrew Hill Eurocontrol.A flight data management concept[J].IEEE A & E SYSTEMS MAGAZINE,2004:11-16.

[2]曲建岭,唐昌盛,李万泉.飞参数据的应用研究现状及发展趋势[J].计测技术,2007,27(6):1-4.

[3]唐崇凯,曲建岭,高峰.飞参判据及其应用[J].计算机工程,2011,05:281-283.

[4]Narayanan S,Catalyurek U,Kurc T,et al.Applying database support for large scale data driven science in distributed environments.in:Proceedings of the Fourth International Work shop on Grid Computing.Los Alamitos:IEEE Computer Society,2003:141-148.

[5]王建行.数据存储技术在分布式数据库中的应用[J].科技信息,2010(26):224.

[6]Sanjay Agrawal,Vivek Narasayya,Beverly Yang.Integrating vertical and horizontal partitioning into automated physical database design.ACM SIGMOD,2004:1-58113-859-8/04/06.

[7]Abdalla H,Tounsi M,Marir F.Using a greedy-based approach for solving data allocation problem in a distributed environment[C].International Conference on Parallel and Distributed Processing Techniques and Applications(PDPTA′08),2008.

[8]Hassan I.Abdalla,Ali A.Amer.Dynamic horizontal fragmentation,replication and allocation model In DDBSs[C].IEEE International Conference on Information Technology and e-Services,2012:978-1-4673-1166-3/12.

[9]Shahidul Islam Khan,Dr.A.S.M.Latiful Hoque.A new technique for database fragmentation in distributed systems.International Journal of Computer Applications,2010:20-24.

[10]Ali A.Amer,Hassan I.Abdalla.An integrated design scheme for performance optimization in distributed environments[C].IEEE International Conference on Education and e-Learning Innovations,2012:978-1-4673-2225-6/12.

[11]Abuelyaman E S.An optimized scheme for vertical partitioning of a distributed database.Int[J].Journal of Computer Science & Network Security,2008,8(1):2008:310-316.

[12]Weihua Gong,Yuanzhen Wang.Load balancing of OLTP on heterogeneous database cluster[C].IEEE International Conference On Advanced Communication Technology,2006.

[13]卿立勇.基于飞行数据的飞机故障预测与故障诊断系统研究[D].南京:南京航空航天大学,2007.

[14]龚卫华.数据库集群系统的关键技术研究[D].武汉:华中科技大学,2006.

[15]Paul Werstein,Hailing Situ,Zhiyi Huang.Load balancing in a cluster computer[C].IEEE International Conference onParallel and Distributed Computing,Applications and Technologies(PDCAT′06),2006.

(责任编辑:刘划 英文审校:刘红江)

Research on flight data distributed storage based on the database cluster

ZHANG Rong-bo,QIAO Hong,XU Lei

(College of Computer Science,Shenyang Aerospace University,Shenyang 110136,China)

According to the flight data increasing rapidly and the feature of query and analysis,a distributed data storage scheme using database cluster to store flight data is proposed.A flight data partition method for data fragmentation is also put forward based on the data feature of the plane failure analysis.The experiment result shows that the scheme reduces the query time.In conclusion,using database cluster to store flight data supports the parallel access to the flight data,expands data storage easily;data partition method based on failure analysis feature improves the fight data query efficiency when doing failure analysis.

flight data;database cluster;distributed storage;data partition;failure analysis

2014-11-13

国家自然科学基金青年基金项目(项目编号:61303016)

张荣博(1978-),男,山东莱阳人,讲师,主要研究方向:信息安全技术,E-mail:zhangrb@sau.edu.cn。

2095-1248(2015)02-0075-05

TP391

A

10.3969/j.issn.2095-1248.2015.02.015

猜你喜欢

数据表分区集群
上海实施“分区封控”
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
海上小型无人机集群的反制装备需求与应对之策研究
基于列控工程数据表建立线路拓扑关系的研究
一种无人机集群发射回收装置的控制系统设计
浪莎 分区而治
Python与Spark集群在收费数据分析中的应用
勤快又呆萌的集群机器人
基于SAGA聚类分析的无功电压控制分区