基于 oracle Spatial 的空间数据库缓存的关键技术

周 芹,李绍俊,宋关福,曾志明

( 1 中国科学院地理科学与资源研究所, 北京 100101; 2 北京超图地理信息技术公司, 北京 100101 )

论文来源:地球信息科学

摘要:Oracle Spatial 是目前发展得比较成熟的对象关系型空间数据库存储模型, 它实现了空间数据与属性数据的一体化存储, 可以定义特定的数据类型, 具有开放的存储格式, 为 GIS 数据共享提供新的解决方案; 但由于其采用扩展结构的空间数据库模型, 对空间数据进行间接存取, 数据存储和…

关键词: 缓存; oracle Spatial; 空间数据库

1 引言

空间数据是 GIS 的重要组成部分。Oracle Spa-tial 是目前发展得比较成熟的对象关系型数据存储模型, 很多 GIS 应用系统都将其作为后台数据存储系统存放 GIS 数据。Oracle Spatial 与传统的数据库存储模型相比优势主要表现在 : ( 1) Oracle Spatial的数据存储结构是开放的, 它明确定义并公开了空间数据的逻辑结构, 使得基于 Oracle Spatial 的 GIS空间数据共享成为可能, 为 GIS 空间数据共享提供了新的解决方案; ( 2) 空间数据与属性数据的一体化存储, 空间数据和属性数据的操作在 SQL 一级可以任意地有机结合。

但是这种扩展结构模型的空间数据库对空间数据访问是间接的, 效率比较低; 作为客户端应用程序, 从数据库获取的 MDSYS.SDO_GEOMETRY对象一般需要解析成特定的数据格式; 而且 Oracle Spatial 的数据访问接口( 如 OCI, Oracle Connection Interface) 不具备一次性获取多条记录的能力, 只能逐条获取记录, 加重了服务器负担和网络负载, 延长了客户端等待时间。在 GIS 中数据的获取是后期查询、显示、分析和处理的基础 , 面对 GIS 海量数据, 数据访问效率的问题必须解决。本文旨在研究空间数据库缓存的关键技术及应用。

2 扩展结构空间数据库模型的应用分析

实际应用中, 数据量的急剧增长、对数据安全性、一致性等的要求, 基于传统文件(Flat File)方式管理空间数据越来越不能满足 GIS 应用的需求。利用数据库系统( DBMS) 来存储 GIS 数据, 建立空间数据库系统成为必然趋势。

2.1 空间数据库模型

理论上空间数据库模型有: 混合数据库模型( Hybrid Model) 、统一数据模型( Integrated Model) 、扩展结构模型 ( Extended Model) 、面向对象模型( Object- Oriented Model) 和时空数据模型( Spatial-Temporal Model) 。随着各种商业数据库的发展, 目前在 GIS 领域中应用比较成熟的是统一数据模型、混合数据模型和扩展结构模型。

混合数据库模型把空间数据和属性数据分开存储: 空间数据及其拓扑关系存放在文件中, 属性数据存放在关系数据库中, 二者通过唯一的标识符建立联系。SuperMap 的 SDB 和 MapInfo 的 Table 格式采用的都是混合模型。

统一数据模型是一种纯关系数据模型, 其空间数据和属性数据都用关系数据库的二维关系表来存储, 使用标准关系连接机制建立空间数据与属性数据的关联。SuperMap SDX+和 ESRI 的 Arc SDE均采用了统一数据模型。

扩展结构模型采用统一的 DBMS 存储几何数据和属性数据, 与统一数据模型不同的是, 它在标准的关系数据库上增加几何管理层, 也可称为对象- 关系模型。

Oralce Spatial 采用扩展结构模型, 作为 Oracle管理空间数据的插件, 是 Oracle 在原有纯关系数据库基础上增加的空间数据管理层。

2.2 扩展结构模型的应用问题

扩展结构模型虽然省去了混合数据模型中空间数据和属性数据繁琐的连接, 也避免了统一数据模型中数据类型定义的局限性, 可以定义特定的空间数据类型, 但是由于通过标准数据库之上的空间数据管理层对空间数据进行间接操作, 其数据存储和访问的效率比较低, 在访问大数据量空间数据时表现得尤为明显。

( 1) Oracle Spatial 的数据存储机制。Oracle Spatial 实现了空间数据和属性数据的一体化存储,使两者数据存放在一张二维数据表中。几何对象存储 为 MDSYS.SDO_GEOMETRY 类 型 。 SDO_GE-OMETRY 通过存储实体的类型、参数化对象的控制点或者非参数化对象的坐标点来描述一个几何对象, 可以表现为点、线、多边形、复合对象等 GIS 中常用的空间数据类型, 也可描述多维信息; 几何对象对应的属性数据存放在同一条记录的其他列。

( 2) Oracle Spatial 中用 SDO_GEOMETRY 对象存储空间数据, 而不是直接把空间数据以二进制块的形式存放在关系数据库中, 虽然实现了数据存储格式的透明化, 任何客户端应用程序都可以从数据库中读取空间数据, 但是服务器和客户端存取数据时都存在对空间数据的构造和解析的过程, 这种间接操作有损效率。且由于 Oracle Spatial 的客户端数据访问接口不具备从服务器端批量地获取记录的能力, 只能逐条取出, 对服务器的访问频繁, 且增加了网络传输的负担和客户端的等待时间。因此Or-acle Spatial 的数据访问能力成为影响其在 GIS 领域广泛应用的重要因素。

更多内容请查看pdf