空间数据库的开源格局

空间数据库的开源格局
孙 剑

 

GIS的流行离不开数据库的支撑,在GIS领域逐渐发展的历程中,我们看到了很多开源数据库活跃的身影,这些默默无闻的开源数据库项目为GIS今天的繁荣贡献了开源的力量。

由于空间数据具有空间位置、非结构化、空间关系、分类编码、海量数据等特征,一般的商用数据库管理系统难以满足要求。为了提高数据库管理系统(DBMS)对空间数据的管理能力,国内外先后出现过文件与关系数据库混合管理系统、全关系型空间数据库管理系统、关系型数据库+空间数据引擎、扩展对象关系型数据库管理系统、面向对象空间数据库管理系统等多种解决方案。目前,国内外较为流行的主要集中在“关系型数据库+空间数据引擎”和“扩展对象关系型数据库”两方面。
“关系型数据库+空间数据引擎”通常是近年来由GIS厂商研发的一种中间件解决方案。所谓的空间数据引擎,其实就是基于关系型数据库的空间数据库技术的软件实现,实质上是个封装了空间领域知识的中间件,GIS等应用层通过这个中间层与关系型数据库交互。
用户将自己的空间数据交给独立于数据库之外的空间数据引擎,由空间数据引擎来组织空间数据在关系型数据库种的存储;当用户需要访问数据的时候,再通知空间数据引擎,有引擎从关系型数据库中取出数据,并转化为客户可以使用的方式。
空间数据引擎实质上是一组空间数据的操作函数,这些函数很好的完成空间数据的转换,及数据的索引调度和空间数据的存储管理。因此,关系型数据库仅仅是存放空间数据的容器,而空间数据引擎则是空间数据进出该容器的转换通道。
这类系统的典型代表有ESRI的ArcSDE、MapInfo的SpatialWare以及国产SuperMap的SDX+,其优点是,访问速度快,支持通用的关系数据库管理系统,空间数据按BLOB存取,可跨数据库平台,与特定GIS平台结合紧密,应用灵活。其缺点主要表现为空间操作和处理无法在数据库内核中实现,数据模型较为复杂,扩展SQL比较困难,不易实现数据共享与互操作。
扩展对象关系型数据库管理系统是由数据库厂商研发的管理空间数据一种解决方案。由于关系型数据库难以管理非结构化数据(也包括空间数据),数据库厂商借鉴面向对象技术,发展了对象关系型数据库管理系统。此系统支持抽象的数据类型(ADT)及其相关操作的定义,用户利用这种能力可以增加空间数据类型及相关函数,从而将空间数据类型与函数就从中间件(空间数据引擎)转移到了数据库管理系统中,客户也不必采用空间数据引擎的专用接口进行编程,而是使用增加了的空间数据类型和函数的标准扩展型SQL语言来操作空间数据。

开源数据库PostGIS能否支撑起整个地球?

这类支持空间扩展的产品有Oracle的Oracle Spatial, IBM的DB2 Spatial Extender, Informix 的Spatial DataBlade。其优点为空间数据的管理与通用数据库系统融为一体,空间数据按对象存取,可在数据库内核中实现空间操作和处理,扩展SQL比较方便,较易实现数据共享与互操作。其缺点主要表现为实现难度大,压缩数据比较困难,目前的功能和性能与第一类系统尚存在差距。但目前主流的开源空间数据库则普遍采用了该方向的技术路线。
目前开源空间数据库大概分为三种。第一种是纯开源路线,在著名的开源数据库基础上增加的开源空间数据库扩展,如基于PostgreSQL的PostGIS;第二种是基于成熟的商业数据库增加开源的空间数据库扩展,如基于SQL Server 2005和CLR技术的MsSQL Spatial;最后一种则是由一些商业公司为了推广自己的产品,扩大市场份额,而开放的一些标准空间数据访问技术,如Autodesk公司的FDO技术和北京超图公司的SDX+技术等。

