PostgreSQL 18 从新手到大师:实战指南 - 1.1 PostgreSQL 18简介

1.1.1 数据库的发展历程

在开始学习PostgreSQL 18之前,让我们先了解一下数据库的发展历史,这有助于我们理解PostgreSQL在数据库领域的地位和价值。

1.1.1.1 从文件系统到数据库系统

早期的数据存储主要依靠文件系统,例如使用Excel、CSV文件等管理数据。然而,随着数据量的增长和业务复杂度的提高,文件系统暴露出许多问题:

  • 数据冗余:相同的数据可能被存储在多个文件中
  • 数据不一致:修改一处数据时,其他副本可能忘记更新
  • 访问控制困难:难以实现精细的权限管理
  • 并发访问问题:多个用户同时修改数据时容易产生冲突
  • 查询效率低下:对于复杂查询,文件系统处理速度极慢

为了解决这些问题,数据库管理系统(DBMS)应运而生。DBMS是一种专门用于管理数据的软件,它提供了数据定义、数据操作、数据存储、数据安全等功能。

1.1.1.2 关系型数据库的崛起

1970年,IBM研究员埃德加·科德(Edgar F. Codd)提出了关系模型理论,奠定了关系型数据库的基础。关系模型将数据组织成二维表格形式,通过行(记录)和列(字段)来表示数据,使用SQL(结构化查询语言)进行操作。

关系型数据库具有以下优势:

  • 数据结构化:采用表格形式,数据组织清晰
  • ACID特性:保证数据的原子性、一致性、隔离性和持久性
  • 强大的查询能力:支持复杂的SQL查询
  • 事务支持:确保数据操作的可靠性
  • 数据完整性:通过约束(主键、外键、唯一性等)保证数据质量

1.1.1.3 PostgreSQL的诞生与发展

PostgreSQL的前身是Ingres,由加州大学伯克利分校的Michael Stonebraker教授领导开发于20世纪70年代。1986年,Stonebraker教授启动了Postgres项目,旨在解决Ingres的局限性。

1995年,Postgres项目加入了SQL支持,更名为PostgreSQL。从那时起,PostgreSQL进入了快速发展阶段,逐渐成为最受欢迎的开源关系型数据库之一。

PostgreSQL的发展理念是:

  • 开源免费:基于PostgreSQL许可证,允许自由使用、修改和分发
  • 功能强大:支持丰富的数据类型和高级特性
  • 可扩展性强:允许用户自定义数据类型、函数和扩展
  • 可靠性高:以稳定性和数据完整性著称
  • 社区驱动:由全球开发者社区共同维护和发展

1.1.2 PostgreSQL的核心特性

PostgreSQL之所以受到广泛欢迎,是因为它具备许多强大的特性,使其在各种应用场景中都能表现出色。

1.1.2.1 数据类型丰富

PostgreSQL支持多种数据类型,包括:

  • 基本数据类型:整数、浮点数、字符串、布尔值、日期时间等
  • 复合数据类型:数组、JSON/JSONB、XML、HSTORE(键值对)
  • 空间数据类型:支持PostGIS扩展,用于地理信息系统(GIS)
  • 自定义数据类型:允许用户根据需求创建自己的数据类型

1.1.2.2 高级SQL支持

PostgreSQL支持SQL:2016标准,并提供了许多扩展功能:

  • 高级查询功能:JOIN操作、子查询、聚合函数、窗口函数
  • Common Table Expressions (CTE):使用WITH子句简化复杂查询
  • 递归查询:支持树形结构数据查询
  • 全文搜索:内置强大的全文搜索功能

1.1.2.3 事务与并发控制

PostgreSQL严格遵循ACID特性,并实现了多版本并发控制(MVCC),允许多个事务同时访问数据库而不会互相阻塞,提高了系统的并发处理能力。

1.1.2.4 可扩展性

