APP下载

MongoDB的遥感影像分布式存储策略研究

2014-08-15李朝奎殷智慧

测绘通报 2014年5期
关键词:分块海量金字塔

李朝奎,杨 武,殷智慧,张 强

(1. 湖南科技大学 地理空间信息湖南省工程实验室,湖南 湘潭 411201; 2. 湖南科技大学 地球空间信息科学研究中心,湖南 湘潭 411201)

一、引 言

遥感影像数据作为一种信息丰富、覆盖面广、经济、便捷的空间数据载体,已经朝着多平台、多分辨率、多时相、多层面、多种传感器、多角度、多光谱的方向发展[1],其应用领域扩展到了国土资源、气象、环境、水利、矿产、电力等各个行业中,已经成为智慧城市等众多研究领域的重要数据来源[2];随着获取的影像数据呈几何级数增长,已经进入大数据[3]时代。面对这些海量的遥感影像,如何高效的存储管理,以满足用户的高并发共享服务成为当前的研究热点与难点[4]。

目前的影像存储系统主要有:①以SQL Server 2000为技术基础的面向全球城市地区的地理信息网站 TerraServer, 它是世界上最大的在线数据库之一,向公众提供了数量巨大的地图与航空影像;②微软公司推出的MSN Virtual Earth, 将 MSN 搜索、MapPoint 地图和TerraServer 集成为一个应用系统,实现了覆盖全球范围的空间数据统一管理;③Lockheed Martin 公司的 Intelligent Library System (ILS)是一套软硬件集成解决方案,通过算法预测数据需求并预先调入在线缓存;④美国的 Esri 公司也推出了免费的ArcGIS Explorer系统,提供了一种便利方式以访问在线 GIS 资源;⑤武汉大学研制的大型无缝影像数据库管理系统GeoImageDB[5],实现了多比例尺、多源异构数据影像数据管理;⑥解放军信息工程大学地理空间信息学院研制的 Image Map Library (IML)[6]的三层架构可以满足基于数字地球框架的遥感图像信息系统的基本要求。这些系统都是基于传统关系数据库设计研发的,对数据存储和管理提供了高效率的平台,但是由于自身的限制,关系数据库在数据库的高并发读写、海量数据的存储与访问和数据库可扩展性等方面已经很难实现[7]。

本文通过分析遥感数据的特点,结合LOD和金字塔模型,改进碎片式划分算法对遥感影像进行分层分块,并提出了基于MongoDB的遥感影像分布式文件存储策略,实现对影像的高效存储与多并发访问,并通过对比基于SQL Server数据库的遥感影像存储方法,证明本文方法的可行性。

二、存储策略关键技术

随着云计算技术的发展,数据的高度共享对数据库的读写能力和多并发访问性能提出了挑战,传统的关系型数据库很难满足新的需求,而NOSQL数据库的出现则打破了这一瓶颈。

1. NOSQL

NOSQL即是非关系型数据库,因为其主要数据模型不是关系模型,没有SQL接口,所以被称为NOSQL。NOSQL的理论基础是CAP理论,BASE思想和最终一致性,不像关系型数据库那样有严密的数据结构,它的存储方式比较自由,一般是以Key-values的形式存储数据,一个键名对应一个键值,数据结构比简单,但是查询速度远高于关系型数据库,它可以部署在廉价的硬件之上,能够方便地扩展存储节点,可以满足海量数据的存储与高并发访问。Sourav Mazumder 提出了NOSQL的4层架构[8],如图1所示。

图1 NOSQL系统架构

目前主要的NOSQL数据库有:Riak、Redis、Tokyo Cabinet、SimpleDB、MongoDB、CouchDB和BigTable等,本文主要介绍MongoDB数据库。

2. MongoDB

MongoDB是10gen公司2009年研发的一个开源的基于分布式文件存储的NOSQL数据库系统,它具有Key-value存储方式的高性能和高扩展性,同时它支持复杂的数据结构,具有强大的查询功能,可以实现类似关系数据库中单表查询的绝大部分功能,而且还支持对数据建立索引,因此MongoDB非常适合解决海量数据的存储和访问效率问题。

MongoDB使用数据结构松散的BinaryJSON格式,利用自动分片实现海量数据的存储,具有关系数据库众多查询功能,支持地理空间索引,具有很好的高并发访问效率。MongoDB主要特点如下[9]:

1) 存储方便。面向集合存储,适合存储各种类型的对象数据,具有自由模式。

2) 功能丰富。支持动态查询、完全索引。

3) 可扩展性强。使用自动分片机制扩展数据库节点,可自动实现集群的负载均衡。

4) 可靠性强。服务器自动配置,采用主/从和复制集两种方式复制冗余。

3. 遥感影像处理

遥感影像具有其特殊的特征:多源数据的异构性、多传感器的多尺度、遥感数据实时获取的动态性和获取方式、数据精度以及卫星数量增多造成的数据海量性。要存储和共享这些数据,就必须对数据做特殊处理,使其满足存储要求。