雄霸天下
PostgreSQL是开源界性能较优秀的数据库,构建在其上的空间对象扩展模块PostGIS则使得其成为一个真正的大型空间数据库。PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范。

 

 PostGIS的版权被纳入到GNU的GPL中,也就是任何人可以自由的得到PostGIS的源码并对其做研究和改进。正是由于这一点,PostGIS得到了迅速的发展,越来越多的爱好者和研究机构参与到PostGIS的应用开发和完善当中。
PostGIS是由Refractions Research Inc开发的,Refractions是一个GIS和数据库咨询公司,Refractions公司最初是在PostgreSQL的基础上研究空间数据库的实现,由于PostgreSQL所提供的空间数据类型和功能远远不能满足GIS的需求,研究工作经常陷入到进退维谷的境地,最终的结果往往是耗费了大量的人力无力,而产品却是极其复杂并且性能低下,这些原因直接或间接促成了PostGIS项目的实施。
PostGIS的实施也不是一帆风顺的,直到PostgreSQL 7.1发布之后,PostGIS的实现才变为可能,主要原因是7.1之前,PostgreSQL支持的记录大小最大为8Kb,从7.1之后,PostgreSQL将这一限制摈弃。即使采用二进制方式存储,空间数据对象也往往会经常超过8Kb,如果这个限制存在,空间数据的存储就无从谈起。
伴随着这一限制的消除,PostGIS的研究和开发也随即在2001年的4月展开,并于2001年的5月发布了PostGIS的第一版(PostGIS V0.1)。在PostGIS的第一版中,主要包括空间数据库、采用标准表示方式的空间数据对象、支持随即快速查询的空间索引和一些简单的分析函数(如area,length等)。
PostGIS V0.1中支持的空间数据对象类型包括点、线、多边形、几何对象类型、以及多点、多线、多多边形的几何对象类型。2001年5月发布的PostGIS V0.2增加了对于Windows平台下二进制表示的支持,同时为新用户提供的帮助文档。2001年7月PostGIS V0.5发布,PostGIS增加了OpenGIS现有的所有功能性函数并在函数的命名上与其保持一致。增加了24个OpenGIS存取函数,同时删除了与这些函数功能等价的不标准的原有函数。伴随着来自不列颠哥伦比亚省政府的资金支持,对于在球体表面的长度运算的支持也加入到0.5版中。同期,Refractions公司将British Columbia省的数字道路地图集移植到PostGIS中,同时使用数据库的模式和数据转换功能为地图集客户提供支持(急救车派遣,紧急事物响应,以及其他市政事物等)。

PostGIS V0.5之所以重要,还有一个原因就是Minnesota大学的Mapserver的发布。Minnesota大学的Mapserver是一个开源的互联网地图发布引擎,就像ESRI公司的ArcIMS系统,Mapserver同时增加了对于PostGIS的支持。在Mapserver中,提供了一个Web驱动的接口,这个接口用于检查数据库中数据的空间特征。在PostGIS中,PostGIS为了使得Mapserver能够更好地提供服务,提供了一个易于读写的数据源,这个数据源将会在网络事务繁忙的时候发挥其效用。

 

2001年9月,PostGIS V0.6发布,PostGIS V0.6提供了完整的OpenGIS支持,加入了标准的元数据表,并且提供了对于空间参照系统标识的支持。另外还加入了OpenGIS支持的12个功能函数,同时对Mapserver的支持得到了进一步的增强。
2002年2月,PostgreSQL V7.2发布,在7.2版中,GIST索引的API函数作了一点改进。由于这些API函数同样应用于PostGIS中,这给PostGIS V0.6的应用带来了麻烦,促使PostGIS必须作出改进以适应PostgreSQL的变化。
在2002年PostGIS V0.7发布,在0.7版中,提供了对于新的对于GIST的API函数的支持,同时在这一版中,提供了对于坐标变换的支持。从2002年到现在,PostGIS又陆续发布了一系列的新版本,这些PostGIS产品在继承PostGIS产品原有的优点的同时,又针对PostGIS本身存在的问题和不足进行了进一步的改进。到现在为止,PostGIS的最新版本是PostGIS V1.1.4。

 

