APP下载

基于分布式数据库的海洋动力环境数据云存储

2017-05-10张玉娟史绍雨刘桂艳

海洋预报 2017年2期
关键词:分片中间件时空

张玉娟,史绍雨,孙 晶,刘桂艳,艾 波

基于分布式数据库的海洋动力环境数据云存储

张玉娟1,史绍雨2,孙 晶3,刘桂艳4,艾 波1

(1.山东科技大学海岛(礁)测绘技术国家测绘局重点实验室,山东青岛266590;2.国家测绘地理信息局卫星测绘应用中心,北京100048;3.中国矿业大学环境与测绘学院,江苏徐州221116;4.国家海洋局北海预报中心,山东青岛266061)

针对海洋动力环境数据的时空特征,提出了基于分布式数据库的云存储技术,设计了分布式管理方案以及相应的时空分片方案和索引机制,实现了数据存储的物理分布性、逻辑整体性和节点自治性,显著提高了数据的查询效率。以南海区域40 a海洋动力环境数据为例进行波高-周期散布图统计,耗时由集中式文件存储方式的2 min缩短至云存储方式的10 s以内。

海洋动力环境数据;云存储;分布式数据库;分片方案;时空索引

1 引言

随着海洋科学技术的进步,卫星遥感、航空摄影测量、台站浮标观测、超声波无线通信等高新监测技术广泛应用,数据监测种类、数据维度不断丰富,更新速度不断加快,造成海洋数据快速增长,呈现出大数据的4V特征——体量大、类型杂、时效强、潜在价值大等[1-2]。海洋大数据为海洋现象的分析研究提供了强有力的数据支持,也在数据的存储管理、安全性维护、高效应用等方面面临严峻挑战。

海洋动力环境数据是对海面风场、流场、海浪等动力现象进行描述的数据,当前主要通过NetCDF等文件格式进行存储和交换,该格式具有自描述性、高可用性和平台无关性,适用于海洋动力环境数据的网格化、多维、多变量等特点。然而,这种集中式文件存储管理方式也面临诸多局限:安全性较低,损坏不易恢复;共享性差,冗余度高;管理效率低,数据查询检索困难;进而也导致了数据的利用效率低,响应效率不高的现状[3]。

海洋动力环境大数据的有效管理是应用的基础,传统的集中式文件存储方式已经无法满足大数据的高效管理和分析需求。针对上述问题,本文提出了一种基于分布式数据库的大数据云存储技术,利用分布式数据库的物理分布性、逻辑整体性等特点,实现了海洋动力环境数据的高效存储和管理。结合海洋动力环境数据的时间、空间和属性特征,论文研究设计了云存储管理、时空分片和时空索引等方案,并借助开源的MySQL关系型数据库、MyCat中间件等进行系统搭建。本文以南海区域40 a海洋动力环境数据为例对技术进行了验证,与传统集中式文件存储方式相比,利用本文提出的云存储方案进行波高-周期散布图统计,数据查询效率得到了显著提升。

2 分布式云存储方案设计

云存储是通过集群应用、网格技术、分布式技术等将网络中的存储设备整合起来,其中分布式存储管理是云存储的基础与核心管理部分[4-5]。本文采用分布式存储机制,将分布式数据库技术应用到云存储中,作为底层基础支撑云存储实现数据存储和业务访问服务。

分布式数据库的关键技术是在多个数据库实例之间实现对SQL语句的解析、路由以及事务处理等任务。若通过应用层实现,将会加大应用的复杂程度和数据库的维护难度。而通过中间件的方式可以实现对多个数据库实例的整合,对内满足分布式数据库的数据切分、读写分离、负载均衡等要求,对外提供一个整合后的逻辑数据库的接口,降低了应用层对分布式数据库直接操作的复杂度和不安全性。

根据分布式云存储的分布式特征,本文设计了云存储总体方案(见图1),由数据库中间件和多个数据库实例搭建,并为用户提供统一的服务应用接口。在云端,论文选用开源的MySQL数据库作为底层数据库平台、MyCat作为中间件进行搭建。方案的工作流程为:应用通过云端提供的接口发送数据库请求,MyCat负责接收请求并将数据库的执行结果通过接口反馈给应用。此外,为提高整个流程的效率,本文通过MyCat设计了混合分片方案,并为数据库设计时空索引方案进行了优化。

