理论教育 空间数据库技术应用:引擎解析与优势

空间数据库技术应用:引擎解析与优势

时间:2023-08-18 理论教育 版权反馈
【摘要】:空间数据库引擎的概念最早由ESRI提出。1. Arc SDE的体系结构Arc SDE空间数据库引擎的逻辑结构采用成熟的Client/Server结构。

空间数据库技术应用:引擎解析与优势

5.3.1 空间数据库引擎概述

空间数据通常具有多源、异构及多尺度特征,且往往具有复杂的拓扑关系。受面向对象思想的启发,人们要求将复杂的空间实体操作封装成类,以便简化一般人员对空间数据的操作难度,这便产生了一个新的概念——空间数据库引擎(Spatial Database Engine, SDE)。

空间数据库引擎的概念最早由ESRI提出。ESRI对SDE的定义是: 从空间数据管理的角度看,SDE是一个连续的空间数据模型,借助这一模型,我们可以将空间数据加入到关系数据库系统(RDBMS)中去。我国科学技术名词审定委员会审定公布的定义为: 使空间数据可在工业标准的数据库管理系统中存储、管理和快速查询检索的客户/服务器软件,它将空间数据加入到扩展关系数据库管理系统中,并提供对空间、非空间数据进行有效的管理、高效率操作与查询的数据库接口

由上述定义可以看出,SDE可以理解为基于特定的空间数据模型,在特定的数据存储、数据库管理系统的基础上,提供对空间数据的存储、检索等操作,以提供在此基础上的二次开发的程序功能集合。同时,SDE又可以看做是基于大型关系型数据库的客户/服务器模式的软件,即相对于客户端,SDE是服务器,提供空间数据服务的接口,接受所有空间数据服务请求; 而相对于数据库服务器,SDE则是客户端,提供数据库访问接口,用于连接数据库和存取空间数据。

5.3.2 国内外空间数据库引擎技术分析

为实现多源、异构、多尺度空间数据的统一集成管理,近年来,各大数据库厂商及GIS厂商就空间数据库引擎做了大量的研究工作。国内,GIS厂商北京超图公司采用多源空间数据无缝集成技术研发了Super Map SDX,其中包括: SDXfor SQLServer、SDXfor Oracle、SDXfor Oracle Spatial、SDXfor SDE。国产数据库产品DM3也着手研发支持空间数据库的产品,通过二进制的对象数据类型来支持空间数据的存储,但它没有针对空间数据提供空间索引机制,也不提供空间数据分析功能。国外,Map Info公司的Spatial Ware是第一个在对象关系数据库环境下支持基于SQL进行空间分析和空间查询的空间数据库引擎,但它采用的数据模型不支持空间拓扑关系,空间分析功能较弱。Informix公司则推出了自己的Informix ILLustr产品,该产品具有良好的面向对象特征,对空间数据的处理和操作通过Database Blade Spatial Module完成。Oracle公司推出的Oracle Spatial,为空间数据的存储与索引定义了一套数据库结构,并通过扩展Oracle PL/SQL为空间数据的处理和操纵提供了一系列函数和过程,从而实现了对空间数据服务的支持。而世界著名的地理信息研究机构——ESRI公司则推出了Arc SDE“智能化”空间数据库引擎解决方案。目前,国内超图公司的Super Map SDX、Oracle公司的Oracle Spatial及ESRI公司的Arc SDE在相应领域得到了较为广泛的应用。下面介绍本章案例所涉及的Arc SDE空间数据库引擎。

5.3.3 Arc SDE空间数据库引擎

Arc SDE基于SDE技术,在标准的关系数据库系统的基础上,通过增加一个空间数据管理层,实现了对现有的关系型数据库管理系统或对象关系型数据库管理系统的空间扩展,能够将空间数据和非空间属性数据统一存储于商用DBMS中,为网络中的任意客户端应用程序提供了一个在DBMS中存储和管理GIS数据的数据通道。这一数据通道为GIS应用程序和基于RDBMS的空间数据库之间提供了一个开放的接口,充分地把GIS和RDBMS集成起来,屏蔽了系统差异和数据库系统平台的差异,允许Arc GIS在多种数据库平台上管理地理空间数据,保证了特定领域的GIS应用,实现了不同的客户端之间的高效共享和互操作。随着技术的不断进步,Arc SDE经历了几次版本更新后,从Arc GIS9.2开始, Arc SDE已归于Arc GIS9.2Server产品线下,成为整合Arc GISServer的重要组件。

1. Arc SDE的体系结构

