陆地环境资源持续紧张,人们逐渐把目光转向了海洋资源的开发利用。早在2010年,海洋经济被列为产业转型升级的重点方向,而在“国民经济与社会发展第十三个五年规划”中,“发展海洋经济,拓展蓝色空间”被单列为一项专门加以论述,由此可见未来海洋资源开发的力度和进度都将加强。值得注意的是,任何资源的开发利用都要面临资源环境承载力的约束,因此在人类尝试开发利用海洋资源时,针对海洋生态的保护,资源可持续利用等问题也应同步跟进,以实现经济增长与资源环境保护协同共进,平衡发展[1]。
针对海洋资源监测及评估对于海洋环境极为重要,发达国家对此认识深刻,较早的开展了相关技术的研发与应用。而我国由于起步较晚,技术方面相对落后。尤其是在突发性事件对海洋生态资源的损害方面,缺乏动态有效的检测评价系统,究其原因,可供综合调用的空间数据库技术限制了评价系统的效能。本文研究海洋生态资源损害的评估数据和基于RDBMS的空间数据库,在此基础上,提出基于RDBMS的非关系型空间数据的存储模型,最后进行仿真实验。
1 海洋生态资源损害数据库 1.1 海洋生态资源损害评估数据海洋生态资源损害的评估数据由电子海图及评估模型构成,如图 1所示。
1)电子海图
电子海图数据分为以下几类:
①海洋和航道数据。主要包括海岛、海岸线、等深线、航道、水深测点及标注等信息。
②应急信息数据。主要包括敏感资源、防护设施、码头、应急公司和机构等信息。
③地理数据。主要包括陆上的地区、行政区的划分、道路信息及政府企事业单位等。
2)评估模型
评估模型分为以下几类:
①污染物物化性质。主要包括原油、化学品等污染物的物理化学性质,比如密度、闪点、沸点、熔点等。
②生态资源分布。主要包括海洋生物的活动特点、栖息地分布、资源密度、数量等。
③海洋环境动力。主要包括海洋动力模型计算的二、三维潮流数据、海面风场数据等。
④海洋生物毒性。主要包括常见污染物对海洋生物的毒性数据。
⑤数值模拟结果。主要包括污染物扩散模型和生态损害模型的仿真计算数据。
1.2 基于RDBMS的空间数据库基于RDBMS海洋生态资源损害空间数据库中几类数据的基本特征描述如下:
1)矢量数据。主要由点、线、面三类基本空间类型构成。其中,点类型包含1对(x, y)坐标;线类型是n对(x, y)坐标的集合;面类型是n对(x, y)坐标,且第1对和第n对坐标重合。电子海图由点实体对象、线实体对象和面实体对象组成,其中,点对象包括测量点、港口等,线对象包括航道、海岸线等,面对象包括岛屿、陆地等。
2)栅格数据。该数据的基本单位是像素,每个像素保存着不同的属性数据,比如灰度、色彩等,每个像素由1对(x, y)坐标标识。栅格数据的特点是保存的数据量大、结构简单,适用于对连续变化的空间进行描述[3]。
3)时空数据。该数据类型中的时间片序列模型是目前被广泛采用的模型,时间片序列模型采用时间切片法对连续变化的空间进行采样,这样可以将连续部分转换成离散值,再利用时间戳将数据保存到空间数据模型。
2 数据库存储 2.1 数据和存储模型数据对象包含特定数据类型,数据类型是其特征空间的子空间,可以将数据类型视为数据对象的特征集合,所以,数据对象包含多种数据类型,数据类型间可以进行并、交、补等集合操作[4]。
对于数据类型而言,可以用具体值集合及一组操作进行定义。具体化层面上,数据类型描述了变量值具体化和存储的方式。数据类型具体化可以用于描述数据对象所抽取的特征,可以用值和集合表示数据对象,实现抽象数据对象到可计算机存储数据变量的转换。
在具体抽取后,将得到由多数据类型组成的数据对象,同类数据对象保存到关系数据库中的同一个表中,并按照一定的规则和格式进行保存。数据虽然是多维度的,但是需要转换成一维数据进行存储,所以,在保存过程中,每行记录都作为一个整体,存储到数据库文件中。
行数据以KEY/VALUE的形式进行保存,主键作为KEY值,其他数据作为VALUE值,每个VALUE值的存储空间是固定的,如果VALUE中某些属性是空的,该属性仍然会占用一定空间,对于稀疏型KEY/VALUE而言,在进行RDBMS数据库管理时,存在空间浪费的问题。其次,由于VALUE值包含多种属性,每次进行数据读取时,都需要完成一维到多维数据的转换,当面对海量数据处理时,RDBMS数据库的处理效率较低。
本文研究重点是利用RDBMS数据库实现非关系型数据的处理和存储,采用的存储方式是将非关系数据中的VALUE值进行拆分,然后将主键KEY和每个VALUE的属性值构建一个2列小表,该方式能够避免稀疏数据存在的空间浪费问题,同时也能够满足列存储思想。
2.2 数据库存储RDBMS数据库对非关系型数据的存储步骤如下:
1)对KEY/VALUE值进行具体化。该步骤的作用是利用关系数据库表对KEY/VALUE进行描述,首先,根据最大属性数目对VALUE值进行拆解。在数据查询的过程中,采用部分属性列的存放方式,可以不需要进行全表扫描,能够有效提升数据库查询效率。其次,将拆分的属性列和主键KEY值组合成表,N个属性值拆分成N个表。对于一个大表,通常数据库会采用稠密索引来处理,如果KEY值不是顺序排列,那么需要对所有列都建立索引项,这将会导致索引消耗大量存储空间。另外,索引需要动态维护,当数据更新后,需要对索引进行更新。为此,在拆分VALUE值完成后,数据库以数据块为单位对每个表构建索引,这样可以降低索引占用的空间和维护成本。当查询结果定位到具体表后,只需要对该表进行操作,所以,在任何情况下,数据查询只需要扫描两列表,因此,能够在一定程度上提高数据库查询的效率。
2)对字符串类型String进行String→ID转换。采用Hash方法分配唯一的ID,将步骤1中的字符串转换成ID。
由于动态Hash方法中Hash表的桶数目存在不确定性,且需要动态更新,同时,在调用Hash函数时,整个Hash表都需要保存到内存中。另外,本文在字符串转换过程中,只需要选取Hash值与全局唯一ID相对应,因此,静态Hash方法就能够满足本文的需求。在Hash方法中存在Hash冲突问题,就是说不同的字符串在经过Hash函数处理后,可能得到相同的Hash值,通常采用开链Hash表方法解决该问题。当数据出现冲突时,需要从文件中读取字符串,并进行字符串比较,这种方法开销太大,所以,本文选取的Hash函数种子比较大,允许一定的Hash冲突存在。
在CREAT表时,将大表进行拆分,得到N张2列小表,然后,将字符串类型转换成整型。在进行INSERT,UPDATE,SELECT等操作时,将列属性转换为对应的小表,其中,除了SELECT操作外,其他操作都不会返回数据集。对于SELECT操作,在对不同表进行处理的过程中,可以嵌套JOIN操作来对结果进行合并。
在逻辑上,可以将全列属性视为一个KEY/VALUE类型的表。物理上按照主键-属性形式存储的两列表,主键部分是重复的,这样虽然牺牲了部分存储空间,但是,能够提高数据库的扫描和处理速度。
3 仿真实验本文对基于RDBMS海洋生态资源的损害空间数据库的性能进行了仿真实验,实验配置如下:硬件采用CPU 2.60 GHz,内存4G;软件配置采用Ubuntu操作系统,数据库为MySQL。数据库语句执行效率结果如图 2和图 3所示。
从实验结果可知,基于RDBMS数据库系统经过字符串转换和属性拆分后,其语句解析、执行效率和准确率都较高,所以,本文提出的数据和存储模型具有较高的实际应用价值。
4 结语在污染对海洋生态和资源造成日益严重结果的背景下,如何利用RDBMS数据库、海洋生态资源损害数据和空间数据库等技术提高海洋数据的共享和管理效率是本文研究的重点。本文在海洋生态资源损害数据基础上,构建了基于RDBMS海洋生态资源损害空间数据库,提出了数据的存储模型,最后进行了仿真实验,实验结果达到预期。
[1] | 熊德琪, 廖国祥, 美玲玲, 张金亮. 溢油污染对海洋生物资源损害的数值评估模式[J]. 大连海事大学学报, 2007, 33 (3): 68–72. |
[2] | 陈志荣, 刘仁义, 刘南. 面向网络发布的海洋遥感数据库引擎设计与应用[J]. 浙江大学学报, 2008, 35 (1): 96–99. |
[3] | FRENCH D P. Development and application of damage assessment modeling:example assessment for the North Cape oil spill[J]. Marine Pollution Bulletin, 2003, 47 : 341–359. DOI: 10.1016/S0025-326X(03)00208-X |
[4] | Floratou A, Patel J M, Shekita E J. Column-oriented storage techniques for Map Reduce[J]. Proceedings of the VLDB Endowment, 2011, 41 (1): 74–77. |