PostgreSQL 简介 #

什么是 PostgreSQL? #

PostgreSQL(简称 Postgres)是一个功能强大的开源对象关系型数据库管理系统(ORDBMS)。它以可靠性、功能强大和性能卓越而闻名于世,被广泛认为是世界上最先进的开源数据库。

text
┌─────────────────────────────────────────────────────────────┐
│                    PostgreSQL 定位                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   类型:对象关系型数据库管理系统(ORDBMS)                    │
│                                                             │
│   特点:                                                    │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│   │   开源免费   │  │   功能强大   │  │   高度可靠   │        │
│   └─────────────┘  └─────────────┘  └─────────────┘        │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│   │   标准兼容   │  │   可扩展性   │  │   社区活跃   │        │
│   └─────────────┘  └─────────────┘  └─────────────┘        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

发展历史 #

起源与演进 #

text
1986年 ─── POSTGRES 项目启动
    │
    │      加州大学伯克利分校
    │      Michael Stonebraker 教授主导
    │      继承 Ingres 数据库思想
    │
1995年 ─── Postgres95 发布
    │
    │      添加 SQL 支持
    │      开源发布
    │
1996年 ─── PostgreSQL 6.0
    │
    │      正式更名为 PostgreSQL
    │      社区驱动开发
    │
2005年 ─── PostgreSQL 8.0
    │
    │      Windows 原生支持
    │      保存点、表空间
    │
2010年 ─── PostgreSQL 9.0
    │
    │      流复制、热备份
    │      64位 Windows 支持
    │
2017年 ─── PostgreSQL 10
    │
    │      声明式分区
    │      逻辑复制
    │
2022年 ─── PostgreSQL 15
    │
    │      性能大幅提升
    │      MERGE 命令
    │
2023年 ─── PostgreSQL 16
    │
    │      并行查询增强
    │      JSON 改进
    │
至今   ─── 持续演进

版本命名规则 #

版本系列 说明
主版本 如 16.x,重大功能更新
次版本 如 16.1,Bug修复和安全更新
发布周期 每年发布一个主版本

核心特点 #

1. 标准兼容性 #

text
┌─────────────────────────────────────────────────────────────┐
│                    SQL 标准兼容                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  PostgreSQL 高度兼容 SQL 标准:                              │
│                                                             │
│  ✅ SQL:2016 标准大部分特性                                  │
│  ✅ 完整的 ACID 事务支持                                    │
│  ✅ 存储过程和函数                                          │
│  ✅ 触发器和视图                                            │
│  ✅ 外键约束                                                │
│  ✅ 子查询和连接                                            │
│                                                             │
│  独特优势:                                                  │
│  ✅ 支持复杂查询                                            │
│  ✅ 窗口函数                                                │
│  ✅ 公用表表达式(CTE)                                     │
│  ✅ 递归查询                                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. 丰富的数据类型 #

text
┌─────────────────────────────────────────────────────────────┐
│                    数据类型支持                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  基础类型:                                                  │
│  ├── 整数:smallint, integer, bigint                       │
│  ├── 浮点:real, double precision                          │
│  ├── 定点:numeric, decimal                                │
│  ├── 字符:char, varchar, text                             │
│  ├── 布尔:boolean                                         │
│  └── 日期:date, time, timestamp, interval                 │
│                                                             │
│  高级类型:                                                  │
│  ├── JSON:json, jsonb                                     │
│  ├── 数组:integer[], text[]                               │
│  ├── 几何:point, line, polygon                            │
│  ├── 网络:inet, cidr, macaddr                             │
│  ├── UUID:uuid                                            │
│  ├── XML:xml                                              │
│  └── 范围:int4range, daterange                            │
│                                                             │
│  自定义类型:                                                │
│  ├── 复合类型                                              │
│  ├── 枚举类型                                              │
│  └── 域类型                                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. MVCC 多版本并发控制 #

text
┌─────────────────────────────────────────────────────────────┐
│                    MVCC 机制                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  传统锁机制问题:                                            │
│  ❌ 读操作阻塞写操作                                        │
│  ❌ 写操作阻塞读操作                                        │
│  ❌ 并发性能差                                              │
│                                                             │
│  MVCC 解决方案:                                             │
│                                                             │
│   ┌─────────┐                ┌─────────┐                   │
│   │  事务A  │                │  事务B  │                   │
│   │ (读取)  │                │ (写入)  │                   │
│   └────┬────┘                └────┬────┘                   │
│        │                          │                         │
│        │ 读取旧版本数据           │ 创建新版本              │
│        │ 不阻塞                   │ 不阻塞读取              │
│        │                          │                         │
│        └──────────────────────────┘                         │
│                                                             │
│  优势:                                                     │
│  ✅ 读写互不阻塞                                            │
│  ✅ 高并发性能                                              │
│  ✅ 一致性读                                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. 高度可扩展 #