PostgreSQL的可扩展性体现在多个方面:

  • 扩展机制:支持通过扩展添加新功能,如PostGIS、pg_stat_statements等
  • 自定义函数:允许使用多种语言(SQL、PL/pgSQL、Python、C等)编写自定义函数
  • 分区表:支持将大表分割成多个小表,提高查询效率
  • 并行查询:支持查询并行执行,加快查询速度

1.1.2.5 可靠性与安全性

  • 数据完整性:支持主键、外键、唯一性约束、检查约束等
  • 备份与恢复:提供多种备份方式,如pg_dump、基础备份等
  • 安全认证:支持多种认证方式,如密码认证、SSL加密、LDAP认证等
  • 细粒度权限控制:可以精确控制用户对数据库对象的访问权限

1.1.3 PostgreSQL 18的新特性

PostgreSQL 18是PostgreSQL的最新版本,于2025年发布,带来了许多令人期待的新特性和改进。

1.1.3.1 性能提升

  • 并行查询增强:进一步优化了并行查询机制,提高了多核CPU利用率
  • 向量处理加速:支持向量数据类型和向量运算,为AI应用提供更好的支持
  • 查询优化器改进:优化了查询计划生成算法,提高了复杂查询的执行效率
  • 存储引擎优化:减少了磁盘I/O开销,提高了数据读写性能

1.1.3.2 向量数据库功能

PostgreSQL 18增强了对向量数据的支持,使其成为强大的向量数据库:

  • 内置向量数据类型:支持高效存储和查询向量数据
  • 向量索引:支持向量相似度查询的索引,如IVFFlat、HNSW等
  • 向量函数:提供丰富的向量运算函数,如点积、余弦相似度等
  • 与AI框架集成:便于与Python的PyTorch、TensorFlow等AI框架集成

1.1.3.3 开发者体验改进

  • SQL/JSON路径表达式增强:提供更强大的JSON数据查询能力
  • 存储过程改进:支持更灵活的存储过程编写
  • 错误信息优化:提供更清晰、更有用的错误信息,便于调试
  • 开发工具集成:与主流IDE和开发工具更好地集成

1.1.3.4 管理与监控增强

  • 增强的监控指标:提供更多系统性能指标,便于监控和调优
  • 自动统计信息收集:改进了统计信息收集机制,提高了查询优化器的准确性
  • 配置管理简化:提供了更简洁的配置选项,便于数据库管理
  • 日志格式改进:日志格式更易读,便于分析和监控

1.1.3.5 安全性增强

  • 更强的加密支持:支持更多加密算法和加密选项
  • 访问控制改进:提供更细粒度的访问控制机制
  • 安全审计增强:增强了审计日志功能,便于追踪和合规

1.1.4 PostgreSQL的应用场景

PostgreSQL的强大功能使其适用于各种应用场景:

1.1.4.1 Web应用

PostgreSQL是Web应用的理想数据库,支持高并发访问,提供可靠的数据存储和查询能力。许多知名网站和应用都使用PostgreSQL,如Reddit、Discord、Instagram等。

1.1.4.2 数据分析与数据仓库

PostgreSQL支持复杂查询和聚合操作,适合用于数据分析和数据仓库。结合PostgreSQL的分区表、并行查询等特性,可以处理大规模数据。

1.1.4.3 地理信息系统(GIS)

通过PostGIS扩展,PostgreSQL成为强大的GIS数据库,支持空间数据存储、查询和分析,广泛应用于地图、导航、城市规划等领域。

1.1.4.4 物联网(IoT)

PostgreSQL支持高并发写入和复杂查询,适合用于物联网数据的存储和分析。结合时序数据库扩展(如TimescaleDB),可以高效处理物联网设备产生的海量时序数据。

1.1.4.5 人工智能与机器学习

PostgreSQL 18增强的向量数据库功能使其成为AI和机器学习应用的理想选择,可以高效存储和查询模型嵌入向量,支持相似度搜索等AI应用场景。

1.1.5 为什么选择PostgreSQL?

在众多数据库中,为什么要选择PostgreSQL?以下是几个主要原因:

1.1.5.1 开源免费