图1 云存储总体方案

图2 分布式云存储架构

作为云存储的基础和核心,分布式数据库的架构设计是云存储总体方案的主体部分。结合云存储概念,本文为分布式数据库设计了3层架构,以实现海洋动力环境数据的高效存储和读取,提高存储系统的可扩展性、安全性和可维护性。架构见图2。

第一层为应用层,主要负责提供应用与数据库中间件之间的访问接口,是用户连接、访问分布式数据库的主要途径。

第二层为中间件层,主要担负数据库实例与应用之间数据交换,同时控制着分片数据在各数据库实例之间的存储位置。中间件通过应用连接池接收到应用层发送的SQL语句后,先对其进行解析,获得表名、字段等信息,经优化后传给路由组件;路由组件通过在规则池里查找相关的规则,进行相应的运算,并将运算后的语句发送给执行组件;执行组件从数据库连接池中获取数据库实例的连接,将接收到的语句发送到相应的数据库实例中,当执行语句收到的语句中涉及全局序列号,此时需要序列号生成组件提供全局唯一的序列号,当执行的事务跨多个数据库实例时,需要通过事务管理组件协调事务[6];当数据库实例执行语句结束后,执行组件将所有实例的执行结果提交给结果处理组件,处理组件将各实例的运算结果进行整合,反馈给应用层。

第三层为数据库层,是分布式数据库中的数据存储位置,在接收到了中间件传来的数据SQL执行命令后,各数据库实例同时进行执行,并将执行的结果返回给中间件层。

3 分片方案设计

分片方案是提高云存储方案性能的重要环节,是分布式数据库的关键问题之一。分片必须保证数据的完备性、不相交性、可重构性,分片的质量直接决定分布式数据库的查询效率[7]。传统的分片方案大多针对一维数据进行,利用Hash、Round-Robin等方法实现[8]。由于海洋动力环境数据具有时空性和多维性,传统方法易造成部分节点负载超重,降低查询性能[9]。因此,本文结合海洋动力环境数据的特性以及不同业务需求,设计了基于属性的垂直分片、基于时间的水平分片和基于空间的水平分片相嵌套的混合分片方式,均衡分配各节点负载,弥补单一分片方式的不足。

3.1 基于属性的垂直分片设计方案

垂直分片是按照属性结合将关系分成不相交的子集,在垂直方向上对全局关系进行的投影操作,切分后的每个片段包含原表的部分属性及其主码[10],其目的是根据应用需求正确划分属性组。使用垂直分片方式可以将耦合度较小的字段进行切分,切分成适应于不同业务的逻辑片段,在垂直方向上减小单表体积。海洋动力环境数据包含多个属性,表结构字段多、结构复杂,又因其时间序列长、空间范围大等特性,导致单表体积庞大,影响查询效率。因此,本文采用先垂直分片,在纵向上将数据表切分成几个逻辑单表,再对每个逻辑单表进行水平切分,并存储到物理设备中。

首先,根据属性关联度将海洋动力环境数据分成几个子关系,每子关系满足相应业务需求。考虑到数据的时空属性,将表中表征空间位置的经纬度及时间属性作为每个逻辑片段的主码保存在每个子关系中。根据划分的子关系进行垂直分片,切分得到的每个逻辑片段将保存与原表属性相对应数据记录,分片规则见图3。

图3 垂直分片方案

数据表经垂直分片得到的每个逻辑片段的字段减少、结构简单化,在分布式数据库执行特定任务时,如查询有效波高值(hs字段),只需在ScatterGraph表中进行查询,相比在庞大的原数据表中查询速度明显提高。垂直分片虽然缩短了每个逻辑表的宽度,但由于海洋数据在时间、空间的范围较大,元组数量仍然很大。因此,本文通过水平切分的方法将数据表的长度进行了切分。

3.2 基于时间的水平分片方案

水平分片是将数据表的所有元组按照一定的约束条件划分成众多逻辑片段,每个逻辑片段互不相交。论文提出的水平分片是在垂直分片的基础上进行的,解决单一业务表数据量过于庞大带来的读写效率低、节点负载不均衡问题。业务的数据需求主要侧重于两方面,单个空间点长时间序列的数据查询和空间范围内大规模空间点的数据查询。基于这两方面,论文分别设计了基于时间和空间的水平分片方案。首先介绍基于时间的水平分片方案。

