三种关系型空间数据库比较

2021-12-31 14:41胡畅达王国宇
科技创新与应用 2021年19期
关键词:空间数据数据库函数

赵 莹,胡畅达,王国宇

(1.黑龙江第一测绘工程院,黑龙江 哈尔滨150025;2.黑龙江省国土空间规划研究院,黑龙江 哈尔滨150025)

关于GIS的组成,可以研究四个方面:硬件系统、软件系统、空间数据和操作人员。空间数据在GIS的构成中起着重要作用,因此拥有一个良好的数据库是GIS成功的关键。数据库的功能主要体现在数据的存储和管理上。在GIS中,用户获取的空间数据来自空间数据库,因为地理信息系统具有空间分析能力。在对数据进行空间分析之后,将结果存储在空间数据库中。因此,空间数据库在存储空间数据方面也发挥着核心作用。空间数据库是地理信息系统的核心,是地理信息系统发展的技术支柱。

空间数据的管理已经通过某个阶段从文档演变为数据库。起初是初级式的管理模式,这种管理模式比较好理解,因为它是一一对应的形式,空间数据文件提供空间分析功能,属性数据文件提供属性处理功能。然后是混合管理模式,其中属性数据由属性数据库管理。与传统的数据库管理系统不同,某些数据库管理系统具有一层空间数据库引擎,即SDE。在空间数据的存储和管理中,出现了优于传统数据库管理系统的扩展管理模式,因此ArcGIS具有许多传统数据库中没有的功能。

在传统数据库系统的基础之上,改进了空间数据存储和管理的一些功能,形成了一体化的管理模式。空间数据的管理经历了从文件到数据库的发展过程,使得空间数据库不断完善和创新。

空间数据库可分为关系型和非关系型。关系,其实就是一个表。在组织数据的时候,所利用的模型是关系数据模型。所谓关系数据模型就是二维表格模型,例如“一对一”“一对多”“多对多”。关系数据模型是将数据的逻辑结构归因为满足某些条件的二维表的元素。这种数据库的数据存储在磁盘上比较安全,因其建立在关系模型上,比较容易理解。但是,建在关系模型上就要遵循某些原则,因此不节省存储空间。非关系型空间数据库因存储在内存上,所以效率高,但是不安全。

关系型空间数据库主要用于存储空间数据,关系型空间数据库加上了一层数据引擎,可以大大地提高用户的查询检索速度,并且可以和特定的GIS平台紧密结合。但是,扩展SQL很困难,并且很难共享数据并与数据进行互操作。除了与数据库引擎结合的关系型数据库之外,还有一个扩展的对象关系数据库。扩展对象关系型数据库支持抽象的数据类型和操作,主要的代表有Oracle的Oracle spatial和PostgreSQL的PostGIS等等。该模型将空间数据类型和相关功能集成到数据库管理系统的内核之中,允许用户以扩展的SQL语言执行操作。这样,可以克服一般的空间数据库的不足。

本文主要探讨关系型空间数据库,并且以Oracle spatial、PostGIS、MySqL GIS三种常见的空间数据库为例,对这三种常见的空间数据库进行比较。不同的空间数据库虽然出自于不同的软件公司,并且有各自的优缺点,但是都有着相似的目标,就是更好地满足用户对于空间数据管理和使用的需要。

1 Oracle spatial

为了顺应地理信息系统数据的需求发展起来的Oracle spatial是一个管理模块,这个模块是甲骨文公司提供的,用来管理空间数据,它是Oracle数据库强大的核心功能,提供了一系列快速查询和检索空间数据的功能。它由几何数据类型、空间索引机制、操作函数和管理工具组成。与传统的空间数据库功能一样,可以查询、存储、管理数据。可以存储和检索简单的点、线和面空间元素。Oracle spatial是一个引入了对象-关系数据模型的数据库,因此它是一个关系型空间数据库。在给定的应用领域中,实体和实体之间的连接集构成关系数据库。关系,就是一个表,因此空间数据就可以存储在关系表中,每个表格都包含了行和列,其中,列用来表示数据种类,行用来表示数据实体。因此,在创建一个关系型空间数据库时,可以进一步约束行和列。Oracle spatial定义了一种字段类型SDO-GEOMETRY(可以自定义),也可以单独存储在表中的某一列中。因此,Oracle spatial在管理空间数据时可以依赖属性字段,空间属性字段可以作为空间表区别于其他表的标志。同一层的空间对象存储在同一个关系表中,空间数据和属性数据可以同时存储,实现了一体化存储。