Arc SDE空间数据库引擎的逻辑结构采用成熟的Client/Server结构。服务器端, Arc SDE使用giomgr进程与数据库进行交互,每个Arc SDE服务都对应一个用户进程,通过用户进程来监听用户的服务请求(服务器名和端口)及连接验证(用户名和密码),并清理断开的连接。客户端,由服务器端的giomgr进程为每个连接到Arc SDE服务器的客户端应用程序生成一个gsrvr进程,通过关系数据库系统的服务端程序,gsrvr进程将用户所有的数据查询及编辑请求提交到服务器端,从而完成客户端与服务器端的交互。

Arc SDE空间数据库引擎在连接实现上采用了三层体系结构: 即RDBMS Server、Arc SDEServer和Client。其体系架构如图5.3所示。

图5.3 Arc SDE体系架构图

图5.3所示的体系结构中,Arc SDE服务器端软件需要在RDBMS(如Oracle、SQL Server等)基础上进行安装,而且必须注意安装的先后顺序,即需先安装配置好关系数据库系统,再安装相应版本的Arc SDE组件。Arc SDE安装过程中需要提供系统管理员的账号及密码,并会自动引导用户在关系数据库中创建SDE表空间和用户,安装完毕后,将自动启动Arc SDEService(esri_sde)服务。实际工作中,通常将RDBMS服务器和Arc SDE应用服务器安装配置在同一台服务器主机上,而客户端可以是运行在Internet/Intranet上的任意一台客户机,通过TCP/IP网络协议与服务器通信

RDBMS服务器、Arc SDE应用服务器及客户端三者之间的交互访问模式如下: 客户端应用程序通过Arc SDE应用编程接口向Arc SDE应用服务器发出空间数据服务请求, Arc SDE应用服务器接到服务请求后,由SQL引擎根据空间数据的特点将空间查询转换为RDBMS服务器可直接识别的SQL查询,RDBMS服务器再对该SQL语句进行解释,完成对数据库的搜索,然后将满足查询条件的空间数据或属性数据通过Array Buffer缓冲机制将数据传送给Arc SDE应用服务器,Arc SDE应用服务器再使用自己的缓冲器通过网络将数据发回客户端。

在这种结构下,RDBMS服务器执行所有的空间查询和检索操作,并将结果返回给客户端; Arc SDE应用服务器则主要负责对服务请求进行“翻译”,起着数据通道作用。

2. Arc SDE的基本功能

空间数据库引擎处于GIS应用体系中的应用处理层,是连接客户端应用与RDBMS服务器之间的数据通道,在建立GIS应用体系中具有极其重要的地位。因此,有学者指出:真正意义上的面向分布式空间数据库系统和GIS,正是将空间数据库引擎引入之后才得以建立。鉴于空间数据库引擎在GIS体系中的特殊作用,作为客户端应用与RDBMS之间的数据中间件,它不仅要具有一般数据库管理系统存取和管理数据的能力,还必须具备以下基本功能:

①支持多种数据库管理系统。Arc SDE采用统一的数据标准和组件接口,因此能够包容较多的数据类型,支持多种数据库管理系统,并且易于实现数据库的更新和扩展。Arc SDE作为多种DBMS的通道,它能够为Oracle、Microsoft SQL Server、IBM DB2及Informix等多种DBMS平台提供了高性能的GIS数据管理功能。Arc SDE对多种数据库系统平台的支持,大大拓宽了GIS的应用领域。

②提供数据的并发操作及安全控制机制。Arc SDE为了实现多用户共享空间数据库引擎的服务,提供对用户的多线程执行,可以实现在多用户环境下的高效并发访问。同时,因为Arc SDE构建在成熟的关系型数据库管理系统之上,它充分利用了数据库系统的安全控制机制,从而保证了地理空间数据的安全性和可靠性。(www.daowen.com)

③支持分布式数据共享。Arc SDE采用客户端/服务器(C/S)体系结构及成熟的数据库技术,能够将地理空间数据以记录的形式进行存储,数据可以分散存储于网络上的各个空间数据库中,而且连接的数据库和用户数量不受限制,直至达到DBMS上限。这就为基于网络的空间数据分布式调用提供了技术保障。

④支持空间数据索引和海量数据的管理。空间数据索引是一种介于空间操作算法和地理对象之间的辅助性空间数据结构。通过筛选处理,它能够排除大量与特定空间操作无关的地理对象,从而缩小了空间数据的操作范围,这便提高了空间操作的速度和效率。在Arc SDE的应用体系中,数据库管理系统的强大数据处理能力加上Arc SDE独特的空间索引机制,使得每个数据集的数据量不再受到限制,轻松实现对海量空间数据的管理。

