# PostgreSQL数据库
PostgreSQL数据库是目前功能最强大的开源数据库之一,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。PostgreSQL数据库是开源数据库,遵循BSD协议,它提供丰富的接口,具有较强的可扩展性,在使用和二次开发上基本没有限制。MapGIS平台可直接连接PostgreSQL数据源并创建数据库,下图为MapGIS使用PostgreSQL数据库的流程图:
目前MapGIS可支持的PostgreSQL数据库版本如下所示:
数据库 | 版本 | MapGIS支持情况 |
---|---|---|
PostgreSQL | 9.4及以下版本 | × |
9.5 | √ | |
9.6 | √ | |
10 | √ | |
11 | √ | |
12 | √ | |
13 | √ | |
14 | √ | |
15 | √ | |
PostgreSQL-XL | 9.5 | √ |
9.6 | √ | |
10 | √ |
PostgreSQL数据库包括windows和Linux版本,不同版本安装服务器端及配置数据库方法不同。其中Linux上PostgreSQL数据库配置方法可参考"MapGIS Desktop(九州)的PostgreSQL数据库 (opens new window)"。
PostgreSQL服务器端及客户端的安装步骤可参考PostgreSQL数据库官方操作手册,这里就不做详细说明。下面会对配置PostgreSQL数据源及创建PostgreSQL数据库的操作步骤进行详细说明。
# 相关主题
# 配置PostgreSQL客户端
# 功能说明
已安装PostgreSQL服务器端及客户端后,需在服务器端所在的计算机上创建配置文件参数信息,连接PostgreSQL服务器上的实例信息。
# PostgreSQL客户端单机配置(Windows)
# 操作说明
1. 配置环境变量。在系统变量path后面追加PostgreSQL安装目录的bin路径,如C:\Program Files\PostgreSQL\9.6\bin(9.6为所装PostgreSQL的版本):
2. 修改配置文件。在PostgreSQL服务器端的安装目录下找到data文件夹(默认路径为C:\Program Files\PostgreSQL\9.6\data),其中postgresql.conf文件需将listen_addresses = 'localhost'修改为listen_addresses = '*'。
为了保证其他客户机可以连接数据库服务器,需要检查数据库服务器是否允许其他客户机连接服务器,如果不允许其他客户机连接则需要修改pg_hba.conf文件。
提示:
修改pg_hba.conf文件之前建议先创建一份副本作为备份。
添加连接的客户端计算机的IP地址和用于连接的客户端身份验证方法如下:
一、配置数据库群集以接受具有IPV4地址的计算机的连接
(1)为使所有可提供有效密码的用户都能使用md5连接从以10.2.12开头的地址连接到名为habitat的数据库,请向pg_hba.conf文件中添加以下行:
host habitat all 10.2.12.0/24 md5
(2)如果要使所有可提供有效密码的用户均能从以100开头的地址连接到PostgreSQL实例中的任何数据库,则需要向pg_hba.conf文件添加如下面的行内容类似的行:
host all all 100.0.0.0/8 md5
(3)如果要允许所有IPV4协议的客户机连接到PostgreSQL实例中的任何数据库:
host all all 0.0.0.0/0 md5
二、配置数据库群集以接受具有IPV6地址的计算机的连接
(1)如果要允许某个IPV6地址能连接到PostgreSQL实例中的任何数据库,则需要向pg_hba.conf文件添加与下面的行:
host all all fe60::61f9:1253:c522:9b92%10/128 md5
(2)要允许所有具有以fe60开始的地址的计算机进行连接,应向pg_hba.conf文件添加以下行:
host all all fe60::0000:0000:0000:0000%10/8 md5
如果您的PostgreSQL数据库集群安装在具有IPV6地址的计算机上,而您想要使具有IPV4地址的计算机与其连接,则需要在pg_hba.conf文件中取消以下行的注释:
host all all ::1/128 md5
保存您对文件作出的更改,然后关闭文件。
3. PostgreSQL客户端创建连接。打开pgAdmin 4客户端,用户需先连接PostgreSQL服务器,在Servers服务器组下创建服务器,输入ip地址、端口、数据库、用户名和密码,如下图所示:
提示:
用户也可以在pgAdmin新建数据库和用户名,以满足需要。
4. 创建PostGIS扩展。PostGIS是对PostgreSQL数据库的一种空间数据拓展,通过PostGIS可以使PostgreSQL数据库支持地理要素的存储,以及相应的SQL空间查询。
(一)安装PostGIS扩展
安装完PostgreSQL服务器端后,用户可以在自带的Stack Builder中选择对应版本的PostGIS进行下载,也可以自行在官网进行下载。
(二)创建PostGIS扩展
PostgreSQL服务器连接成功后,在目的数据库处右键点击“查询工具”,在查询编辑器输入如下所示的SQL语句,并点击“运行”:
create extension postgis;
当消息提示“CREATE EXTENSION”时即创建成功。
5. 创建mapgis3d_pg扩展。mapgis3d_pg扩展主要用于支持MapGIS三维面体数据使用。创建mapgis3d_pg扩展之前,必须先创建postgis扩展。
(一)安装mapgis3d_pg扩展
mapgis3d_pg扩展安装包路径:MapGIS安装目录\Program\Support\SDE\PostgreSQL,目前区分PostGreSQL10和11版本,里面又具体细分windows和linux版本。请根据PostgreSQL或PostgreSQL XL服务器的版本选择相应的扩展安装。
图1 扩展包路径
图2 Windows x86版本
将安装包mapgis3d-pg-extension.exe拷贝到PostgreSQL数据库所在的Windows服务器上,任意路径均可。
拷贝完成后双击exe开始安装,安装完成后:
1)“PostgreSQL数据库安装目录/share/extension”路径下多了以下几个文件:
mapgis3d_pg--1.0.sql
mapgis3d_pg--1.0--1.1.sql
mapgis3d_pg--1.1.sql
mapgis3d_pg.control
2)“PostgreSQL数据库安装目录/lib”路径下多了一个文件:mapgis3d_pg.dll。
(二)创建mapgis3d_pg扩展
PostgreSQL服务器连接成功后,在目的数据库处右键点击“查询工具”,在查询编辑器输入如下所示的SQL语句,并点击“运行”:
create extension mapgis3d_pg;
当消息提示“CREATE EXTENSION”时即创建成功。
6. 检查是否成功安装postgis扩展和mapgis3d_pg扩展。在查询编辑器输入如下所示的SQL语句,并点击“运行”:
select \* from pg_extension;
如上图“数据输出”窗口出现postgis和mapgis3d_pg的信息,证明扩展安装成功。
# PostgreSQL客户端单机配置(Linux)
1. 修改配置文件。在PostgreSQL服务器端的安装目录下找到data文件夹(默认路径为/var/lib/pgsql/10/data),其中postgresql.conf文件需将listen_addresses = 'localhost'修改为listen_addresses = '*'。
为了保证其他客户机可以连接数据库服务器,需要检查数据库服务器是否允许其他客户机连接服务器,如果不允许其他客户机连接则需要修改pg_hba.conf文件。
提示:
修改pg_hba.conf文件之前建议先创建一份副本作为备份。
如果PostgreSQL postmaster当前正在运行,则需要使用pg_ctl stop命令将其停止。
使用文本编辑器打开pg_hba.conf文件,添加连接的客户端计算机的IP地址和用于连接的客户端身份验证方法与上文“PostgreSQL客户端配置(Windows)”章节一致,可直接参考。
修改完毕后,保存并关闭pg_hba.conf文件。
使用pg_ctl启动(或重新启动)PostgreSQL postmaster。
2. PostgreSQL客户端创建连接。打开pgAdmin 4客户端,用户需先连接PostgreSQL服务器,在Servers服务器组下创建服务器,输入ip地址、端口、数据库、用户名和密码,点击“保存”。
3. 安装PostGIS扩展。关于Linux下PostGIS扩展的安装可参考PostgreSQL官方操作手册。
4. 安装mapgis3d_pg扩展。以下将对mapgis3d_pg扩展的安装进行详细说明:
(1)使用PostgreSQL数据库的安装用户将安装包mapgis3d_pg_extension.bin拷贝到PostgreSQL数据库所在的Linux服务器上并设置成可执行权限,任意路径都行。
提示:
确认服务器的PostgreSQL数据库版本,拷贝相对应的bin包。
(2)PATH环境变量追加PostgreSQL安装目录。设置PostgreSQL数据库的安装目录的bin文件夹路径到PATH变量。假设/opt/MapGisDataStore/sources/postgisXL/pgxl为PostgreSQL数据库的安装目录,则执行:
\#export PG_HOME=/opt/MapGisDataStore/sources/postgisXL/pgxl
\#export PATH=\$PATH:\$PG_HOME/bin
提示:
该步骤很重要,设置不正确会导致下一步安装后的文件位置不对。
(3)安装bin包。执行安装命令:
\#./mapgis3d_pg_extension.bin
(4)安装结果
1)“PostgreSQL数据库安装目录/share/extension”路径下多了以下几个文件:
mapgis3d_pg--1.0.sql
mapgis3d_pg--1.0--1.1.sql
mapgis3d_pg--1.1.sql
mapgis3d_pg.control
提示:
extension目录不一定都是“PostgreSQL数据库安装目录/share/extension”。
2)“PostgreSQL数据库安装目录/lib”路径下多了一个文件:mapgis3d_pg.so。
5. 创建PostGIS扩展和mapgis3d_pg扩展。在pgAdmin 4创建扩展的操作与前文“PostgreSQL客户端配置(Windows)”章节一致,可直接参考。
6. 检查是否成功安装postgis扩展和mapgis3d_pg扩展。在pgAdmin 4创建扩展的操作与前文“PostgreSQL客户端配置(Windows)”章节一致,可直接参考。
# PostgreSQL-XL集群配置(Windows/Linux)
将安装包拷贝到每个节点服务器上,然后按单机的方式去操作即可。
# MapGIS DataStore部署PostgreSQL-XL
MapGIS DataStore是一个以分布式方式存储和管理关系型数据、切片型数据、实时型数据以及非结构数据的混合数据库。用户使用MapGIS DataStore可以直接进行部署PostgreSQL-XL,详情可参考《MapGIS DataStore安装配置手册》和《MapGIS DataStore操作手册》。
# 配置PostgreSQL数据源
# 功能说明
在服务机上安装配置PostgreSQL客户端后,客户机只要安装了MapGIS,就可以在MapGIS中配置PostgreSQL数据源,用来管理PostgreSQL数据库。
# 操作说明
1. 在MapGIS GDBCatalog面板,启动【客户端配置管理】功能,弹出如下所示对话框:
2. 切换到【数据源】页面,点击"添加",选择“PostgreSQL数据源”,通过下拉列表选择已配置的PostgreSQL服务;或手动输入“[ip]:[端口]/[数据库名]”,如“192.168.81.104:5432/testdb”,进行服务配置;
3. "确定"后,在MapGIS GDBCatalog中可添加该PostgreSQL数据源节点信息:
# 创建PostgreSQL数据库
# 功能说明
在MapGIS中配置PostgreSQL数据源后,可创建PostgreSQL数据库。
# 操作说明
1. 在MapGIS GDBCatalog中,连接PostgreSQL数据源,需输入用户名密码信息;
2. 连接成功后,在PostgreSQL数据源节点,右键【创建数据库】,即可新建PostgreSQL数据库。