后起之秀
2005年11月7日,微软SQL Server 2005在美国旧金山正式登上舞台,并打出企业级的牌号,对IBM、Oracle数据库的市场份额有所冲击,特别是对在整个Windows和Unix数据库市场都处于领先地位的Oracle。当Oracle Spatial已经誉满全球的时候,SQL Server 2005仍然没有推出其空间数据库管理的商业组件,然而一个开源新贵MsSQLSpatial在2006年初却悄然诞生了。
MsSQLSpatial是对基于SQL Server 2005 CLR Integration(公共语言运行时集成,下文简称“CLR集成”)技术实现一个空间数据引擎。MsSQL Spatial是一个SQL Server 2005空间扩展,确切的说应该是一个专属于SQL Server 2005的空间数据引擎。该模式仍然是典型的“关系型数据库”+“空间数据引擎”模式。
显而易见,每一次数据库技术与数据访问技术的进步发展都会带动空间数据存储管理解决方案的进步与发展,就好像关系型数据库上BLOB数据类型的支持才使得空间数据库实现了空间特征数据与属性数据一体化存储管理。这个关键,就是它的“CLR集成”。通过宿主 Microsoft .NET Framework 2.0 公共语言运行时 (CLR),可以在SQLServer 2005上利用.NET Framework类库和任何如C#、VB.NET、C++/CLI等CLR语言来开发数据库应用,扩展用户自己的类型系统和聚合函数。许多之前在SQL Server 2000上用T-SQL或扩展存储过程等编程模型难以实现的或无法实现的任务现在可以用托管代码来完成,譬如几何计算这样具有复杂逻辑的计算密集型任务。
在空间数据库的设计问题上,没有CLR集成技术的RDBMS,例如SQL Server 2000,在涉及查询脚本的空间表达时就出现了问题,T-SQL语句难以做到空间关系和属性特征联合查询。因此空间索引和以二进制方式存储的空间特征数据都必须通过数据访问接口获取出来,映射到空间数据引擎这个中间层,还原成空间对象才能完成空间关系的判断。还有点不妙的就是每次涉及空间分析的操作都会从空间数据库服务器中取出一部分冗余的结果集。
SQL Server 2005上,非常显著的一个特点是,这类基于CLR集成开发的.NET应用程序集是直接部署在数据库服务器上,SQLServer2005在进程内宿主.NET CLR,外部GIS应用层可直接与空间数据库交互时使用T-SQL语句完成属性谓词和空间谓词查询操作。本质上还是在空间数据库中使用两步查询机制,首先使用索引查询出候选对象集,然后再采用精确的几何计算,在候选对象集中求出精确值。
我们来分析MsSQL Spatial的解决方案,MsSQL Spatial用CLR表值函数封装了一组简单而有效的空间索引实现,在这些CLR表值函数中实习了OGC简单特征规范定义的用于描述各种对象的空间关系的空间关系谓词,由NTS类库提供底层的空间对象和空间关系,在数据库进程内部直接完成空间查询操作。
需要补充说明的是,由于SQL Server 2005 CLR UDT(用户自定义类型)8000字节的最大限制,导致无法实现定义空间数据类型,所以在MsSQL Spatial是使用了聚合函数来克服这个问题。

GULF项目构建在众多的开源项目之上

SQL Server 2005数据库CLR集成技术代码和数据的紧密结合使得我们能够充分利用服务器的处理能力。而且因为它减少了数据层和中间层之间的流量,CLR函数也可以利用到SQL Server 2005查询处理器的并行和优化功能。
诸侯并举
2005年获得开源项目大奖的SQLite是嵌入型数据库,具有快速、小巧、开源、可移植性好的特点。所不同的是,SQLite是一个符合SQL-92标准的关系型数据库,这一点为它赢得了不少加分。
多年来的应用也表明其品质过硬。最有名的应用当属Mac OS 10.4中的Spotlight搜索引擎,充分展现了SQLite的强大和健壮。Autodesk基于SQLite推出了其最新的空间数据文件格式SDF(Spatial Data Files),其中可以存储多类要素类,每个要素类中的几何对象格式完全遵循OGC规范的几何模型。