在查询方面,Oracle spatial的查询性能优异,因为Oracle spatial的空间数据库引擎中具有空间索引功能,这极大地提高了用户对于某个问题的查询效率。空间索引用于提高空间数据的查询效率,可以看成是普通树查询的演化。在建立空间数据库的索引时,Oracle spatial提供了两种选择,用户可以根据自己的需要选择索引方案,这些方案基于线性四叉树和参照树。如果使用四叉树索引来查询空间数据,当空间对象分布不均匀时,会因为不均衡而使得查询的速度变慢,因此,通常选择基于参照树的索引方案。空间索引的建立,一般在外部建立好了关系表后就可以建立了。Oracle是可扩展的,Oracle spatial是利用Oracle的可扩展性,将查询处理的接口和空间索引的创建与引擎紧密结合在一起。

无论是矢量数据还是栅格数据,Oracle spatial都能存储。矢量数据包括点、线串、多边形、弧段、弧段多边形、复合多边形、圆形等。以控制点数据存储为例,首先建立一个表,用来存储控制点数据,向此表中添加空间数据。最后,将控制点数据依次就行入库,入库时可以使用第三方工具。

Oracle spatial为空间查询和空间分析提供了一系列功能。因为,虽然添加空间数据库引擎使得数据管理的效率大大提高。但是,当数据量特别大的时候,就必须依赖空间索引来查询空间数据。而依赖索引的函数可以快速缩小计算的范围,然后通过空间分析函数计算出想要的结果。

作为Oracle数据库的一个组成部件,Oracle spatial可以执行操作,例如索引、存储和分析Oracle数据库中的空间数据。在管理空间数据时,Oracle spatial依赖于元数据表,空间属性字段和空间索引,并在此基础上提供了一些函数,这些函数具有查询和分析功能。使用Oracle spatial来管理空间数据,这些被管理的数据更容易实现共享,具有低成本、低风险的优点。在使用方面,操作起来特别简单,与标准SQL操作类似。这样可以统一管理空间数据和属性数据,为空间数据的管理带来了极大的便利。

2 P ostGIS

PostGIS是一个强大的对象-关系型数据库管理系统。它由加利福尼亚大学伯克利分校领导开发,功能强大,特性丰富并且性能稳定。PostgreSQL具备一些空间功能:定义了一些基本的集合实体类型,对于几何类型的操作和运算定义了一些函数和操作符,并引入了空间数据索引。然而,PostgreSQL缺乏复杂的空间类型,不能提供空间分析功能,也不能提供投影变换等功能,因此提供的空间特性还不能达到要求。这些问题导致产品复杂、性能低下,PostGIS所添加的存储管理空间数据的能力是PostgreSQL所不具备的,可以说PostGIS是PostgreSQL的扩展,可以执行空间索引并提供空间操作功能。PostgreSQL缺乏复杂的空间类型,无法提供空间分析和投影变换等功能。

开发PostGIS的公司最开始研究PostgreSQL的空间数据库。但是,PostgreSQL的功能是有限的,所提供的空间数据类型、空间数据功能远远不能满足地理信息系统的技术需求。也就是PostgreSQL的这些缺陷与不足,促使了Post-GIS的产生。简而言之,PostGIS增加了对PostgreSQL数据库管理系统升级到空间数据库的一些功能的支持。PostgreSQL有着自由和开放的源代码,因为PostGIS是建立在PostgreSQL之上的,所以自动继承了PostgreSQL的开放性源代码标准。PostGIS这样一个插件,让PostgreSQL不断地发展壮大,变成了一个强大的空间数据库,让PostgreSQL具有了地理信息系统特有的函数。

无论是什么类型的空间数据,PostGIS都支持,几乎包含了所有类型。例如:点、线、多边形、多点、多线、多多边形。也支持所有的数据存储和构造方法。PostGIS提供的空间分析函数有简单的也有复杂的,例如Distance。还提供了对于元数据的支持,也提供了相应的支持函数。PostGIS提供的空间操作符可以用于空间数据的操作,例如Union和Difference。两个相互重叠的多边形,通过Union的操作,形成一个新的多边形。PostGIS提供的二元谓词,可以用来监测空间对象之间的空间关系,对于关系的表示,用布尔数值来表示。