⑤支持空间关系运算及空间分析。由于单纯的数据库管理系统(DBMS)并不直接支持对几何数据的运算,在GIS系统体系结构中,都需要空间数据库引擎对空间数据加以处理,从而保证空间数据库系统能够提供对地理空间数据进行必要的空间关系运算和空间分析。

⑥支持GIS工作流和长事务处理。GIS中的数据管理工作流,诸如: 数据的Check_In/Check_Out、多用户编辑、松散耦合的数据复制及历史数据管理等,都依赖于Arc SDE长事务处理和版本管理。

⑦灵活的配置。Arc SDE支持多种操作系统,例如Windows、Linux、Unix等,能够在同一局域网内或跨网络对应用服务器进行多层结构的配置。

3. Arc SDE对空间数据的存储与管理

Arc SDE通过将空间数据类型加入到关系数据库中的方式,在不影响也不改变现有数据库或应用的情况下,借助Business Table(业务表)、Feature Table(要素表)、Spatial Index Table(空间索引表)三个表来实现对矢量数据和栅格数据等海量地理空间要素的存储和管理。

对于矢量数据的存储,Arc SDE采用压缩二进制格式对空间要素的几何图形进行存储。对于栅格数据的存储,其方式类似于存储压缩二进制的矢量要素,区别在于: 对栅格数据进行存储时,Arc SDE会在创建Business Table过程中,为Business Table增加一个栅格列,并同时创建栅格表、栅格辅助表、栅格分块表、栅格波段表和栅格元数据表

Business Table负责属性数据和空间数据之间的连接管理。Business Table通过向一个已经存在的关系型数据表中加入图形数据项,从而使该关系型数据表成为空间可用(Spatially Enabled)。图形数据项为整型的特征ID号,用来唯一标识一个图形数据, Business Table就通过该ID号与Feature Table、Spatial Index Table建立关联。

Feature Table采用BLOB(binarylargeobject)二进制类型字段来存储空间地物要素的几何形状(shape)。Feature Table和Business Table通过FID关联,FID由Arc SDE自动生成,并且对于每一空间项,其值是唯一的。

Spatial Index Table存储对落在一个规则格网内的图形的引用,它由空间项层数据来识别。Spatial Index Table包括格网单元信息、要素标识符(FID)、要素的封装边界。对于落在每一单元内的每一图形要素在Spatial Index Table中都有一条记录与其对应,当执行空间查询时,落入查询范围内的单元将被识别并会返回其中的候选图形。

Feature Table与Spatial Index Table对用户而言是不可见的,而Business Table对用户是可见的。

4. Arc SDE版本管理机制

DBMS中,事务(Transaction)是数据库的逻辑工作单位,是用户定义的一组操作序列, DBMS对多用户并发操作的控制便是以事务为单位进行的。与DBMS采用“封锁”技术解决其事务调度一样,GIS空间数据库系统也需要一种技术来实现对多用户并发操作及其长事务进行管理,这便引入了版本(Version)的概念。版本是GIS空间数据库管理数据的一种机制,版本使得多个用户能够在不用锁定数据库或者复制数据库的状态下同时编辑同一个版本或者同一个Geodatabase。我们知道,一个Geodatabase可能有很多版本,但不管一个Geodatabase有多少个版本,数据库始终只保存一套Feature Classes和Tables。每一个Feature Class和Table又包含两个Delta表: 即A表和D表,每次版本中记录的变更或删除,都可能引起一个或者两个Delta表中的内容随之变更。

事实上,Arc SDE对版本变更的处理正是依据Delta表中的记录的变化进行的: 首先, A表和D表的每一行都用State ID进行标识,当对任何一个版本进行编辑,都会产生一个新的State,同时产生新的一行追加到A表或D表中,这样,A表或D表中的一系列States记录就反映了版本从原始表状态到当前表状态的变化,该系列称为Lineage。当我们需要查询或显示一个版本时,Arc SDE就会从版本的Lineage中找到State ID,然后从A表和D表中搜索相应的信息。

当编辑Geodatabase时,Delta表的大小和状态的数量都在增加,表格与状态越多,每次处理时的速度就会越慢,因此需要定期利用Arc Catalog中的Compress工具进行数据库压缩,利用Analyze工具实现数据库的Statistics重建。

版本管理是GIS空间数据库系统实现多用户、多时态、多版本数据管理的重要手段。在实现多用户的并发操作和长事务管理中发挥着重要作用,在对历史数据存储的同时,能够避免数据库的过分增大,又能够方便地实现版本回溯。因此,版本管理在GIS空间数据库系统中有着广泛的应用和重要意义。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