2006年初,Autodesk公司推出了类似于ODBC技术的FDO(Feature Data Object)技术,该技术已经全部开源。基于该技术,前端的地理信息系统平台可以非常快捷的访问大型关系型数据库。使用强大的关系型数据库管理系统,不仅可以支持数百人甚至数千人创建、编辑并管理同一份数据,还提供了更灵活的扩展性、更高的安全性,并能创建更完善的数据模型。
目前,通过使用FDO数据访问技术,可直接处理存储于Oracle、Microsoft SQL Server、MySQL以及ESRI ArcSDE中间件中的空间数据。这样,企业就能充分利用关系型数据库管理系统所带来的种种优势。
有数据表明,目前全球大约40%的企业在其核心业务中开始应用开源数据库产品,MySQL作为开源数据库领域的领头羊,已经被诸如Sabre Holdings、克莱斯勒等全球知名企业所采用。相信不久,基于FDO技术的MySQL空间数据库模式将会是另外一大热点。
开源是一种模式,开放是一种态度。我国本土地理信息软件提供商北京超图地理信息技术有限公司开始以开放的态度来尝试开源的模式。在2007年高校GIS开发大赛中,超图公司鼓励和支持参赛作品开放源代码,为广大GIS开发者和学生相互学习提供平台。同时在2007年中,超图还将在开源GIS方面做一些有益的探索,计划将把共享式GIS内核UGC中的数据引擎SDX+免费开放。
一直以来,空间数据的管理和访问都是GIS平台中的核心技术,由于不同产品的数据格式互不兼容,数据互操作非常不方便。为了改变这种现状,超图公司将把多年研发的先进空间数据引擎技术免费提供给广大用户,基于该空间数据引擎,开发人员可以很方便地访问和操作所有空间数据格式,进行扩展应用开发。

未来格局
目前,由于“关系型数据库+空间数据引擎”的技术方案访问速度快、与GIS联系紧密的优点,在应用中占有一定的优势,但空间数据引擎独立于数据库内核,难以充分利用关系型数据库中各种成熟的数据管理、访问技术,成为进一步发展的致命弱点。另外,难以支持扩展SQL,不易实现数据共享与互操作等问题也逐渐暴露出来。
尽管面向对象空间数据库管理系统最适应于空间数据的表达和管理,它不仅支持变长记录,而且支持对象的嵌套、信息的继承与聚集。有关面向对象数据库管理系统的研究已有十多年了,由于缺乏良好的数据基础,访问速度尚未有重大突破,难以发展成熟,据估计在较长一段时间内面向对象数据库管理系统都不会替代对象关系型数据库管理系统。
扩展对象关系型数据库管理系统无疑将成为以后的发展方向。尽管目前PostGIS、PostgreSQL、FDO和MySQL的性能与ArcSDE仍有一定的差距,但是随着数据库厂商对空间数据管理市场的不断重视、结构化数据管理方式与空间数据管理方式的进一步融合、数据压缩传输技术的不断提高,基于数据库管理系统的空间扩展方式将会不断的完善,成为今后管理空间数据的主流技术。而多数GIS厂商则应将精力集中到空间分析、空间模型等方面,从而形成较好的社会分工结构。
目前,软件开源已经成为IT界的一种发展趋势,越来越多的软件加入的开源系统中。应该说开源空间数据库不论在功能还是扩展性方面与目前的商业GIS平台的空间数据库比一点都不处于下风,而且由于其源代码的公开性,更加容易吸引广大爱好者参与到PostGIS的开发中,不断完善现有的功能同时进一步扩展新的特性,所以,PostGIS的发展前景是非常乐观的。

 

http://qkzz.net/article/f73be729-9e90-47e8-a233-7525e1e1c7f2_4.htm

转载自:https://blog.csdn.net/sych888/article/details/5721428

You may also like...