Kane BlueriverKane Blueriver

PostgreSQL 数据库简介及其生态

PostgreSQL 数据库简称 Postgres(后面简称 pg),是一个强大的 SQL 数据库,可以说是主流数据库中最符合 SQL 标准规范的实现。pg 的性能非常优秀,并且在极限压力的情况下依旧能保持稳定的性能。除此之外,pg 还支持多种复杂类型,比如 JSON 和 Hive,并拥有丰富的插件生态,著名的 GIS 插件 PostGIS 便是其中之一。

安装和使用

以 Ubuntu 14.04 为例:

sudo apt-get update
sudo apt-get install postgresql\  # 安装 pg
     postgresql-contrib  # 安装 pg 相关工具

角色和数据库

pg 使用“角色”这一概念来认证身份,在某些方面,这和 Unix 用户系统很像,不过 pg 并不区分用户和用户组,只拥有“角色”这一区分方式。

上面的安装完成后,安装程序会自动创建一个名为 postgres 的用户,你应该尽可能地使用该用户操作数据库:

sudo -i -u postgres     # 切换到 postgres 终端环境

你也可以使用命令手动创建用户/角色:

createuser --interactive

控制程序

安装完 pg 后还提供了很多管理程序,比如 createdbdropdbpg_* 等等。它们的作用如下:

命令作用
clusterdb群集一个 PostgreSQL 数据库
createdb创建一个新 PostgreSQL 数据库
createlang安装一个 PostgreSQL 过程语言
createuser创建一个新的 PostgreSQL 用户帐户
dropdb删除一个 PostgreSQL 数据库
droplang删除一个 PostgreSQL 过程语言
dropuser删除一个 PostgreSQL 用户账户
ecpg嵌入的 SQL C 预处理器
initdb创建一个新的 pg 数据库集群 cluster
pg_basebackup做一个 PostgreSQL 集群的基础备份
pg_config检索已安装的 PostgreSQL 版本信息
pg_controldata显示一个 PostgreSQL 数据库集群的控制信息
pg_ctl初始化、启动、停止、或者控制 pg 服务器
pg_dump将一个 PostgreSQL 数据库转储到一个脚本文件或者其它归档文件中
pg_dumpall将一个 PostgreSQL 数据库集群转储到一个脚本文件中
pg_isready检查 PostgreSQL 服务器的连接状态
pg_receivexlogPostgreSQL 集群中的流事务日志
pg_resetxlog重置一个数据库集群的预写日志以及其它控制内容
pg_restorepg_dump 创建的备份文件中恢复 PostgreSQL 数据库
pg_start启动 pg 服务
pg_stop停止 pg 服务
pg_upgrade升级 pg 数据库文件
postgrespg 数据库服务器
postmaster管理 pg 数据库服务器
psqlPostgreSQL 交互终端
reindexdb重建 PostgreSQL 数据库索引
vacuumdb收集垃圾并分析一个 PostgreSQL 数据库

元指令 Meta-command/slash command/backslash command

使用 psql 程序连接进入数据库后可以使用 \ 开头的指令,比如 \h 显示帮助,\d 显示数据库结构。

常用命令对照表

命令作用
\c / \connect [数据库连接字符]连接数据库
\C [title]设置打印的 caption
\cd [dir]切换工作目录
\copy [some query]复制表内容
\d[S+] [ pattern ]显示符合 pattern 规则的所有关系(表、视图、索引、序列以及外键)
\password [ username ]修改特定用户的密码,默认是当前用户
\q/quit退出

集群解决方案 Postgres-XC

早期的 pg 是没有集群的,这也是当时 MySQL 的一大优势所在,直到 Postgres-XC 的出现。Postgres-XC 是一个开源的 pg 集群解决方案,拥有可扩展的写性能、对称同步等特性,你可以将其安装在多台机器或者虚拟机上。

PostGIS

PostGIS 是 pg 的一个空间数据插件,提供地理信息数据的存储和查询能力。

pgRouting

pgRouting 基于 PostgreSQL 和 PostGIS 提供了地理位置引路系统。

核心功能:

  • 所有最短路径组合(Johnson 算法)
  • 所有最短路径组合(Floyd-Warshall 算法)
  • 最短 A* 路径
  • 双向 Dijkstra 最短路径
  • 双向 A* 最短路径
  • Dijkstra 最短路径
  • 行车距离
  • K-最短路径,多候选路径
  • K-Dijkstra,一对多最短路径
  • 旅行销售人员(Traveling Sales Person)
  • TRSP(Turn Restriction Shortest Path)