本实验将提供一台基础环境为CentOS的ECS(云服务器)实例。在实例上创建PolarDB for PostgreSQL数据库后,本实验带领您编译和安装开源空间插件PostGIS,并执行一些简单的空间查询。

背景知识

PolarDB for PostgreSQL采用了基于Shared-Storage的存储计算分离架构。数据库由传统的Share-Nothing架构,转变成了Shared-Storage架构——由原来的N份计算+N份存储,转变成了N份计算+1份存储;而PostgreSQL使用了传统的单体数据库架构,存储和计算耦合在一起。

 

为保证所有计算节点能够以相同的可见性视角访问分布式块存储设备,PolarDB需要使用分布式文件系统PolarDB File System(PFS)来访问块设备,其实现原理可参考发表在2018年VLDB上的论文;如果所有计算节点都可以本地访问同一个块存储设备,那么也可以不使用PFS,直接使用本地的单机文件系统(如 ext4)。这是与PostgreSQL的不同点之一。

PostGIS是PostgreSQL生态下影响广泛的开源空间插件。赋予了PostgreSQL存储、处理、索引和查询空间数据的能力。

在存储方面,其可以存储POINT(点), LINESTRING(线), POLYGON(多边形)等多种几何对象,同时支持多种不同的空间投影坐标系。并且可以与WKT(Well-Known-Text),WKB(Well-Known-Binary)等常用空间数据格式相互转化。

处理方面,支持拓扑关系计算、距离计算、空间统计、形状编辑、空间变换、空间聚类等多种场景。

在索引方面,支持使用R树、四叉树等方式对数据进行索引。

在PolarDB for PG的公有云版本中,我们提供了Ganos插件作为开源PostGIS的扩展,在兼容PostGIS操作的基础上提供更多的数据模型和操作函数。