(1) 影像标准化处理

为了方便数据存储,提高共享查询处理效率,必须对数据进行标准处理:

1) 数据完整性:必须具备定位元数据文件用于影像定位;工程元数据文件确定影像的椭球、坐标系和投影方式。元数据文件必须具有精确的分辨率和坐标系。

2) 为满足多源、多分辨率影像的无缝集合,必须建立统一的空间坐标系[10]:本文采用1985国家高程基准,坐标系采用WGS-84,采用经纬度投影,平面单位采用度。

(2) 影像划分方法

对海量影像数据进行存储与管理,关键是建立高效的存储结构。而LOD技术可以实现GB甚至TB级别的海量影像数据的多层次细节快速访问;金字塔模型则能实现对多分辨率影像的高效存储管理。

LOD即细节层次模型,它是根据人眼的视觉特性,距离远近的物体采用不同精度模型,将整个物体分解为精度不同的块,从而具有不同精度的细节层次,满足人眼对影像不同视距的观察效果。而金字塔模型[11-12]则是一种存储多分辨率影像的结构,它是将影像按照分辨率从高到低,将分辨率最高的影像放在金字塔的最底层,随着金字塔层次的升高,影像分辨率逐步降低,直至达到所设定的精度阈值[13],金字塔结构示意图如图2所示。

图2 金字塔结构示意图

本文采用倒金字塔模型存储,采用四叉树分割的方法对影像进行划分(如图3所示),根据陈田庆等对影像进行18级分散化存储和管理[2],第一层以36°分级从影像左下角以从左至右、从下至上划分,存储在金字塔的第0层。金字塔模型层数以L表示,L+1层图幅数为L层的2×2倍,如第2层图幅数为第1层的4倍。

三、影像存储策略

1. 影像命名

对已知分辨率和经纬度的遥感图像进行分块,可以用式(1)和式(2)计算分级数,进而对影像按照上文所提方法进行分级分块。

式中,m、n表示级数;SB、SL表示每秒经纬度对应的米数,根据具体近似值设定;dx、dy表示横向高斯精度和纵向高斯精度。

图3 影像四叉树分级

影像的命名采用行号加列号的方法,采用9字节存储,前4个字节为行号,后4个字节为列号,中间“_”占用一个字节。如:从西经0°,南纬0°起,第一幅命名为:0000_0000,经纬度坐标值与分级分块后行列号之间的关系为

式中,Row、Col表示行列号;B、L表示经纬度坐标值;dB、dL表示经度差和纬度差。

2. MongoDB存储方案

MongoDB采用 Key-Values键值对储存数据,每一个影像分块,以〈NameID,Data〉格式存储,NameID为分块影像的名字,Data为分块影像的二进制数据[14]。

目前操作系统对文件大小有一定限制,32位操作系统最大支持2 GB数据量,但是64位操作系统则没有这一限制。为了避免每块单独存储产生压缩对系统造成负担,将同一类数据集的所有分块存成一个文件,把每级所有分块存在各自文件夹里,每行的影像分块储存在各级文件夹对应的子文件夹里,同属需要另外定义和维护分块的索引键名。

客户端发出数据请求,首先会查询内存并获取数据,如果没有就向Memcached Server检索并获取数据,只有上述两者都没有时才向数据库发出请求,使用频率高的数据记录在内存和Memcached Server中保留,这种缓存方法能有效提高数据访问效率。

在存储中,数据库的链接、数据的入库和数据查询等功能最为重要。数据库连接的java代码如下:

Mongo m=new Mongo("DBserver",27017);

DB db=m.getDB("dbname");

在数据库中根据输入条件检索,涉及的类有BasicDBObject、DB、HashMap等,java代码如下:

BasicDBObject query=new BasicObject();

query.putAll(map);

List list=new ArrayList();

list=getGridFS().find(query);

3. SQL Server存储方案

现在的大型数据库如Oracle和SQL Server等都已提供了对影像数据存储与管理的支持[15],本文试验使用SQL Server 2000,同一级的影像分块存储为一张表,每一块影像单独建立索引,使用java连接代码如下[16]:

String conUrl="jdbc:microsoft:SQLServer:∥localhost:1433;DatabaseName=dbname" ∥连接字符串;

C1ass.forName("com.microsoft. sqlserver.jdbc. SQLServerDriver"); ∥登录用户名;

Connection con==DriverManager. getConnection(conUrl); ∥生成连接;

四、试验验证

MongoDB存储架构(如图4所示)包括:影像数据处理、金字塔模型建立、数据入库和访问试验几个部分。MongoDB数据库中每个数据集都是同一类遥感影像的所有分块,数据节点部署在普通台式机上面,数据访问先查询缓存区[17],有则直接调用;缓存区没有时才从数据库调取。

图4 MongoDB存储架构

