SuperMap高性能海量空间数据管理策略.docx
《SuperMap高性能海量空间数据管理策略.docx》由会员分享,可在线阅读,更多相关《SuperMap高性能海量空间数据管理策略.docx(15页珍藏版)》请在冰豆网上搜索。
![SuperMap高性能海量空间数据管理策略.docx](https://file1.bdocx.com/fileroot1/2023-2/22/5d12387f-d9b5-4662-83a1-69dd6e7cf680/5d12387f-d9b5-4662-83a1-69dd6e7cf6801.gif)
SuperMap高性能海量空间数据管理策略
SuperMap高性能海量空间数据管理策略
李绍俊1,2,周芹1,2,王尔琪1,2
摘要:
GIS是典型的数据密集型的计算机应用系统,随着数据采集技术的快速发展,GIS中需要管理的数据越来越多,数据量也越来越大。
如何能够高性能地管理海量的空间数据是目前众多GIS应用系统必须面对和解决的问题。
本文通过将原理与应用场景相结合的分析手段,从矢量和栅格两个方面介绍了在SuperMap软件中管理海量空间数据的一些技巧、方法和思路。
关键词:
SuperMap空间数据库空间索引影像金字塔
(1.北京超图,北京市海淀区学清路8号100096;2.中国科学院地理科学与资源研究所,北京市朝阳区大屯路100101)
空间数据的特殊性决定了地理空间数据库的相关应用是一个数据密集型的应用领域,也决定了地理空间数据库是对性能非常敏感的应用领域。
空间数据的浏览、显示和查询都要与服务器进行大量的数据交互,在网络上进行大量的数据传输,所以对空间数据库的性能进行优化,提高各项操作的执行速度,对于改善终端用户的用户体验和满意度有着至关重要的作用。
1.外围环境优化
好的外围环境是高性能空间数据库的前提和基础。
空间数据库的外围环境包括硬件平台、操作系统和后台数据库三个部分,下面分别进行论述:
1.1硬件平台
空间数据库具有计算密集性和数据密集性的特点,在优异的硬件平台上才能跑出好的性能。
当然,硬件并不是越昂贵就越合适,必须根据系统的需求进行合理规划,把好钢用在刀刃上,才能搭建出适合应用需求的高性价比硬件平台。
选择硬件平台时需要考虑包括CPU、内存、硬盘、网络等诸多因素。
CPU决定着服务器计算的速度,更高主频的CPU对于空间数据库应用的性能提升效果明显,多核技术对于提高多任务的空间数据库应用也有非常大的助益,建议在配置空间数据库服务器时尽量选择更高主频及多核的CPU。
GIS系统中,要访问大量的空间数据,内存访问的性能远远高于磁盘访问,为此,数据库系统和GIS应用都会尽可能充分利用内存进行操作和处理,并缓存一部分数据,所以无论对于关系型数据库系统(DBMS)还是GIS应用系统,提高内存容量都将带来明显的性能提升。
数据库系统访问数据需频繁访问硬盘,因此硬盘的性能对空间数据库的性能有着重要和直接的影响。
不同的硬盘在性能方面有差异,比如SCSI硬盘的转速一般高于IDE硬盘,前者转速在10000转或更高,后者一般有5400转和7200转的。
因此做数据库服务器硬件配置方案时尽可能选用SCSI硬盘,若只能使用IDE硬盘,则尽量选用转速高的IDE硬盘。
如果计算机系统中已经有多个硬盘,请把数据库文件布署在转速高的硬盘上以获得更高的数据访问速度。
在网络方面,因为空间数据库技术是一个实时的空间数据访问技术,网络速度对数据传输的性能有重要影响。
在局域网内,尽量提高网络速度,比如一个基于空间数据库技术的GIS应用系统,运行在100兆网络上的性能要明显好于10兆网络,并发用户数量越多,网络带宽要求越高。
另外,在一个并发用户数量较多的局域网络环境中,网络交换机或集线器的背板带宽也很重要,如100局域网环境下,可考虑采用1000兆或更高的背板带宽交换机或集线器。
关于空间数据库服务器应用品牌服务器还是兼容服务器,可以通过权衡下表中的相关因素做出决择。
对比项目
品牌服务器
兼容服务器
价格
相对要高得多
相对要低得多
服务
有完善的售后服务,故障或问题时硬件厂商可以提供及时的故障修理及责任承担
有简单的(甚至没有)售后服务,故障或问题时需要自己维修及承担相关责任
性能
性能很好
配置合理的时候性能会更好一些
表1品牌服务器与兼容服务器各参数对比分析
综合上述因素,在预算宽余及项目对可用性要求很高时适合选择品牌服务器,而在预算紧张及项目对可用性要求不是很高时可以考虑选择兼容服务器。
1.2操作系统
选择一个合适的操作系统,对于空间数据库的性能及可用性也有着重要的影响。
目前被广泛应用的操作系统主要有三大系列,下面列表对其进行对比分析。
对比项目
Windows系列
UNIX系列
Linux系列
价格
中等
一般与硬件搭配购买,综合价格很高
大多是免费或接近免费的,综合价格很低。
服务
有完善的技术支持与服务
国内的技术支持与服务情况不是很令人满意
一般没有固定的技术支持与服务
性能
中小型应用时性能很好,大型并发应用时性能下降很快
中小型应用时性能不是很令人满意,但大型多用户并发应用时性能平稳
配置合理时不管在中小型应用还是大型多用户并发应用都有很好的性能表现
易用性
易用
不易用,管理难度高
不易用,管理难度高
表2主流操作系统各参数对比分析
综合上述因素,预算宽余的中小型项目可以考虑使用Windows服务器操作系统;预算宽余的大型项目可以考虑使用UNIX系列的服务器操作系统;预算紧张的项目可以考虑Linux系列的服务器操作系统。
操作系统选好后,还需要对操作系统做一些设置以减少一些对空间数据库性能影响的因素,包括关闭服务器中不需要的服务、关闭服务器的屏幕保护、在合适的情况下关闭杀毒软件或者将杀毒软件的自动杀毒时间改到午夜、在使用Linux操作系统时关闭图形界面使用字符界面等。
1.3后台数据库
后台数据库的选择也在很大程度上影响着空间数据库的性能,下面列表对比目前国内应用最广的两个关系数据库,其他数据库也可采用同样的方法进行对比分析。
对比项目
Oracle
MSSQLServer
性能
高
一般
价格
相对高得多
相对低一些
技术支持与服务
国内技术支持不是很令人满意,Metalink的支持响应比较慢
国内的技术支持和服务质量和速度都比较令人满意
易用性与易管理性
不是很易用,易管理性也不是很好
易使用,易管理
表3主流数据库各参数对比分析
综合上述因素,有预算充裕且有DBA管理人员的项目可以考虑使用Oracle,否则,选择MSSQLServer也是不错的选择。
2.空间数据库应用优化
在空间数据库优化领域,一般来说,收效最快且收益最大的并不是对硬件升级,也不是对数据库参数的调优,往往是对空间数据库应用程序的一些优化因素的考虑最能见效。
应用层面需要考虑的优化因素主要包括以下方面:
2.1选择合适的空间索引
2.1.1空间索引概述
所谓空间索引就是指在存储空间数据时依据空间对象的位置和形状或空间对象之间的某种空间关系,按一定顺序排列的一种数据结构,其中包含空间对象的概要信息如对象的标识、外接矩形及指向空间对象实体的指针。
作为一种辅助性的空间数据结构,空间索引介于空间操作算法和空间对象之间,通过它的筛选,大量与特定空间操作无关的空间对象被排除,从而提高空间操作的效率。
与传统的数据库管理系统相比,空间数据库涉及对现实世界大量空间目标的处理,空间目标具有其特殊性。
首先,空间目标往往具有不规则的几何形状,且目标之间的空间关系复杂(包括相交、相邻、包含等)、存储需求量大;其次,针对空间目标的空间操作,如求交、求并等计算的代价比传统的选择(Select)或连接(Join)操作要复杂得多,计算量也要大的多;最后,空间目标的空间次序难以定义,难以应用传统的排序技术。
所以,适应于一维属性数据的主关键字索引而设计的传统数据库索引技术,难以直接应用于空间数据库索引领域,设计高效的面向空间目标位置信息的空间数据库索引结构与检索算法,也就成为了提高空间数据库性能的关键所在。
2.1.2优秀空间索引的特点
空间索引的技术和方法是空间数据库关键技术之一,是快速、高效地查询、检索和显示空间数据的重要指标,它的优劣直接影响空间数据库的整体性能。
应用于空间数据库的高效空间索引通常具有如下特点:
1.动态性:
以关系数据库为基础存储的空间数据具有海量化的特点,要能够在数据库中可以以任意顺序删除或添加空间对象,空间索引应具有灵活的动态扩展和变更机制。
2.多层次性:
同样是由于空间数据的海量化特点,面对数据不断膨胀的需求,空间索引需要能够有效地整合二级、三级存储。
3.多空间算子适应性:
空间索引不应只关注某一种空间操作的效率(如空间查询),而忽视了其他空间操作(如空间分析)的效率。
4.普适性:
优秀的空间索引的效率不应与特定的数据类型或添加的顺序强相关,而应该具有普适性的特点。
5.简单性:
空间索引算法并不是越复杂越优秀,有时恰恰相反。
因为复杂的空间索引方法往往会导致错误的实现,对大规模的应用难以保证充分的强壮;另一方面,复杂的空间索引在添加或删除对象时锁定区域往往偏大,在多用户并发时容易导致死锁。
6.可伸缩性:
优秀的空间索引既能适应于几千万条记录的大规模数据,也能适应于较少记录数的小规模数据。
7.空间有效性:
空间索引毕竟是一种辅助性的空间存储结构,所以其所占的空间存储和记录数应尽可能的小,会导致大量空间存储需求和记录冗余的空间索引不会是优秀的空间索引。
8.对SQL的适应性:
优秀的空间索引能够与SQL很好的结合和适应,以适应空间与属性条件联合的查询。
2.1.3空间索引的发展
传统的数据库索引技术有B-树、B+-树、二叉树、ISAM索引、哈希索引等,这些技术都是针对一维属性数据的主关键字索引而设计的,并不能直接应用于空间数据库领域。
为了满足二维及多维空间数据快速检索与分析的需求,自二十世纪八十年代开始,空间索引技术开始兴起,对空间索引的研究引起了国内外学者的足够重视,许多空间索引结构与方法相继提出[1]。
图1空间索引技术的进展
2.1.4空间索引的分类
空间索引技术大致可分为四类:
基于二叉树的空间索引技术;基于B-树的空间索引技术;基于哈希格网的空间索引技术和基于空间目标填充曲线的空间索引技术,下面分别进行介绍。
基于二叉树的空间索引技术
基于二叉树索引结构的空间索引的典型范例有Kd-树、Kd-B-树、Skd-树、LSD-树等。
这一类的空间索引主要用于索引二维点和多维点数据,对复杂的空间对象,如折线、多边形等则需要采用近似法或空间映射技术来进行近似组织,所以这一类的空间索引对于面向空间关系的查询和分析效率非常低。
最初的Kd-树专用于索引点数据,为了便于索引线、多边形等复杂空间要素,一种基于实体标志重复存储技术的Mkd-树空间索引在上世纪80年代初被提出;后来,为了能够将Kd-树存储组织到外存,一种结合了Kd-树和B-树的Kd-B-树被提出;而之后推出的Skd-树则避免了空间目标的重复存储和空间映射,用空间目标的中心点来对空间数据集进行二分索引,在一定程序上提高了查询的效率。
但尽管如此,基于二叉树的空间索引方法对于非点状空间目标的索引效率还是都非常低的。
图2一棵Kd-树的示意图
基于B-树的空间索引技术
B-树及其变体作为一种平衡的多路查找树,被广泛应用于常规的数据库管理系统之中,实践证明其对大型数据库的索引具有极出色的表现。
基于B-树的索引结构,具有B-树的优点:
如深度平衡、结点大小是磁盘页大小的整数倍,适合于以磁盘页为传输单位的数据处理系统等。
目前在GIS领域广泛应用的空间数据索引技术,很多都是基于B-树的,如R-树及其两种变体R*-树和R+-树。
R-树是B-树在多维空间的扩展,它具有B-树的优点,如自动平衡、空间利用率高、适合于外存存储、查询效率高等[2]。
图3R-树示意图
R*-树在结构上与R-树完全相同,只是在树的构造、插入、删除和检索算法上略有区别,R*-树在构造和维护树时除了如R-树一样考虑了目录矩形的面积这一因素,还考虑了目录矩形的重叠(Overlap)因素,即在数据分包的策略上与R-树略有不同。
正因为这一考虑,R*-树在树的构造和维护上开销有所增加,但在检索性能和空间利用率上都得到了较大的提高[3]。
R+-树是R-树的又一种变体。
R+-树通过裁剪数据矩形,使树的中间结点的目录矩形的零重叠率成为可能,中间结构的目录矩形没有重叠,因此在这种索引结构下,点查询只有唯一的查询路径,区域和线的查询路径也大大减少,查询性能也得到很大的提高[4]。
图4R+-树示意图
从上图可以看出,R+-树与R-树的区别有如下几点:
表3-1R-树与R+-树对比分析
R-树
R+-树
树的结点中对数据项和索引项的填充个数要求至少有m个
树的结点中对数据项和索引项的填充个数没有严格限制
树的结点中的目录矩形允许重叠
树的结点中的目录矩形不允许重叠
树中空间目标标识无重复存储
树中空间目标标识可以重复存储在多个叶结点
树的构造和维护代价相对较低
树的构造和维护代价高
查询性能和空间利用率相对较低
查询性能和空间利用率相对较高
基于哈希格网的空间索引技术
由于哈希索引能够通过哈希函数根据查找关键字来直接快速定位查询记录,因此哈希索引被广泛地应用于现有的数据库管理系统中。
基于动态哈希的格网方法的基本思路是将索引空间划分为规则的小方格网,与每个格网相关联的空间目标则存储在同一磁盘页,可以直接通过数组下标得到格网的访问地址以实现快速的空间目标查找。
基于哈希格网的空间索引实现思路比较简单,即通过划分规则方格网,建立空间对象与格网之间多对多的对应关系,在查询和空间分析时先使用格网对数据进行初步过滤,以提高查询和分析的性能。
但由于哈希格网的空间索引建立的是多对多的对应关系,单元格的级数与数量由索引目标及索引目标的大小决定,所以当索引目标数据量很大或索引目标大小非常不均等时,索引空间经过多次细分,往往会产生大量的数据冗余,这无疑会增加查询时访问单元格的数量及查找时的外存访问,所以对于大型的空间数据库系统,基于哈希格网的空间索引效率不佳。
基于空间目标填充曲线的空间索引技术
基于空间目标排序的索引方法的基本思想是按照某种策略将索引空间细分为许多均等的网格,并给每一网格分配一个编号,然后用这些编号为空间目标获得一具有代表意义的数字,这样,多维的空间目标就可以被映射成一维的目标,从而也就可以使用现有数据库管理系统中比较成熟的一维索引技术来提供对空间数据的快速查找和存取。
空间目标排序的技术很多,最常见的是基于Z-排序(Z-Order)和Hilbert-排序[5]的空间索引技术,不是技术的区别在于建立的多维到一维的映射关系是否能够很好地保持多维空间目标间的邻近关系。
Z-排序技术基于空间填充曲线(SpaceFillingCurve),它基于这样一种假设:
任何属性值都可以用固定长度的比特位(bit)来表示,称为k比特位。
沿着每一维的值的最大数值是2k。
它通过将数据空间循环分解到更小的子空间来获得对于给定的空间对象形状的近似数值表示,即通过对全局空间的不断细分,可以找到对每一个空间对象的最小包围网格的数值表示。
Z-排序作为一种空间索引机制,已经被广泛用于多个商业化的空间数据库系统,如OracleSpatial、SuperMapSDX+等。
图5Z-排序示意图
与Z-排序类似,Hilbert曲线也是一种空间填充曲线,它利用一个线性序列来填充全局空间,其构造过程如下图所示:
图6Hilbert曲线示意图
从上图可以看出,Hilbert曲线中没有斜线,所以它的空间邻接性要优于Z排序曲线。
这种空间邻接性的提高,会带来更少的磁盘访问,从而提高查询、分析及数据存取的效率。
但与此同时,Hilbert曲线算法的计算量要比Z-排序复杂一些,在空间索引的构建和维护的代价上要高于Z-排序。
2.1.5空间索引对比分析
空间数据库技术发展至今,已经有上面提到的多种空间索引技术被提出并被广泛应用,到底哪一种空间索引效率更高、更为优秀实难定论。
上面提到的四种空间索引各有特点,根据数据和应用的具体情况选择合适的索引技术,才能在空间数据库应用中取得更令人满意的效果。
下面对四类空间索引技术进行对比分析:
基于二叉树的空间索引技术在实现思路上比较简单,但这种空间索引在应用上有很大的局限性,对点数据的索引效果较好,但对于线、多边形类型的空间数据则难以很好地管理起来,即使通过采用近似法或空间映射技术来进行近似组织,也难以提供令人满意的查询和分析效率。
所以基于二叉树的空间索引技术目前应用已经非常少了。
基于B-树的空间索引技术相对来说是发展得最深入、全面的空间索引技术,也是在空间数据库领域应用得最为广泛的空间索引技术。
包括R-树及其变体,在OracleSpatial、SuperMapSDX+等多种商用空间数据库产品中都有应用。
对于点、线、多边形等多种类型的空间对象,基于B-树的空间索引技术都能提供相当好的查询和分析性能。
但基于B-树的空间索引在进行空间目标的添、删、改时,索引树的维护算法复杂度很高,有时单个对象的修改甚至会导致整棵树的重新构建,所以基于B-树的空间索引技术更适合用于相对静态的空间数据,即不频繁进行添、删、改等编辑操作的空间数据。
基于哈希的格网空间索引技术是实现思路最简单的一类空间索引技术,索引的构造和查询的算法复杂度都很低。
但面临的问题是网格与对象之间的多对多关系在空间对象数量很大,或空间对象的大小严重不均等时会导致大量的索引数据冗余,另外,这种空间索引在查询区域较小时尚能提供较好的查询和分析效率,一旦查询区域很大时(例如超过全局区域的四分之一)就会导致查询效率急剧下降,为解决这种问题,可以建立多层索引,但这又势必会进一步加剧索引数据的冗余。
基于空间目标填充曲线的空间索引技术多用于四叉树索引,四叉树索引与R-树索引互为补充,四叉树索引在查询性能方面不及R-树索引,但对空间对象进行添、删、改等编辑操作时,四叉树索引中不需要分裂等全局操作,只需要修改当前对象的相关索引数据即可,所以四叉树索引的构建和维护代价相当低。
所以,在索引需要经常变更的空间数据时,可以考虑使用基于空间目标填充曲线的空间索引技术。
基于上面的分析可以看出,各类空间索引技术都有其优点和缺点,没有一种索引结构在任何情况下都是绝对有优势的,根据实际应用需求,选择合适的方法,才能取得最佳的效果。
2.2对数据进行必要的简化处理
空间对象的复杂度决定了空间数据量的大小,也决定着GIS应用对网络和服务器的压力大小,所以如果能够简化空间对象,可以在很大程度上提高GIS应用的性能。
由于数据采集途径的原因,一些空间数据,尤其是行政区类型的空间数据,其点数非常多,大多数GIS系统都提供了空间数据重采样的功能,在不损失精度的情况下对这些数据进行一下重采样可以大幅减少这类数据占用的磁盘空间,降低网络和服务器的负载。
一些GIS系统提供了数据压缩的功能,对空间数据进行适当的压缩也可以达到很好的减少I/O,降低负载的效果。
2.3进行查询的设计与优化
查询是空间数据库应用中非常频繁也非常昂贵的操作,所以对查询进行设计与优化带来的收益非常明显。
首先,要理解查询的代价非常高,每一个查询,需要与服务器端的交互,服务器端需要对查询进行解析,需要判断查询语法是否合法,需要判断查询的表和字段是否存在,然后将查询转化为执行计划并执行,最后还要将查询结果汇集并通过网络反馈给用户,这一连串的操作都很复杂,也都很消耗资源。
所以,在GIS应用中应该尽量减少查询,只有在非常必要的情况下再执行查询。
在编写GIS应用程序时尤其要注意这些方面:
在循环中要慎用查询,在界面的鼠标事件和菜单状态事件中要慎用查询。
其次,对于查询尽量明确查询返回的列,返回的列的多少决定着服务器返回客户端的数据量。
目前的很多应用中都以Select*来进行查询,这在不需要全部列的情况下对性能的影响是比较严重的,明确指定需要返回的列可以降低服务器和网络负载,提高性能。
3.总结
综上所述,空间数据库优化是一门很综合的技术,需要考虑方方面面的因素,也需要在应用实践中不断地积累经验,提高水平。
尽管空间数据库优化的因素非常多,但还是有一些原则性的要点是可以遵循的:
●硬盘的速度远低于内存,可以降低I/O次数和数据量的措施都可以有效提升性能。
●网络传输是GIS应用里的关键路径,尤其是在多用户并发的系统里,所以减少网络传输数据量可以有效提升性能。
●服务器要负载所有客户端的所有请求,在GIS应用里服务器的压力很大,所以减少查询和降低查询复杂度有益于提高服务器响应速度。
作者简介:
姓名:
李绍俊,
出生年月:
1978年10月,
性别:
男,
专业研究领域:
空间数据库。
参考文献:
[1]何晋川,张培刚.空间索引研究及其进展[J].福建电脑.2004(08).
[2]张明波,陆锋,申排伟,etal.R树家族的演变和发展[J].计算机学报.2005(03).
[3]陈敏,王晶海.R*-树空间索引的优化研究[J].计算机应用.2007(10).
[4]汤茂斌,陈超,李就好.R~+树优化DBSCAN的数据挖掘方法研究[J].微计算机信息.2008(24).
[5]李晨阳,段雄文,冯玉才.N维Hilbert曲线生成算法[J].中国图象图形学报.2006(08).