text
┌─────────────────────────────────────────────────────────────┐
│                    可扩展性                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  扩展类型:                                                  │
│                                                             │
│  1. 数据类型扩展                                            │
│     - 自定义复合类型                                        │
│     - 枚举类型                                              │
│     - 域类型                                                │
│                                                             │
│  2. 函数扩展                                                │
│     - 自定义函数                                            │
│     - 聚合函数                                              │
│     - 窗口函数                                              │
│                                                             │
│  3. 操作符扩展                                              │
│     - 自定义操作符                                          │
│     - 操作符类                                              │
│                                                             │
│  4. 索引扩展                                                │
│     - B-tree, Hash, GiST, SP-GiST, GIN, BRIN               │
│                                                             │
│  5. 过程语言                                                │
│     - PL/pgSQL(内置)                                      │
│     - PL/Python                                            │
│     - PL/Perl                                              │
│     - PL/Tcl                                               │
│     - PL/Java                                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

与其他数据库对比 #

PostgreSQL vs MySQL #

特性 PostgreSQL MySQL
许可证 PostgreSQL License GPL / 商业许可
数据类型 更丰富(数组、JSON、几何) 基础类型
JSON支持 原生JSON/JSONB JSON支持
全文搜索 内置 需要引擎支持
窗口函数 完整支持 部分支持
递归查询 支持 支持
索引类型 多种(B-tree, GiST, GIN等) B-tree, Hash, Full-text
复制 物理+逻辑复制 主从复制
扩展性 高度可扩展 有限扩展
适用场景 复杂查询、数据分析 Web应用、简单事务

PostgreSQL vs Oracle #

特性 PostgreSQL Oracle
许可证 开源免费 商业许可
成本 免费 高昂
功能 企业级功能 企业级功能
性能 优秀 优秀
社区 活跃开源社区 官方支持
学习曲线 中等 较陡
适用场景 中大型项目 大型企业

应用场景 #

1. Web 应用后端 #

text
┌─────────────────────────────────────────────────────────────┐
│                    Web 应用架构                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌─────────┐     ┌─────────┐     ┌─────────┐              │
│   │  前端   │ ──> │  后端   │ ──> │PostgreSQL│              │
│   └─────────┘     └─────────┘     └─────────┘              │
│                                                             │
│   适用场景:                                                 │
│   ✅ 用户管理系统                                           │
│   ✅ 内容管理系统(CMS)                                    │
│   ✅ 电商系统                                               │
│   ✅ 社交平台                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. 数据分析 #

text
┌─────────────────────────────────────────────────────────────┐
│                    数据分析场景                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   数据仓库:                                                 │
│   ├── 大规模数据存储                                        │
│   ├── 复杂聚合查询                                          │
│   ├── 窗口函数分析                                          │
│   └── 报表生成                                              │
│                                                             │
│   实时分析:                                                 │
│   ├── 物化视图                                              │
│   ├── 流式数据处理                                          │
│   └── 实时仪表盘                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. 地理信息系统(GIS) #

text
┌─────────────────────────────────────────────────────────────┐
│                    GIS 应用                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   PostGIS 扩展:                                            │
│                                                             │
│   ├── 空间数据存储                                          │
│   │   - 点、线、多边形                                      │
│   │   - 地理坐标                                            │
│   │                                                         │
│   ├── 空间查询                                              │
│   │   - 距离计算                                            │
│   │   - 范围查询                                            │
│   │   - 空间关系                                            │
│   │                                                         │
│   └── 应用场景                                              │
│       - 地图应用                                            │
│       - 位置服务                                            │
│       - 物流配送                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. 微服务架构 #

text
┌─────────────────────────────────────────────────────────────┐
│                    微服务数据存储                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌───────────┐  ┌───────────┐  ┌───────────┐             │
│   │ 用户服务  │  │ 订单服务  │  │ 商品服务  │             │
│   └─────┬─────┘  └─────┬─────┘  └─────┬─────┘             │
│         │              │              │                     │
│         ▼              ▼              ▼                     │
│   ┌───────────┐  ┌───────────┐  ┌───────────┐             │
│   │PostgreSQL │  │PostgreSQL │  │PostgreSQL │             │
│   │  用户库   │  │  订单库   │  │  商品库   │             │
│   └───────────┘  └───────────┘  └───────────┘             │
│                                                             │
│   每个服务独立数据库,支持不同业务需求                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

谁在使用 PostgreSQL #

知名企业用户 #

公司 使用场景
Instagram 社交网络数据存储
Spotify 音乐元数据管理
Reddit 社区数据存储
Apple 后端服务支持
Fujitsu 企业解决方案
Skype 通信数据存储

PostgreSQL 生态系统 #

官方工具 #

工具 用途
psql 命令行客户端
pg_dump 备份工具
pg_restore 恢复工具
pgAdmin 图形化管理工具
pg_basebackup 基础备份工具
pg_upgrade 版本升级工具

流行扩展 #

扩展 功能
PostGIS 地理空间数据支持
pg_stat_statements SQL统计
pg_trgm 相似度搜索
hstore 键值存储
citus 分布式扩展
TimescaleDB 时序数据

学习路径 #

text
入门阶段
├── PostgreSQL简介(本文)
├── 安装与配置
├── 基础语法
└── 数据类型

基础阶段
├── 数据库操作
├── 表操作
├── 数据CRUD
└── 基础查询

进阶阶段
├── 高级查询
├── 多表查询
├── 索引优化
└── 事务处理

下一步 #

现在你已经了解了 PostgreSQL 的基本概念,接下来学习 安装与配置,开始动手实践吧!

最后更新:2026-03-29