除了固有的特性之外,PostGIS还有许多额外的功能。例如,可以将数据库中的坐标从一个坐标系变换到另一个坐标系中。提供的坐标变换使得积累类型的程度计算成为可能,可以对球体的长度进行计算。执行所有数据操作的函数称为集聚函数,PostGIS提供了空间集聚函数,比如Sum函数用来求解数据总和,Average函数用来求取某一属性列的数据平均值,空间集聚函数不同的就是,它的操作对象是空间数据。PostGIS具有一种新的数据类型片,并且可以控制片的大小,因而可以实现快速的访问,可以存储大的栅格数据。对于图片的存储,也是先将要存储的相片按照一定的像素数值进行切分,再存储到相应的数据库中。

随着技术的不断进步,各行业与地理信息的联系不断加深,在地理信息系统的组成中,地理空间数据是重要的组成部分。如果建立的空间数据库在存储和管理空间数据方面是高效率的,那么地理信息系统的技术便实现了。一般大型商业数据库成本都很高,并且有着许多的限制性问题。PostgreSQL具有丰富的数据类型,数据安全并且开源免费,并结合了PostGIS空间数据引擎扩展,特别适合管理地理空间数据。

3 MySqL GIS

MySqL由瑞典公司开发,也是一个关系型空间数据库管理系统,是Oracle的产品。它在关系型空间数据库管理系统中非常流行,具有体积小、速度快、总体的成本低等优点。最重要的是MySQL具有开放源码的特点,即源代码公开,意味着不需要用户支付额外的费用,这大大降低了其总体拥有成本。就是因为具有开放源码这一特点,任何人都可以在许可下下载并根据需要达到的目的对其进行修改,因此MySQL特别受开发人员的欢迎,很多开发人员都选择了MySQL作为网站的数据库。MySQL支持多种操作系统,可以用多种编程语言进行系统的编写,例如C语言、C++语言、Java等,同时使用多种编译器进行测试,保证了源代码的可移植性,即所编写的代码可以在多个系统中运行。因此,用户可以选择已编程的客户机程序,或根据自己的需要编写自己的客户端程序。

MySQL具有三种应用架构,分别为单点(Single)、复制(Replication)和集群(Cluster)。其中,单点架构适合小规模应用,复制架构适合中小规模应用,集群架构适合大规模应用。

对于数据的存储,因关系数据是存储在表中的,而不是同时存储在一起。这样的存储方式,灵活性很强,同时也提高了速度。MySqL还使用了结构化查询语言SQL,以这种最常用的语言访问数据库。

如果要将MySQL与其他关系型空间数据库进行比较的话,首先考虑的应该是相对来说比较重要的性能、特性、认证条件和约束条件、价格等等方面。MySQL对于大多数的个人用户来说是免费的,简单易用,性能很高的同时相对简单,与其他的更大的系统比较起来,MySQL的复杂程度较低。在性能方面,多个用户可以同时使用同一个数据库,一个服务器可以承载许多个客户端。MySQL的运行速度更是优于其他数据库。

除了体积小、速度快、总体拥有成本低之外,MySQL还有很多其他的优点。完全的多线程编程是MySQL的关键所在,使用户操作起来特别灵活。支持大型数据库,可以运行大量记录。MySQL作为一个开源代码的数据库,在实际的工作中,可以根据不同的应用进行相应的更改。具有强大的空间查询功能,MySQL支持查询的运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使查询变得快捷和方便。与Oracle相比,MySQL属于中小型数据库,市场占有率没有Oracle高,但是在价格方面,MySQL的价格要优惠于Oracle。

对于以上三种数据库的简单比较,可以知道,Oracle spatial适用于大型企业,而MySQL和PostGIS适用于中小型企业。PostGIS最大的特点就是其源代码公开,降低了用户的使用成本。MySQL是完全免费的。所以,在管理数据时,用户应根据自己的需要进行选择,可以根据自己要达到的目的入手,扬长避短。不同的数据库有着各自的特点,没有绝对的优势和劣势。要相信,随着技术的不断进步和提高,不同的数据库在管理和查询方面一定会不断完善,向着更加高级的方向发展。

猜你喜欢
空间数据数据库函数
二次函数
二次函数
函数备考精讲
10项空间数据与信息传输领域国家标准正式发布
GIS空间数据与地图制图融合技术
数据库
关于函数的一些补充知识
数据库
数据库
数据库