试验环境搭建如下:一台Intel(R)Core(TM)i5-2410 CPU 2.3 GHz,内存2 GB,硬盘500 GB,操作系统为Windows7 64位系统笔记本;8台联想AMD Trinity APU A8-5500 CPU 3.2 GHZ,内存8 GB,操作系统为Windows XP32位系统台式机,通过100 Mbps局域网连接,MongoDB版本采用MongoDB 2.4.3。

试验数据采用长沙地区东经112°—113°,北纬27.5°—28.5°,分辨率1 m的遥感影像,通过式(1)和式(2)计算出m=n=13,即划分为13级影像分块。分别测试了两种数据库数据入库时间和并发访问效率。数据入库时间如表1所示,并发访问效率结果如图5所示。

表1 数据入库时间对比

从表1中可以看出,相同数据量入库时间MongoDB优于SQL Server 2005,且随着数据量的递增优势愈加明显。

图5 两种数据库并发访问时间效率对比

从图5中可以看出,MongoDB数据库随着并发访问数的增加,平均访问时间并未有明显改变,而SQL Server 2005则急剧升高,说明MongoDB数据库具有高效的并发访问特性。

五、结论和展望

针对关系数据库对海量影像数据存储管理和多并发访问的瓶颈,本文尝试用NOSQL数据库产品MongoDB来解决这一问题,设计了基于MongoDB的影像数据存储架构,并通过对比SQL Server数据库数据入库时间和并发访问效率,得出以下结论:

1) 综合LOD思想和金字塔模型的遥感影像分级分块方法适用于遥感影像分块处理。

2) 基于MongoDB数据库分布式存储遥感影像数据的策略是可行的。

3) 基于MongoDB的影像存储在数据入库和应对并发访问都具有更高的时间效率。

但是NOSQL数据库还处于起步阶段,开源代码为用户提供了方便,但是同时故障维护也只能自己解决,缺乏关系数据库的稳定性和强大的商业支持,虽然在处理海量存储,高并发访问上有高效性,也出现了大量优秀的NOSQL产品,但是距离全面普及尚远。

参考文献:

[1] 程启敏.基于内容的遥感影像检索技术研究[D].北京:中国科学院遥感应用研究所, 2004.

[2] 陈田庆. 分布式环境下的遥感影像组织与调度[J].计算机工程,2010(10):9-12.

[3] 乔朝飞. 大数据及其对测绘地理信息工作的启示[J].测绘通报,2013(1):107-109.

[4] 李成名,刘晓丽,印洁,等. 数字城市到智慧城市的思考与探索[J].测绘通报,2013(3):1-3.

[5] 方涛,李德仁. GeoImageDB 多分辨率无缝影像数据库系统的开发与实现[J]. 武汉测绘科技大学学报, 1999, 24(3):189-193,281.

[6] 罗睿,张永生,李颖,等. 一个基于数字地球框架的遥感图象信息系统[J].信息工程大学学报, 2001, 2(1): 1-4.

[7] 刘一梦.基于MongoDB的云数据管理技术的研究与应用[D].北京:北京交通大学,2012.

[8] 沈妹. NOSQL数据库技术及其应用研究[D].南京:南京信息工程大学,2012.

[9] CHODOROW K, DIROLF M. MongoDB: The Definitive Guide[M]. [S.l.]: O'Reilly Media, 2010.

[10] 王恩泉,李英成,薛艳丽,等.网络三维影像地图的栅格数据组织方法研究[J].测绘科学,2008(6):26-29.

[11] 王昀昀,朱勤东.基于ARCSDE的影像数据入库研究[J].测绘通报,2013(1):84-86.

[12] 胡文元.T级影像数据库建库方案研究[J].测绘通报,2009(12):46-48.

[13] 余粉香,工光霞,万刚.大数据量遥感影像的快速调度与显示[J].海洋测绘,2006(2):27-30.

[14] 卢益阳.NOSQL数据管理系统综述[J].企业科技与发展,2011(11):31-33.

[15] 沈占峰,骆剑承,盛昊,等. 基于Web Service的分布式遥感影像数据库设计与实现[J].测绘通报,2006(2):14-17.

[16] 陈超,王亮,闫浩文,等. 一种基于NOSQL的地图瓦片数据存储技术[J].测绘科学,2013(1):1-5.

[17] MIKIO A, KUNIHIKO T, KIDEKI O.Distributed Cache System for Large-Scale Networks[C]∥International Multi-conference on Computing in Global Information Technology(ICCGI'06).[S.l.]:IEEE Computer Society,2006.

猜你喜欢

分块海量金字塔
“金字塔”
一种傅里叶域海量数据高速谱聚类方法
钢结构工程分块滑移安装施工方法探讨
Great Vacation Places
分块矩阵在线性代数中的应用
海量快递垃圾正在“围城”——“绿色快递”势在必行
海上有座“金字塔”
神秘金字塔
一个图形所蕴含的“海量”巧题
反三角分块矩阵Drazin逆新的表示