在垂直分片基础上,通过对逻辑表的时间制定规则进行水平切分,即基于时间的水平分片。以垂直切分后得到的ScatterGraph表为例,该表主要是用作实现有效波高-跨零周期散布图的绘制。绘制散布图需要的数据是某一空间点在指定连续时间范围内所有的有效波高和跨零周期属性数据,应用系统再根据数据统计结果进行绘制。

根据以上情况,将ScatterGraph表中的datatime字段(表征时间的字段)作为分片谓词制定分片条件进行水平切分。水平分片可视为关系的选择,用选择操作σ表示。将ScatterGraph表定义为关系R,datatime为选择条件Q,也叫作分片谓词。为了分片均匀以及计算方便,首先对分片谓词Q做预处理,根据数据的时间顺序序列为每条记录创建一个整型的标识码ID,并将其作为新的分片谓词q代替之前的Q。分片条件表示为:

式中:N表示节点个数,C∈(0,1,2……)。R1,R2,……,RN为切分后的片段。该分片条件满足Ri∩Rj=∅(i≠j),R=R1∪R2∪……∪RN,遵循分片的必须原则:完备性、可重构性、不相交性。分片结果如图4所示。

通过此规则将所有记录按照时间序列均匀切分到不同节点上,经过切分后同一时刻的所有空间点的数据记录保存在同一个节点上,保证数据在时间维度方面节点间的均匀分布,针对侧重于单个空间点时间表达的业务来说,实现了分布式资源的充分利用,提高了运行效率。

图4 基于时间的水平分片

3.3 基于空间的水平分片方案

基于时间的分片方案实现的是数据在时间上的均匀分配,相同时刻的所有空间点的数据保存在同一节点。当查询任务涉及到较大空间范围时,同时刻的数据过度集中于一个节点,该方案难以将任务均衡分配,在浪费分布式资源的同时也导致了服务器节点的负载倾斜。为此,本文为侧重于空间表达的数据设计了基于空间的分片方案。下面以CurSpeedDir表为例进行说明。

CurSpeedDir表是海洋动力环境数据经垂直分片后的一个逻辑分片,主要用来实现流速流向数据的存储,不仅要求数据的时间连续性,同时还要求空间连续性。论文针对大空间范围的可视化表达业务需求,以空间位置为基准进行分片,实现所有空间位置点的相关记录均衡分配到各个节点。

海洋动力环境数据的空间位置需要经度和纬度定义,则分片条件利用这两个属性作为分片属性来制定。海洋动力环境数据呈格网式分布,网格的分辨率定义为Resolution,Lonmax和Lonmin分别表示空间范围的最大、最小经度值;Lat表示待分配数据点的纬度值,Latmax和Latmin分别表示空间范围的最大、最小纬度值;Num是根据格网的行列数确定的空间点编号。分片条件如下:

图5 基于空间的水平分片

谓词集Pr={P1:Num=C×N+1,P2:Num=C×N+ 2,…,PN:Num=C×N+N},C∈(0,1,2,……),N为节点总数,谓词集具有完备性和最小性。

与基于时间分片一样,关系R通过谓词集Pr筛选得到水平切分片段R1,R2,……,RN,满足分片的3大原则:完备性、可重构性、不相交性。切分结果见图5。

通过上述分片条件计算,可实现根据空间位置将数据均匀分配到各个节点,一个位置点的所有时刻数据记录存储在同一节点上。在实现流速流向动态可视化表达时,需要查询空间范围内指定时间序列的数据。基于空间分片后的查询目标结果集均匀分布于各个节点间,对于大范围的查询任务来说,各节点并行查询,充分利用各节点性能。

经过水平分片后,在性能优化的同时,数据库内部结构更加复杂,能够更快的定位到所需数据记录是进一步提高分布式云管理的关键问题。为此,本文设计了时空索引机制,来实现数据的快速定位,进一步提高数据的查询速率。

4 时空索引方案设计