PostgreSQL是完全开源的,基于PostgreSQL许可证,允许自由使用、修改和分发,无需支付任何许可费用,降低了企业的成本。

1.1.5.2 功能强大

PostgreSQL提供了丰富的功能,几乎可以满足所有数据库需求,从简单的Web应用到复杂的数据分析和AI应用。

1.1.5.3 可靠性高

PostgreSQL以稳定性和数据完整性著称,经过多年的发展和测试,已经在各种生产环境中得到了验证。

1.1.5.4 活跃的社区

PostgreSQL拥有庞大而活跃的社区,全球有数万名开发者参与其开发和维护,社区提供了丰富的资源和支持。

1.1.5.5 良好的兼容性

PostgreSQL支持SQL标准,并提供了与其他数据库(如Oracle、MySQL)的兼容模式,便于迁移和集成。

1.1.5.6 持续创新

PostgreSQL社区持续进行创新,不断引入新功能和改进,确保PostgreSQL始终处于数据库技术的前沿。

1.1.6 主流关系型数据库对比

为了帮助大家更好地理解PostgreSQL的优势和适用场景,我们将PostgreSQL 18与另外两个主流关系型数据库SQL Server 2019+和MySQL 8.0+进行对比。

1.1.6.1 基本信息对比

特性 PostgreSQL 18 SQL Server 2019+ MySQL 8.0+
发布时间 2025年 2019年(最新版本2022) 2018年(最新版本8.3)
许可证 开源(PostgreSQL许可证) 商业(有免费Express版本) 开源(GPL许可证)
开发组织 PostgreSQL全球开发社区 Microsoft Oracle(收购自Sun)
主要语言 C C++ C/C++
默认端口 5432 1433 3306

1.1.6.2 核心特性对比

特性 PostgreSQL 18 SQL Server 2019+ MySQL 8.0+
SQL标准支持 SQL:2016(高度兼容) SQL:2016(良好兼容) SQL:2011(部分兼容)
ACID支持 完全支持 完全支持 完全支持(InnoDB存储引擎)
并发控制 MVCC(多版本并发控制) MVCC + 锁定机制 MVCC(InnoDB存储引擎)
存储引擎 单一存储引擎(可扩展) 多种存储引擎(如In-Memory OLTP、Columnstore) 多种存储引擎(InnoDB、MyISAM等)
扩展性 强大的扩展机制(可自定义类型、函数、扩展) 有限的扩展性(主要通过扩展包) 有限的扩展性(插件系统)
向量数据库支持 原生向量数据类型和索引 需通过扩展(如Azure AI Vector Search) 需通过插件(如pgvector兼容层)
JSON支持 原生JSON/JSONB类型,强大的JSON查询功能 良好的JSON支持,包括JSONB和JSONPath 原生JSON支持,包括JSONPath查询
空间数据支持 强大的PostGIS扩展,GIS功能全面 内置空间数据类型和函数 有限的空间数据支持(需MySQL Spatial扩展)
并行查询 强大的并行查询支持,支持多种操作类型 良好的并行查询支持 有限的并行查询支持(主要在8.0后增强)

1.1.6.3 架构差异对比

架构特性 PostgreSQL 18 SQL Server 2019+ MySQL 8.0+
进程模型 多进程架构(每个连接对应一个进程) 单进程多线程架构 多线程架构
内存管理 共享内存 + 进程私有内存 复杂的内存架构(缓冲池、计划缓存等) 缓冲池 + 线程私有内存
存储结构 堆表存储(可扩展) 堆表 + 聚集索引 聚集索引(InnoDB) + 二级索引
事务日志 WAL(Write-Ahead Logging) 事务日志(Transaction Log) Redo Log + Undo Log(InnoDB)

1.1.6.4 生态系统对比

