高性能桌面空间数据库研究

杜晓敏,余志伟,王尔琪

( 1. 中国矿业大学( 北京) 地球科学与测绘学院,北京 100083; 2. 北京超图软件股份有限公司,北京 100096; 3. 中国科学院 地理科学与资源研究所,北京 100101)

论文来源:测绘与空间地理信息

摘要:以超图软件股份有限公司( 简称超图) 新一代“共相式 GIS 内核”的桌面空间数据库项目为支撑,阐述了桌面型空间数据库的特点,研究中面临的技术难题,以及笔者的简要实现思路。同时将实现的桌面空间数据库在性能、兼容性和稳定性方面的表现与同类产品进行了对比测试和说明。最…

关键词: 空间数据库; 桌面空间数据库; GIS 文件格式; 桌面数据库

0 引 言

空间数据库管理系统是 GIS 软件的核心,每一次 GIS数据存储技术的变革都带来 GIS 软件的革命[1]。其发展经历了从空间图形文件到空间、属性分别以文件存储的模式,到现在的以关系型数据库进行统一存储的过程。空间数据的共享也存在着文件层面的数据格式转换、数据库层面的直接数据访问和网络层面的数据互操作等模式[2 - 4]。

大型关系型数据库由于其可以存储海量数据,支持多用户并发读写,支持结构化查询,已经成为当今 GIS 数据的主流存储,并随着数据库技术的发展和空间数据应用模式的改变正朝着非结构化、对象化、海量化发展。相对于大型关系型数据库,广泛应用于中小型应用的桌面型数据库( 如 Microsoft Access,FileMaker Pro,Alpha Five,Paradox,Lotus Approach 以及开源的 SQLite) ,由于其部署简单,读写快速,无需调优,易于迁移,使用及维护代价相对较低,也逐渐成为空间数据存储的优良介质,可以被用来进行中小型系统的构建、空间数据归档和数据交换。桌面数据库在不断地发展,正在支持更大的文件,更好地支持子查询、事务、触发等功能,因此可以支持较为复杂的地理信息系统。

采用桌面数据库作为空间和属性数据存储介质的GIS 空间数据库,它和大型空间数据库各有优势,互为补充。各大 GIS 厂商都既有面向大型数据库的空间数据引擎,也有面向桌面应用的桌面空间数据库,例如 ESRI 的GeoDatabase 和 SuperMap 的 SDBPlus。其中 SuperMap 的桌面空间数据库是一种基于直接数据访问的数据共享模式体系中的数据提供者的实现[5]。

1 研究现状及面临的挑战

1. 1 桌面空间数据库发展状况

桌面空间数据库有两种实现模式。

1) 纯关系型数据库模式

将空间数据和属性数据都放在一个桌面数据库的文件中,属性字段以桌面数据库提供的基础类型存储,空间数据以大二进制字段存储,每一个几何对象对应桌面数据库的一条记录。空间数据的一个数据集与数据库的一张表对应,数据集的信息、元数据保存到数据源的注册表中。其数据可以通过 SQL 语句或数据库开放的访问接口进行数据的读写。其实现类似于大型空间关系数据库,如 ESRI 的 Personal Geodatabse 就是基于这种思路实现的。由于桌面数据库对大二进制字段的读写效率较差,这种模式实现的 GIS 桌面数据库性能往往不高。

2) 文件与关系数据库混合存储模式

这种模式中,空间数据与属性数据独立地组织、管理与检索,仅通过它们的主关键字建立相互的连接。空间数据存储在某种格式的文件中,每一个空间对象有一个唯一的 ID 值进行标识,可依靠文件中的索引机制快速地查找到某一 ID 值对应的空间对象的位置[6]。属性数据存放在桌面数据库当中,每一条属性数据有一个与之对应的空间对象相同的 ID 值。属性数据可以通过 SQL 语句或数据库开放的访问接口进行数据的读写。当查询符合某一属性条件的空间对象时可以通过查询属性表对应的 ID 值到空间数据文件中找到匹配的几何对象。以这种方式实现的 GIS 桌面数据库结合了数据库的强大查询功能和二进制文件的高效读写性能,成为实现 GIS 桌面数据库的理想模式。SuperMap 的 SDBPlus 就是按这种模式实现的桌面空间数据库。

1. 2 桌面空间数据库存在的问题

笔者通过对 SuperMap 的 SDBPlus 和 ESRI 的 Personal Geodatabase 两种桌面空间数据库进行研究,找出了现有实现存在的一些问题,主要是数据容量小、易于损坏、不能跨平台等。

以 SDBPlus 为例: 它是基于 Microsoft 的 Access 数据库实现的。由于 Access 不可以存放超过 2 GB 的数据,数据容量较小,对大型的应用造成困难; 由于 SDBPlus 中的几何数据文件中存放了整个 GIS 数据库的结构,该结构由于数据改变时要重写,当应用程序由于崩溃或断电来不及写入时,文件结构就会是错误的,数据因此被损坏,这种损坏对于数据采集和地图编辑是灾难性的; 另外由于Access 数据库必须依赖微软的 DAO 接口,跨平台的应用十分困难,虽然有一些软件可以在非 Windows 平台上模拟 DAO 调用,但其效率远达不到 GIS 这种数据密集型的应用。

与此类似 Personal Geodatabase 也基于 Access 实现,也具有不能进行海量数据存储和受限于 Windows 平台的缺陷。

更多内容请查看pdf