沈飞飞,郭忠文,胡克勇
(中国海洋大学信息科学与工程学院, 山东 青岛 266100)
一种海洋环境数据存储模型设计与应用❋
沈飞飞,郭忠文,胡克勇
(中国海洋大学信息科学与工程学院, 山东 青岛 266100)
海洋环境数据种类繁多且数量巨大,多数以文档数据集形式存在,这使得海洋环境大规模数据的存储和访问变得困难。针对当前海洋环境大数据存储方法不足和编程访问的局限性,提出了一种面向应用编程的数据存储访问模型。该模型将文件数据模型结构信息映射到虚拟数据库中,提供基于SQL语法的访问接口,降低数据访问复杂度,提高软件编程效率。
海洋环境数据;数据存储;访问接口;SQL
随着科学技术的进步和人类对海洋认识的加深,海洋观测已然成为进行海洋科学研究重要的方式,其在海洋气候研究、海洋生态预测、海洋灾害预防等多方面都起到了重要作用[1]。目前,海洋观测已经形成从近岸到深海大洋关键海区的立体、连续、实时、多要素综合集成观测能力,其由不同类型感知平台组成立体监测体系,包括海洋数值模拟构成的研究分析平台,获取了大量海洋环境要素数据。典型应用如美国的整合海洋观测系统(IOOS)和大洋观测计划(OOI)[2]等。这些数据来源于不同的国家和调查项目,资料内容多样,涉及学科多,资料年限跨度较大,多数以文档形式存在,使得其数据格式异构,进行有效数据存储和检索困难。
目前,对文档形式海洋环境数据的存储组织方法包括2个方向。一个是采用传统的关系数据库模型,抽取数据实体和实体间关系,建立相应的数据存储表,将海洋数据分类加载到相应的数据库系统[3-6];一个是采用基于文件的通用数据模型(Common Data Model)[7],建立相应的数据管理服务器,提供一致的数据访问协议,便于不同的客户端进行访问,例如OPeNDAP(Open Data Access Protocal)[8]。前者需要将大规模海洋科学数据集分类加载至数据库系统中,这将产生巨大的时间、空间资源消耗,降低了存储效率,同时会造成冗余数据列,缺乏对海量数据的快速访问能力,不能有效利用现有并行策略进行数据处理,导致信息系统在大数据量处理上性能不高[9-10]。文献[11]分析了对象关系数据库模型和通用数据模型对海洋环境数据的存储和查询效率,在进行大规模数据存储和查询时性能低于后者。后者针对海洋环境数据的特点建立海洋环境科学数据模型,数据采集结果和数值模拟输入输出采用通用数据模型,对数据的集成存储和管理可以采用统一的方式,被推荐为海洋数据格式标准[12]。以该模型为基础,为本地系统透明的访问远程数据的客户端服务器系统OPeNDAP被开发,方便海洋科研人员通过不同的数据分析工具获取数据,例如Matlab、GrADS等[13-14]。OPeNDAP基于HTTP协议,通过向特定的URI发送请求获取相应的文件数据集元数据、变量数据、属性数据等。但这需要开发人员掌握相应的协议规范,解析相应的数据流,增加了软件开发复杂度。
本文针对上述2种数据存储模型的不足,结合其优势和海洋环境数据应用需求,提出了一种面向大规模文档数据存储访问模型。该模型以通用数据模型为基础,建立通用数据模型到关系数据模型的映射,将对关系数据的操作转换为对文件的操作,允许以数据库编程方式查询数据文件内容,提高软件编程效率。
本文提出的海洋环境大规模数据存储访问模型以海洋环境多维科学数据为存储对象,建立通用数据模型数据集如NetCDF、HDF到关系数据模型的数据映射——结构映射,映射结果定义为规则模型(Regular Model),由一个虚拟关系数据库(Virtual Relation Database)承载用来存储文件数据集的结构,可以编写直接的SQL查询语句对文件数据集进行查询,包括点数据、线数据、面数据、体数据等多种形式(见图1)。
图1 存储模型框架Fig.1 Storage model framework
数据映射完成海洋环境科学数据集的聚集和存储,不同格式的数据集与不同的映射适配器相关联,数据集结构信息通过相应的映射器被映射到虚拟关系数据库中。数据引擎接收查询请求,对请求进行解析验证,结合虚拟关系数据库中的规则模型,将命令映射成相应的操作函数,对数据集文件进行操作返回相应数据。数据驱动提供类似于Sql server、Oracle、MySql的数据提供者(Data Provider),可以根据规则模型编写查询语句获取相应的数据。
1.1 数据映射
海洋环境多维科学数据在数据库中存储会带来大量冗余信息,例如时间、经度、纬度、海拔信息,这在海洋数值模式数据中尤其严重,而通用数据模型则通过文件存储结构固定方式避免了此类问题。数据映射是将通用数据模型数据存储结构映射到虚拟关系模型中,并没有将实际数据加载到数据表中,不存在数据冗余等问题。
本文主要实现了通用数据模型NetCDF数据结构到关系模型的映射,其他类型的数据模型如HDF和自定义格式可以通过增加相应的映射器实现关系映射。变量、维度、属性、数据被映射为相应的规则模型,整个数据集元数据被映射为一个规则模型,下面对规则模型中各实体进行描述(见图2)。
数据集实体描述数据的元数据,包括数据集标识、存储路径、元数据版本、数据形式属性。
变量信息实体描述数据集中的变量,包括变量标识、名字、依赖维集、数据集标识属性。
维度信息实体描述数据集中所有维,包括维标识、名字、长度属性。
图2 规则模型Fig.2 Regular model
属性信息实体描述数据集中所有变量属性和全局属性,包括属性标识、名字、值类型、属性值、变量标识属性,当为全局属性时变量标识前缀为Global。
数据信息实体描述数据集中所有变量的所有数据值,其被映射后包括的属性有变量标识、维1、维2、……、维N、数据值。
为了对数据映射进行形式化描述,本文进行了如下定义。
一个S完整刻画了一个NetCDF数据集,对S的操作可以无缝反应到对数据集操作,包括元数据的查询和数据的查询。
定义2 记S′={Si|i=1,2,3,…,N}表示多个相关的NetCDF数据集集合,它们具有相同的数据结构,既相同变量、维度、属性,具有相同的空间纬度,不同的是在时间维度上的取值。
一个S′完整刻画了一组来自于同一海洋观测过程中的环境数据,它们在物理上代表相同的观测要素或者相同的数值模拟过程。定义3 记R(U)表示一个关系模型,其中U={Ci|i=1,2,3,…N}表示关系模型中数据列集合;Ci表示数据列;R(U)=R(C1,C2,C3,…,CN)。记DB=(R′(U),L)表示一个关系数据库模型,其中R′(U)={Ri(U)|i=1,2,3,…,N}表示不同关系模型集合;L={
根据定义3,对图3描述的关系模型进行形式化定义,数据集、变量信息、维度信息、属性信息、数据信息分别如下:
Rds=DS(dsid,path,cf,type)Rvar=
V(vid,name,dims,type,dsid)
Rdim=D(did,name,length)
Ratt=A(aid,name,type,value,vid)
Rvalue=Value(vid,dim1,dim2,…,dimN,value)。
作为通用数据模型,NetCDF具有自我描述性,可以通过编写自动化的程序抽取NetCDF数据集的结构信息(变量、维度、属性)映射到关系数据库中,这个操作过程可以表示为DB=f(S)。
对多数据集S′的结构数据进行提取的操作可以表示为:
为了实现上述结构信息提取,设计了数据映射算法(算法1),其接受输入的数据集,遍历提取数据集包含的变量、维度、属性信息,根据提取信息创建相应的数据库表,并将结构数据写入到数据库中。
算法1.根据输入的数据集提取相应结构数据1:Input:S//一个NetCDF数据集2:Output:DB//关系数据模型3:Begin4: Createtable(Rds)//创建Rds5: record=Getmetadata(S)6: insertintoRds(record)7: Createtable(Rvar)//创建Rvar8: VinquireallvariablesfromS9: foreachvariableVi∈V10: record=getid,name,type,dsidofVi
11: DiinquirealldimensionsofVi12: dims=Compose(Di,',')//用','组合变量依赖的维度13: record=(id,name,dims,type,dsid)14: insertintoRvar(record)15: endforeach16: Createtable(Rdim)//创建Rdim17: D=inquirealldimensionsofS18: foreachdimensionDi∈D19: record=getid,name,lengthofDi20: insertintoRdim(record)21: endforeach22: Createtable(Ratt)//创建Ratt23: foreachvariableVi∈V24: AiinquireallattributeofVi25: foreachattributeAii∈Ai26: record=getid,name,type,valuevidofAii27: insertintoRatt(record)28: endforeach29: endforeach30 AginquireallattributeofS31: foreachattributeAi∈Ag32: record=getid,name,type,valuevidofAi33: insertintoRatt(record)34: endforeach35: Createtable(Rvalue)//创建Rvalue36: returnDB={Rds,Rvar,Rdim,Ratt,Rvalue}37: end
1.2 数据引擎
海洋环境大规模数据的存储固然重要,良好的数据访问接口也不可忽略,尤其大规模数据的分发,对于领域内科学研究人员、数据用户、管理决策者具有重要意义。
海洋环境科学数据无论以何种形式存在,其区别于业务数据的最大特点在于一次写入,多次读取,即采集数据或模式输出数据除了质控需要对数据进行编辑外,基本无任何其他修改操作,绝大多数应用场景是被读取用于进行统计分析、数据挖掘、可视化表达等。本文提出的数据存储模型中数据信息虚拟表Rvalue(U)反映数据集中变量数据信息,所有对变量数据的访问操作均反应在此关系模型上。相应于虚拟关系数据库,存在一个虚拟数据库引擎VDE(VirtualDatabaseEngine),该引擎负责解释执行所有对虚拟数据表的SQL操作(见图3)。
图3 虚拟数据库引擎工作流程Fig.3 Workflow of VDE
SQL语法模型描述了虚拟关系数据库的查询规则,包括数据库、数据表的创建,查询、插入、更新删除操作的定义,以及相应操作词法、语法定义等,本文所设计的虚拟关系数据库语法模型基于开源关系数据库框架SharpHSQL[15];SQL解析参照SQL语法模型对请求的语句进行解析,进行规范化操作,保证语句的正确性和有效性;SQL命令执行将相应的语句转换为对数据集的相应操作,返回符合关系模型的数据记录。
1.3 数据驱动
虚拟关系数据库并不是真正意义上的关系数据库,它只是将数据集文件映射成数据表的一个中间件,具有常规关系数据库的一些特征。针对该虚拟关系数据库,开发了.Net环境下相应的数据驱动,用户可以通过该驱动实现到虚拟关系数据的连接、执行操作、关闭连接等操作,就像操作一个真实的关系数据库。数据驱动包括数据库连接类、命令执行类、数据适配器类、数据读取类。
将该方法应用在实际的海洋环境大数据存储服务中,使用相应的数据映射器将数据集结构信息映射到虚拟关系数据库系统中,通过数据引擎响应用户请求,验证海洋环境大规模数据存储模型的有效性。下面以实际海洋科研项目系统中海洋数据存储服务为例,说明该存储模型的数据处理流程(见图4)。
图4 数据处理流程Fig.4 Data process flow
WRF(WeatherResearchandForecasting)和ROMS(RegionalOceanModelingSystem)为在某近海海域建立的海洋大气和海洋水动力数值模拟模型系统,WRF每日定时输出数值模拟数据海面温度(T2.nc)、海面气压(SLP.nc)、海面相对湿度(RH.nc)和海面风(Wind.nc)海洋大气数据集,ROMS每日定时输出数值模拟数据海水温度(Temp.nc)、盐度(Salinity.nc)和海流(Current.nc)海洋环境水动力数据集,其中大气数据单层,网格大小41×41,水动力数据5层,网格大小201×201。
下面以海面温度(T2.nc)数据集为例描述其向虚拟关系数据库的映射。
以变量T2为例,其属性集合为:
对上述数据集ST2的映射结果为:
Rvalue=Values(vid,frtime,lat,lon,value)。
对于规则模型中数据表Rds,其数据记录为:
{T2_1,D:/T2,cf1.4,model}。
数据表Rvar的数据记录为:
{(3,T2,[frtime,lat,lon],T2_1),
(2,Frtime,[frtime],T2_1),
(1,lat,[lat],T2_1),
(0,lon,[lon],T2_1)}。
数据表Rdim的数据记录为:
{(2,frtime,24,T2_1),(1,lat,41,T2_1),(0,lon,41,T2_1)}。
数据表Ratt的数据记录为:
{(0,history,string,GAO_Shanhong,Global_T2_1),
(1,title,string,WRF_Forecast,Global_T2_1),
(3,long_name,string,IEMP_at_2M,T2),
(…)}。
用户根据关系模型编写数据查询语句,服务器接收查询语句并对语句中的条件字符串进行解析获取语句查询的数据点的集合,数据点依赖于该变量所依赖的维,根据获取的数据点的集合从数据集文件中读取相应的数据,根据查询请求返回的字段构造行数据记录(见图5)。
图5 查询语句处理Fig.5 Query process for SQL request
本文提出的数据存储模型只存储文件的结构信息,与将文件数据加载到数据库中相比,空间消耗很少。因此本文只对数据存储模型的时间消耗进行了实际测试,包括文件结构映射和查询时间消耗。测试程序基于.Net平台,使用SqLServer2005。
使用具有不同结构不同数据量的数据集文件进行测试(见图6,以3.1中ROMS输出和WRF输出为例)。映射时间消耗主要包括文件I/O和结构信息提取。同一类数据集(如ROMS)数据量大小不一样,文件I/O消耗有差别,但差别不大。由于具有相同的结构数据(只有维度长度不一样),因此同一类数据集结构映射时间消耗随数据集增大而变大,但变化不大;同时结构越复杂,时间消耗越多(ROMS比WARF时间消耗多)。
使用多值查询对数据库存储和本文提出的映射存储进行查询时间消耗测试(见图7)。可以看出,当数据量较小时(数据点数小于100万)两种数据存储方式查询时间消耗几乎一样。随着数据量的增长,数据库存储的查询时间消耗有了较快的增长,而映射存储虽然也有增长,但时间消耗低于数据库存储。从测试中发现,映射存储非常适合查询一维、二维、三维等多维连续数据(或子集),而这也正符合这类数据的应用场景。
图6 数据集结构映射时间消耗Fig.6 Time consuming of mapping
图7 多值查询时间消耗Fig.7 Time consuming of multi-value query
目前海洋环境大规模数据集主要以文件形式存储,针对现有数据管理方式不利于数据检索访问,缺乏关系数据模型优点,本文提出了一种虚拟关系数据库数据存储模型,通过将通用数据集(NetCDF)结构信息映射为相应的虚拟关系数据表,将用户对数据表的操作直接反应到相应的数据集上,方便对数据的管理和使用,提高软件编程效率。该模型无需将数据集变量数据真正加载到数据库系统中,既满足科研人员对原始数据集文件操作的需求,又方便了软件开发人员对数据的操作,利用关系数据模型完成数据的使用,对于大规模海洋环境数据集的存储访问方法具有一定的参考意义和应用价值。
[1]Rayner,Ralph.TheUSintegratedoceanobservingsysteminaglobalcontext[J].MarineTechnologySocietyJournal, 2010, 44(6): 26-31.
[2] 同济大学海洋科技中心海底观测组. 美国的两大海洋观测系统:OOI与IOOS[J]. 地球科学进展, 2011, 26(6): 650-655.
[3]JeffdeLaBeaujardiereJ.TheNOAAIOOSDataIntegrationFramework:Initialimplementationreport[C].QuebecCity:ProceedingsoftheOCEANS2008, 2008: 1-8.
[4]HorsburghJS,TarbotonDG,MaidmentDR,etal.Arelationalmodelforenvironmentalandwaterresourcesdata[J].WaterResourcesResearch, 2008, 44(5): 570-575.
[5]ShenF,GuoZ,HuT,etal.Adevelopmentframeworkforoceanenvironmentalinformationserviceapplication[C].Halifax:ProceedingsoftheOceans,IEEE, 2012: 1-6.
[6]ZhouJ,BernardL,BouchardR,etal.DatabasedesignsandmetadatamanagementforclimateobservationsandTsunamisea-levelmonitoringandqualitycontrol[C].SanDiego:ProceedingsoftheOCEANS2009,MTS/IEEEBiloxi-MarineTechnologyforOurFuture:GlobalandLocalChallenges.IEEE, 2009: 1-6.
[7]CommonDataModel(CDM) [OL]. [2013-09-10]http://www.unidata.ucar.edu/software/netcdf-java/CDM/.
[8]OPeNDAP[OL]. [2013-09-10].http://www.opendap.org/.
[9]Whydon'tscientistsusedatabases[OL]. [2013-09-10].http://www.barrodale.com/docs/Whydon'tscientistsusedatabases.pdf.
[10]GrayJ,LiuDT,Nieto-SantistebanM,etal.Scientificdatamanagementinthecomingdecade[J].ACMSIGMODRecord, 2005, 34(4): 34-41.
[11]CohenS,HurleyP,SchulzKW,etal.Scientificformatsforobject-relationaldatabasesystems:astudyofsuitabilityandperformance[J].ACMSIGMODRecord, 2006, 35(2): 10-15.
[12]DomenicoB.OGCNetworkCommonDataForm(NetCDF)CoreEncodingStandardversion1.0 [S].CandidateOpenGISEncodingStandard, 2011: 5.
[13]WielgoszJ,DotyB,AdamsJ.Thegrads-dodsserver:Anopen-sourcetoolfordistributeddataaccessandanalysis[C].Southampton:Proceedingsofthe19thInternationalConferenceonInteractiveInformationandProcessingSystems(IIPS)forMeteorology,OceanographyandHydrology, 2003.
[14]DenboD,SirottJ,ZhuWH.Dapper:AMatlabinterfacetoDapperanOPeNDAPin-situdataservice[C].Southampton:Proceedingsofthe23ndConferenceonInteractiveInformationandProcessingSystems(IIPS)forMeteorology,OceanographyandHydrologyAMS, 2007: 15-20.
[15]SharpHSQL-AnSQLenginewritteninC# [OL]. [2013-09-10],http://www.csharpcorner.com/database/SharpHSQL.asp.
责任编辑 陈呈超
Design and Application of a Marine Environmental Data Storage Model
SHEN Fei-Fei, GUO Zhong-Wen, HU Ke-Yong
(College of Information Science and Engineering, Ocean University of China, Qingdao 266100, China)
There are many different kinds of and huge number of marine environment data in a variety of document form, which makes it difficult to retrieve and access. This paper proposed a data access model for application programming in view of the current marine environment huge data storage method and programming access limitations. The model was constructed on the basis of unified file data mode, mapping the file structure to virtual relational database, and could be accessed based on SQL syntax, which reduced the data access complexity and improved software programming efficieng.
marine environmental data; data storage; access interface; SQL
海洋公益项目(201105030;201105034)资助
2013-05-20;
2013-10-20
沈飞飞(1983-),男,博士生。E-mail:shenfeifei@ouc.edu.cn
TP31
A
1672-5174(2015)06-122-06
10.16441/j.cnki.hdxb.20130344