生态特性 PostgreSQL 18 SQL Server 2019+ MySQL 8.0+
管理工具 pgAdmin、psql、DBeaver SQL Server Management Studio (SSMS)、Azure Data Studio MySQL Workbench、DBeaver
第三方集成 丰富的第三方工具和框架支持 与Microsoft生态深度集成(.NET、Azure等) 广泛的Web应用框架支持(PHP、Node.js等)
云服务支持 所有主流云平台支持(AWS RDS、Azure Database、Google Cloud SQL) Azure SQL Database、AWS RDS、Google Cloud SQL 所有主流云平台支持
社区活跃度 活跃的开源社区,全球贡献者众多 主要由Microsoft维护,社区活跃度一般 活跃的开源社区,广泛的用户基础

1.1.6.5 适用场景对比

场景类型 PostgreSQL 18 SQL Server 2019+ MySQL 8.0+
Web应用 适合复杂Web应用,尤其是需要高级特性的场景 适合.NET生态的企业级Web应用 适合中小型Web应用,尤其是LAMP/MEAN栈
数据分析 强大的分析能力,适合数据仓库和BI场景 优秀的数据分析和BI支持,尤其是与Microsoft BI工具集成 有限的分析能力,适合简单的数据分析
企业应用 适合需要高可靠性和复杂数据模型的企业应用 适合大型企业应用,尤其是Microsoft技术栈 适合中小型企业应用,成本敏感场景
GIS应用 行业领先的GIS支持,适合地图、导航等应用 良好的GIS支持,适合企业级空间应用 有限的GIS支持,适合简单空间应用
AI/ML应用 原生向量数据库支持,适合AI嵌入向量存储和查询 需集成Azure AI服务,适合Microsoft生态的AI应用 需通过插件扩展,适合简单AI应用
IoT应用 适合需要复杂查询的IoT数据处理 适合企业级IoT解决方案,与Azure IoT集成 适合高并发写入的IoT场景,成本敏感

1.1.6.6 迁移兼容性

迁移方向 PostgreSQL 18 SQL Server 2019+ MySQL 8.0+
从Oracle迁移 良好的Oracle兼容模式和迁移工具 强大的Oracle迁移工具和兼容层 有限的Oracle兼容性,迁移复杂
从SQL Server迁移 良好的SQL Server兼容层和迁移工具 - 有限的SQL Server兼容性,迁移复杂
从MySQL迁移 强大的MySQL迁移工具和兼容模式 良好的MySQL迁移工具 -
迁移到云平台 平滑的云迁移体验,支持多种云服务 与Azure深度集成,迁移到Azure便捷 广泛的云服务支持,迁移便捷

1.1.7 PostgreSQL 18学习资源

为了帮助大家更好地学习PostgreSQL 18,以下是一些推荐的学习资源:

1.1.7.1 官方文档

1.1.7.2 在线课程

  • PostgreSQL官方培训:提供由PostgreSQL专家讲授的培训课程
  • Coursera、Udemy:有许多关于PostgreSQL的在线课程,适合不同水平的学习者

1.1.7.3 书籍

  • 《PostgreSQL实战》:适合初学者入门
  • 《PostgreSQL权威指南》:全面介绍PostgreSQL的核心特性
  • 《PostgreSQL高性能指南》:专注于PostgreSQL性能优化

1.1.7.4 社区资源

  • PostgreSQL中文社区https://www.postgresql.org.cn/ - 提供中文学习资源和交流平台
  • PostgreSQL邮件列表:可以与全球PostgreSQL开发者交流
  • PostgreSQL会议:如PgCon、PGConf等,提供学习和 networking 机会

1.1.8 最佳实践

1.1.8.1 版本选择建议

  • 生产环境:选择稳定版本,建议使用PostgreSQL 18的正式版,确保稳定性和安全性
  • 测试环境:可以使用PostgreSQL 18的最新版本,体验新特性
  • 升级策略:从旧版本升级到PostgreSQL 18时,建议先在测试环境验证,再进行生产环境升级

1.1.8.2 学习资源利用

  • 官方文档优先:PostgreSQL官方文档是最权威的学习资源,建议从官方文档开始学习
  • 实践中学习:结合实际项目或练习,加深对PostgreSQL特性的理解
  • 参与社区:加入PostgreSQL社区,与其他开发者交流学习经验