通过优化的分片方案进行分布式管理在一定程度上提高了数据的读取速度,但是数据量基数大,筛选满足条件的数据仍需要耗费较长时间。时间、空间字段是数据表的主键,时空数据需要主键信息在数据集中定位。为进一步提高数据读取效率,本文提出了基于MySQL分布式云存储的时空索引机制,即在分布式数据库中对数据的时间、空间属性字段建立复合索引,以达到缩小查询范围、快速定位的目的。

数据库索引机制的目的是通过创建属性字段的有序索引表,以最快的方式定位到满足查询条件的数据行。在执行查询命令时,首先通过索引表筛选,排除不相关数据,进而利用索引表中保存的物理地址直接定位,节省查询时间。在云存储管理方案下,对各个节点的数据库创建索引,在保证分布式并行处理的基础上提高了查询效率,查询流程见图6。

海洋动力环境数据在时空上连续,经分片存储后,在分布数据库中呈离散无序状态。考虑到复合索引的“最左前缀”的特性和数据的时空性,论文为数据库设计了顺序为时间、纬度和经度的复合索引。查询过程中,通过时间、空间索引逐步筛选,最终利用筛选结果提供的物理地址值定位到数据表,获取相应的数据。索引表结构简单、数据量小,遍历速度快,对整体查询速度的提升有重要意义。

5 效率对比分析

本文以海浪数据的波高-周期散布图统计为例,对比分析NetCDF文件存储方式和云存储方式进行大数据量查询统计的效率。波高-周期散布图是一种长时间序列的海浪特征分析方法,需要获取指定区域在连续时间范围内所有的有效波高值和跨零周期值,并对这些数据进行分布区间统计,该图可以反映作为随机量的波高和周期出现的联合概率分布(见图7)。

实验数据为南海北部海域的海面风场、流场和海浪数据,包括1 min平均风速、风向、表层流速、表层流向、有效波高和跨零周期等37个要素变量,空间分辨率为1/4°,时间跨度为40 a,时间分辨率为1 h。将“空间位置+时刻”定义为一个时空点,该时空范围内约7.5亿个时空点,每个时空点包含37个要素变量值。

文件存储方式通过NetCDF格式对实验数据进行存储,按年份分为40个文件,总数据量约为120G。进行长时间序列散布图统计时,数据需要从多个文件中获取,文件频繁的打开、读取、关闭的过程耗时较长,增加系统响应时间,影响用户体验。此外,文件读取速度易受到多种因素影响,包括计算机性能、计算机并行的程序数量、内存占有量等,读取效率不稳定。

图6 时空索引机制

图7 波高-周期散布图统计

图8 不同时间范围长度数据的统计效率对比

与文件管理方式不同,分布式云存储方式的数据流传输过程为:应用将查询指令发送给中间件,根据分片方案中间件将任务合理分配给各个节点执行,执行结果通过中间件返回给应用。分布式数据库中多节点并行工作,查询速度快。但是,所有任务都需要经过中间件进行任务分配和结果整合,会耗费一定的时间。对于查询数据量小的任务来说,中间件的任务分配与结果整合工作所用时间的比重较大,与文件系统管理方式效率相当。

对以上两种方式,按1~40 a不同时间范围进行散布图统计测试,得到的时间范围长度(单位:a)与数据统计耗时(单位:s)的对比折线图(见图8)。两种方式的软硬件测试环境如下:

(1)集中式NetCDF文件存储方式:Intel Core(TM)i5-5200 CPU@2.20 GHz,8 G内存,1 T硬盘,Windows 7专业版64位操作系统;

(2)分布式云存储方式:5台Vmware建立的虚拟机,每个虚拟机的配置如下:4 G内存,320 G硬盘,5台虚拟机共用物理机的CPU为Intel Xeon(R)E7440 4核,Linux操作系统。

由测试结果对比分析可知,通过集中式文件系统管理方式进行小数据量的统计耗时较短,但耗时随着统计数据量的增大而增加,并且增长速率不断增大。分布式云存储方式的效率变化较为平稳,在数据量小的情况下与文件管理方式的效率相差无几,而对大数据量的统计效率明显优于文件管理方式。对于海洋动力环境数据,数据量大是其突出特征,且数据更新速度快、数据量增长快,分布式云存储方式将更加适用于大数据的分析和利用。

6 结论

