管理模式文件与关系数据库混合管理系统
文件与关系数据库混合管理系统一般用文件管理系统管理空间数据,而用商用关系数据库来管理属性数据,它们之间的联系通过目标标识或内部标识码进行连接。导致这种连接方式的主要原因是早期的数据库管理系统不提供高级编程语言如c的接口,只能采用数据库操纵语言,这样通常会启动两个系统(GIS空间数据管理系统和关系数据库管理系统),甚至是两个系统来回切换,用起来很不方便。
全关系型空间数据库管理系统
全关系型空间数据库管理系统是指空间数据和属性数据都用现有的关系数据库管理系统管理。关系数据库管理系统的软件厂商不作任何的扩展,由GIS软件商在此基础上进行开发,使之不仅能管理结构化属性数据,而且能管理非结构化的空间数据。其管理空间数据有两种模式,一种是基于关系模型的方式,空间数据按照关系数据模式组织,这种方式在访问空间数据时需要复杂的关系连接运算,非常费时:另一种是将空间数据的变长部分处理成Binary二进制块Block字段,这种方式省去了前面所述的大量关系连接操作,但二进制块读写效率要比定长的属性字段慢得多,特别是牵涉到对象得嵌套,速度更慢。
大多数商用GIS平台采用关系型数据库管理系统(RDBMS ),在处理复杂数据、进行复杂操作时有很多限制难以克服。RDBMS向对象关系数据库管理系统(ORDBMS )或面向对象的数据库管理系统(OODBMS )过渡是大势所趋。
面向对象空间数据库管理系统
面向对象模型最适应于空间数据的表达和管理,它不仅支持变长记录,而且支持对象的嵌套、信息的继承与聚集。面向对象的空间数据库管理系统允许用户定义,对象和对象的数据结构以及它的操作。当前已经推出了若干个面向对象数据库管理系统如02等,也出现了一些基于面向对象的数据库管理系统的地理信息系统,如GDE等。
面向对象的方法具有很强的数据建模能力。首先,通过类定义机制,数据库设计者可以创建新的数据类型,直接完成实体的建模,而不会局限于预先定义的数据类型与操作;第二,OODBMS的指针数据类型在表达目标之间的关系时十分有利;第三,通过继承可以表达类型/子类型之间的关系。子类可以从超类中继承变量与方法:第四,目标行为建模扩展了建模的应用范围。此外,不需要对数据类型进行标准化可以大量减少数据冗余RDBMS中的关系表数目。
对于GIS应用,最初时倾向于采用OODBMS的方法,它所提供的建模语义的丰富的可扩展性及其与编程语言紧密结合的完整计算方法,非常具有吸引力。但是由于OODBMS缺乏有效的查询语言支持,管理与维护的复杂度很大,在GIS界并没有引起广泛的共鸣。相反,随着各大RDBMS厂商对关系数据模型大刀阔斧的有效扩展和商业化实现,使得面向对象的关系数据库管理系统重新焕发了无穷的生命力,也成为当前海量空间数据管理的有效载体。对象关系数据模型也成为空间数据表达的有效技术手段。
对象关系数据库管理系统
由于直接采用通用的关系数据库管理系统的效率不高,而非结构化的空间数据又十分重要,所以许多空间数据系统的软件商纷纷在关系数据库管理系统中进行了扩展,使之能直接存储和管理非结构的空间数据,如Informix, Oracle等推出了空间数据专用模块,定义了点、线、面、圆、长方形等数据对象的API函数。这些函数,将各种空间对象的数据结构进行了预先的定义,用户使用时必须满足它的数据结构的要求,用户不能根据GIS的要求再定义。
这种扩展的空间对象管理模块主要解决了空间数据变长记录的管理,虽然它仍然没有解决对象的嵌套问题,空间对象也不能由用户任意定义,但效率要比前面所述的二进制块的管理高的多,这种关系数据库通过扩展数据模型而带来巨大优势:
通过允许增加新的、用户定义的抽象数据类型(ADTs)及面向对象编程语言的其他特征,如继承、操作函数、封装等提高RDBMS的数据类型系统。由于是基于RDBMS的扩展,RDBMS上大量的工作成果得以保留。本质上,这是一种关系世界的SQL和对象世界的基本建模元素之间的结合。
采用面向对象语言的编程模型,增加一些特征,以维护数据的持续性及程序执行的原子性。
空间数据管理的特殊需求空间数据主要有5种不同于传统属性数据的属性:
空间化
每个空间几何对象都具有空间坐标,即空间几何对象隐含了空间分布特征,这意味空间数据库在空间数据组织方面,要考虑它的分布特征,除了要具备通用的数据库所具有的关键字索引外,一般还要具备空间索引
能力。
非结构化
在当前通用的关系数据库管理系统中,数据记录一般是结构化的。即它满足关系数据模型的第一范式,每一条记录是定长的,数据项的表达只能是原子结构,不允许嵌套记录。而空间数据则不能满足这种结构化的要求。若将一条记录表达一个空间对象,它的数据项可能是变长的,它可能是2对坐标,也可能是10万对坐标;其二,1个对象可能包含另外的1个或多个对象,例如,1个多变形,它可能含有多条段弧段。若一条记录表示1个弧段,在这种情况下,1条多边形的记录就可能嵌套多条弧段的记录,所以不能满足关系数据的范式要求,这也是为什么空间几
何数据难以直接采用通用的关系数据管理的主要原因。
空间关系
空间数据除了前面所述的空间坐标隐含了空间分布关系外。空间数据中记录的拓扑信息表达了多种空间关系。这种拓扑数据结构一方面方便了空间查询和空间分析,另一方面也给空间数据的一致性和完整性维护增加了复杂度,特别是有些几何对象,没有直接记录空间坐标的信息,如拓扑地面状目标,仅记录组成它的弧段的标识,因而进行查询、显示和分析操作时都要操作和检索多个数据文件方能得以要实现。
分类编码
一般而言,每一个空间对象都有一个分类编码,而这种分类编码往往属于国家标准,或行业标准,或地区标准,每一种空间几何对象的类型在某个GIS中的属性项个数是相同的。因而在许多情况下,一种空间几何对象类型对应于一个属性数据表文件。当然,如果几种空间几何对象类型的属性项相同,也可以多种空间几何对象类型共用一个属性数据表文件。
海量空间数据
空间数据量是巨大的,通常称为海量数据。之所以成为海量数据是指的数据量一般比通常的数据要大得多,一个城市的地理信息系统的数据量可能达几十GB,如果考虑影象数据的存储,可能大几百个GB;对于全国的地理信息系统来说,其数据量更大,达到几十TB,甚至是几百TB,这样大的数据量要求空间数据库也必须具有海量空间数据的存储能力。
实现方式目前基于空间数据库的组织管理实现主要有两种方式:面向对象方式和对象一关系型方式。
面向对象方式将对象的空间数据和非空间数据以及操作封装在一起,由对象数据库统一管理,并支持对象的嵌套、信息的继承和聚集,这是一种非常适合空间数据管理的方式。但目前该技术尚不成熟,特别是查询优化较为困难。
对象一关系型是目前空间数据库的主要技术,它综合了关系数据库和面向对象数据库的优点,能够直接支持复杂对象的存储和管理。GIS软件直接在对象关系数据库中定义空间数据类型、空间操作、空间索引等,可方便地完成空间数据管理的多用户并发、安全、一致性/完整性、事务管理、数据库恢复、空间数据无缝管理等操作。因此,采用对象关系型数据库是实现空间数据管理的一种较为理想的方式。当前,一些数据库厂商都推出了空间数据管理的专用模块,如IBM Informix的Spatial DataBlade Module,IBM DB2的Spatial Extender和Oracle的Oracle Spatial等,尽管其功能有待进一步完善,但己给空间数据的应用及GIS软件开发带来了极大的方便。1
系统结构与功能空间数据库管理系统的结构如图所示:
具体来说系统要实现的主要功能:
合理的空间数据存储与组织空间数据库管理系统在面向空间实体及其对象关系数据模型的支持下,实现空间数据的组织和存储,空间位置等信息仅作为空间实体的一个属性。从而改变现有的以图层为单位的空间数据组织模式。空间数据的存储将空间信息关系化,在统一的空间数据模型的支持下,实现在成熟的商用数据库管理系统中的关系化存储。为实现“空间一属性数据一体化”、“矢量一栅格数据一体化”和“空间信息一业务信息一体化,,奠定基础。同时通过建立合理的包括拓扑在内的空间索引机制,以提高空间数据的访问和操作效率。
统一的空间数据访问空间数据的访问是现有对象关系数据库管理系统的SQL的有效扩充,所有的空间数据访问采用扩充SQL这一统一的接口来实现。
高效的空间数据操作所有的空间操作以统一的空间数据模型为基础,紧密结合商用数据库管理系统的特点和优点,利用商用数据库管理系统的功能,从数据库管理系统底层实现空间数据的操作,并合理利用空间数据索引技术,实现空间数据的高效操作。
统一的元数据管理参考国际和国内的相关标准,设计和实现空间数据库管理系统的元数据规范,为用户访问和操作空间数据提供充分的空间数据语义信息。
用户管理用户管理是实现数据安全的有效保障。空间数据库管理系统的用户管理必须紧密结合商用数据库管理系统中的用户管理,是在商用数据库管理系统用户管理的扩充和发展。
并发管理空间数据库管理系统支持多用户并发访问,设计合理的多用户并发访问控制机制可以大大提高系统的性能,并使得空间信息达到最大程度的共享。
长事务处理长事务处理是空间信息处理中的一个必须的功能。利用关系数据库管理系统的功能,设计和实现长事务处理的合理机制。
支持空间数据仓库的建立空间数据仓库和联机空间分析是进行空间分析决策的基础,空间数据仓库集成现有的空间数据库系统数据,进一步发掘空间数据的潜在信息。2
系统特征1.具有一套能代表原始空间数据类型(点、线、面)的空间数据类型集,以及在这些数据类型上进行复杂数据类型的生产和运算,比如交汇和距离。
2.空间数据类型和操作必须是标准查询语言的一部分,在系统中必须可以通过它来访问和操作空间数据。例如,关系型数据库系统SQL可以被扩展成支持空间数据类型和操作。
3.系统应提供性能优化,比如处理空间查询(区域查询和联合查询)的索引,上载和查询同时进行,这些对空间数据非常有用的。