1.1.8.3 技能提升路径

  • 基础阶段:学习SQL语法、PostgreSQL安装配置、基本数据类型和操作
  • 进阶阶段:深入学习索引优化、事务处理、备份恢复等高级特性
  • 高级阶段:研究PostgreSQL源码、性能调优、高可用架构等

1.1.9 总结

PostgreSQL是一款功能强大、可靠性高、开源免费的关系型数据库,在数据库领域具有重要地位。通过与SQL Server 2019+和MySQL 8.0+的对比,我们可以看到PostgreSQL在开源生态、扩展性、GIS支持、向量数据库等方面具有明显优势,适合各种复杂应用场景。

PostgreSQL 18作为最新版本,带来了许多令人期待的新特性,特别是在性能提升、向量数据库功能、开发者体验等方面的改进,使其在AI时代具有更强的竞争力。

选择PostgreSQL作为学习和使用的数据库,不仅可以掌握一门强大的数据库技术,还可以参与到活跃的开源社区中,与全球开发者交流和合作。同时,通过与其他主流数据库的对比学习,你将建立更全面的数据库知识体系,提升在不同数据库间迁移和切换的能力。

在接下来的章节中,我们将逐步学习PostgreSQL 18的基础知识、安装配置、SQL语法、高级特性等,帮助大家从零基础成长为PostgreSQL专家。

让我们开始PostgreSQL 18的学习之旅吧!

1.1.10 思考与练习

1.1.10.1 思考问题

  1. 关系型数据库的核心优势是什么?与非关系型数据库相比有哪些不同?
  2. PostgreSQL 18的哪些新特性最吸引你?为什么?
  3. 在选择数据库时,你会考虑哪些因素?PostgreSQL在这些方面表现如何?
  4. PostgreSQL 18的向量数据库功能有哪些应用场景?
  5. 与SQL Server 2019+和MySQL 8.0+相比,PostgreSQL的竞争优势是什么?

1.1.10.2 练习题

  1. 简述数据库的发展历程,从文件系统到关系型数据库再到PostgreSQL的演变过程。
  2. 列出PostgreSQL的5个核心特性,并简要解释每个特性的作用。
  3. 对比PostgreSQL 18与SQL Server 2019+在向量数据库支持方面的差异。
  4. 分析PostgreSQL在Web应用、数据分析、GIS应用和AI/ML应用中的优势。
  5. 为什么说PostgreSQL是开源免费的?开源许可证对PostgreSQL的发展有什么影响?
  6. 简述PostgreSQL 18在性能提升方面的主要改进。
  7. 分析PostgreSQL的可扩展性体现在哪些方面。
  8. 对比PostgreSQL与MySQL在并发控制机制上的差异。
  9. 简述PostgreSQL的应用场景,并举例说明。
  10. 制定一个学习PostgreSQL 18的计划,包括学习内容、学习资源和实践项目。
相关推荐
好记忆不如烂笔头abc2 小时前
Ubuntu 20.04.6上实现远程桌面连接
服务器·网络·数据库
今晚务必早点睡2 小时前
Redis——快速入门第七课:Redis 为什么这么快?
数据库·redis·缓存
EterNity_TiMe_2 小时前
从 0 到 1:Llama 3-8B 在昇腾 Atlas 800T 上的推理调优与算力榨干指南
数据库·llama·昇腾·atlas 800t·实战部署
talenteddriver2 小时前
mysql: MySQL中between子句和limit子句的区别
前端·javascript·数据库
不会kao代码的小王2 小时前
BoostKit 数据库优化原理分析从 MySQL 到 MariaDB 的性能突破
数据库·mysql·mariadb
jgyzl2 小时前
DDL、DML、DQL、DCL基本介绍及mysql47题
数据库·mysql
lifewange2 小时前
数据库索引分类。
数据库
semantist@语校3 小时前
第五十八篇|从城市节律到制度密度:近畿日本语学院的数据建模与关西语校结构工程
大数据·服务器·数据库·人工智能·百度·ai·知识图谱