PostgreSQL

PostgreSQL 是强调标准兼容、扩展性、强约束与高级查询能力的关系型数据库,常作为高表达力的通用业务主库。

#type / resource #status / growing #tech / dev / backend #resource / postgresql

[!info] related notes

PostgreSQL

这是什么

PostgreSQL 是一款强调标准兼容、可扩展性、类型系统和高级查询能力的关系型数据库。很多团队会把它视为“表达力更强的通用主库”。

如果只用一句更工程化的话描述它,可以理解成:

  • 不只是“能存表”
  • 也很擅长承载复杂约束、复杂查询和更强的数据语义

为什么很多工程师偏爱它

PostgreSQL 经常被偏爱,不只是因为功能多,而是因为它在数据库作为“数据语义平台”这件事上很强:

  • 类型系统强
  • 约束表达力强
  • SQL 能力强
  • 扩展和高级索引能力成熟

这让它在很多项目里不只是“存数据的地方”,而是“业务规则和数据语义的重要承载层”。

适用平台 / 适用场景

  • 业务规则复杂、约束较强的系统
  • 需要 JSONB、数组、全文检索、扩展索引的项目
  • 希望在 SQL、类型系统和查询表达上更接近“数据库作为平台”的用法
  • 把数据库视为重要建模层,而不只是 ORM 背后的存储层

核心特点 / 优势 / 局限

核心特点

  • 典型部署方式是独立数据库服务
  • 并发与恢复能力常围绕 MVCCWAL 去理解
  • 对复杂查询、复杂数据类型和数据完整性控制很友好

优势

  • 类型系统和约束表达力强
  • JSONB、数组、窗口函数、CTE、扩展索引等能力成熟
  • 并发控制与 MVCC 语义非常值得深入学习
  • 很适合作为“既要业务主库,也要较强查询与数据语义”的数据库

局限

  • 初学时门槛略高于 MySQL
  • 某些“默认配置即开箱”体验未必像 MySQL 那样贴近大量旧教程
  • 如果团队只是想快速上一个非常典型的 CRUD 主库,而对高级表达力需求不高,学习成本可能体感更重

从原理角度理解 PostgreSQL,最该先抓住什么

1. PostgreSQL 的强项不只是功能多,而是语义强

它的价值不只是“支持更多类型”,而是:

  • 更愿意让数据库本身承担数据结构与约束表达
  • 更容易把复杂查询和复杂规则稳定地放在数据库层处理

2. 学 PostgreSQL 时,事务和 WAL 很关键

要真正理解 PostgreSQL 的行为,通常离不开:

否则很容易只看到“它支持 JSONB、数组、CTE”,却不理解它在并发和恢复上的真实模型。

3. PostgreSQL 往往更鼓励“把数据库当成能力平台”

这会体现在很多地方:

  • 更复杂的数据类型
  • 更强约束
  • 更丰富查询表达
  • 更广的扩展生态

因此很多团队会觉得 PostgreSQL 更适合承载长期复杂化的系统。

常见用途

  • 通用业务主库
  • 对数据完整性和查询表达要求高的系统
  • 需要复杂类型、复杂查询或扩展能力的后端项目
  • 本地优先 / 同步架构中的服务端数据库

和 MySQL 相比时最常见的认知差异

一个很常见的工程心智模型是:

  • MySQL 更强调通用、常见、上手成本低
  • PostgreSQL 更强调表达力、约束能力和长期演进空间

这不是绝对划分,但对入门选型很有帮助。

具体对照可继续看:

相关 howto / MOC / 官方链接

创建于 2025/1/1 更新于 2026/5/27