当前海洋动力环境数据凸显出海量、高维、时空动态性等特征,传统的集中式文件管理方式已经不能满足快速增长的数据分析和信息服务需求。为保证数据的安全性、可维护性和可扩展性,提升数据的管理和利用效率,本文研究并搭建了基于MySQL关系型数据库的分布式云存储系统,实现了海量海洋动力环境数据的云管理,并利用MyCat中间件实现与应用程序的关联。通过云存储方式和文件存储方式在数据查询统计中的性能对比分析,进一步验证了云存储方式在海洋动力环境大数据管理方面的效率优势。

[1]王辉,刘娜,逄仁波,等.全球海洋预报与科学大数据[J].科学通报,2015,60(5-6):479-484.

[2]李德仁,李熙.论夜光遥感数据挖掘[J].测绘学报,2015,44(6): 591-601.

[3]黄冬梅,杜艳玲,贺琪.混合云存储中海洋大数据迁移算法的研究[J].计算机研究与发展,2014,51(1):199-205.

[4]桂兵祥,何健.基于高性能云的分布式数据挖掘方法[J].计算机工程,2010,36(5):76-78.

[5]秦秀磊,张文博,魏峻,等.云计算环境下分布式缓存技术的现状与挑战[J].软件学报,2013,24(1):50-66.

[6]裴欧亚,刘文洁,李战怀,等.一种面向海量分布式数据库的嵌套查询策略[J].华东师范大学学报(自然科学版),2014,(5):271-280.

[7]朱欣焰,陈静,向隆刚,等.分布式空间数据集成与查询优化技术[M].北京:测绘出版社,2013.

[8]朱欣焰,周春辉,呙维.分布式空间数据分片与跨边界拓扑连接优化方法[J].软件学报,2011,22(2):269-284.

[9]蒋勇,谭怀亮,李光文.基于XML中间件的分布式异构数据库的数据分片策略研究[J].计算机应用与软件,2009,26(11):144-146.

[10]李川.应用半连接的分布式数据库查询优化算法[J].重庆理工大学学报(自然科学),2013,27(11):74-77.

Cloud storage of ocean dynamics environment data

ZHANG Yu-juan1,SHI Shao-yu2,SUN Jing3,LIU Gui-yan4,AI Bo1

(1.Key Laboratory of Surveying and Mapping Technology on Island and Reef,State Bureau of Surveying and Mapping,Shandong University of Science and Technology,Qingdao 266590 China;2.Satellite Surveying and Mapping Application Center,NASG,Beijing 100048 China; 3.School of Environment Science and Spatial Informatics,China University of Mining and Technology,Xuzhou 221116 China; 4.North China Sea Ocean Forecasting Center of State Oceanic Administration,Qingdao 266061 China)

Considering spatial-temporal characteristics of the ocean dynamics environment data,the paper presents a cloud data management based on the distributed database,including a distributed spatial-temporal data sharding schema and a spatial-temporal index.The cloud management realizes physical distributed storage and logical integral structure of data,which improves the efficiency of data retrieval.Taking an example of ocean dynamics environment data in the South China Sea,to compute wave height-period scatter graph of 40 years,the cloud storage system takes less than 10 seconds while the files system takes about 2 minutes.

ocean dynamics environment data;cloud storage;distributed database;data sharing;spatialtemporal index

TP39;P7

A

1003-0239(2017)02-0072-08

10.11737/j.issn.1003-0239.2017.02.010

2016-06-21;

2016-08-25。

国家自然科学基金(41401529,41271394);测绘公益性行业科研专项(201512034);山东省高等学校科技计划项目(J15LH01)。

张玉娟(1991-),女,硕士在读,从事海洋地理信息系统研究。E-mail:zhangyujuan199109@126.com

艾波(1979-),男,副教授,博士,从事海洋时空分析和动态可视化研究。E-mail:aibogis@163.com

猜你喜欢

分片中间件时空
上下分片與詞的時空佈局
跨越时空的相遇
降低跨分片交易回滚概率的多轮验证方案
镜中的时空穿梭
分片光滑边值问题的再生核方法
基于模糊二分查找的帧分片算法设计与实现
玩一次时空大“穿越”
RFID中间件技术及其应用研究
基于Android 平台的OSGi 架构中间件的研究与应用
时空之门