PostgreSQL
PostgreSQL 是强调标准兼容、扩展性、强约束与高级查询能力的关系型数据库,常作为高表达力的通用业务主库。
#type / resource
#status / growing
#tech / dev / backend
#resource / postgresql
[!info] related notes
PostgreSQL
这是什么
PostgreSQL 是一款强调标准兼容、可扩展性、类型系统和高级查询能力的关系型数据库。很多团队会把它视为“表达力更强的通用主库”。
如果只用一句更工程化的话描述它,可以理解成:
- 不只是“能存表”
- 也很擅长承载复杂约束、复杂查询和更强的数据语义
为什么很多工程师偏爱它
PostgreSQL 经常被偏爱,不只是因为功能多,而是因为它在数据库作为“数据语义平台”这件事上很强:
- 类型系统强
- 约束表达力强
- SQL 能力强
- 扩展和高级索引能力成熟
这让它在很多项目里不只是“存数据的地方”,而是“业务规则和数据语义的重要承载层”。
适用平台 / 适用场景
- 业务规则复杂、约束较强的系统
- 需要 JSONB、数组、全文检索、扩展索引的项目
- 希望在 SQL、类型系统和查询表达上更接近“数据库作为平台”的用法
- 把数据库视为重要建模层,而不只是 ORM 背后的存储层
核心特点 / 优势 / 局限
核心特点
优势
- 类型系统和约束表达力强
- JSONB、数组、窗口函数、CTE、扩展索引等能力成熟
- 并发控制与 MVCC 语义非常值得深入学习
- 很适合作为“既要业务主库,也要较强查询与数据语义”的数据库
局限
- 初学时门槛略高于 MySQL
- 某些“默认配置即开箱”体验未必像 MySQL 那样贴近大量旧教程
- 如果团队只是想快速上一个非常典型的 CRUD 主库,而对高级表达力需求不高,学习成本可能体感更重
从原理角度理解 PostgreSQL,最该先抓住什么
1. PostgreSQL 的强项不只是功能多,而是语义强
它的价值不只是“支持更多类型”,而是:
- 更愿意让数据库本身承担数据结构与约束表达
- 更容易把复杂查询和复杂规则稳定地放在数据库层处理
2. 学 PostgreSQL 时,事务和 WAL 很关键
要真正理解 PostgreSQL 的行为,通常离不开:
否则很容易只看到“它支持 JSONB、数组、CTE”,却不理解它在并发和恢复上的真实模型。
3. PostgreSQL 往往更鼓励“把数据库当成能力平台”
这会体现在很多地方:
- 更复杂的数据类型
- 更强约束
- 更丰富查询表达
- 更广的扩展生态
因此很多团队会觉得 PostgreSQL 更适合承载长期复杂化的系统。
常见用途
- 通用业务主库
- 对数据完整性和查询表达要求高的系统
- 需要复杂类型、复杂查询或扩展能力的后端项目
- 本地优先 / 同步架构中的服务端数据库
和 MySQL 相比时最常见的认知差异
一个很常见的工程心智模型是:
- MySQL 更强调通用、常见、上手成本低
- PostgreSQL 更强调表达力、约束能力和长期演进空间
这不是绝对划分,但对入门选型很有帮助。
具体对照可继续看: