ITPub博客

首页 > 数据库 > 数据库开发技术 > 《PostgreSQL 开发指南》第 02 篇 PostgreSQL 简介

《PostgreSQL 开发指南》第 02 篇 PostgreSQL 简介

原创 数据库开发技术 作者:BUAA_dxy 时间:2022-02-03 21:31:31 0 删除 编辑

PostgreSQL,简称 Postgres,是世界上最先进的开源对象-关系型数据库管理系统(ORDBMS)。它最初基于加利福尼亚大学伯克利分校开发的 POSTGRES, Version 4.2,至今已有 30 多年的历史。

首先说开源,PostgreSQL 是一个免费并且开源的软件。它的代码基于 PostgreSQL 许可发行,这是一个类似于 BSD 或者 MIT 的自由开放源码许可协议。用户可以基于任何目的使用、修改和发布 PostgreSQL,甚至直接包装一下拿出去卖钱都没问题,唯一的要求就是保留它的版权声明。这一点相对于 MySQL 社区版的 GPL 协议友好许多。

再说它的先进,PostgreSQL 使用 C 语言进行开发,最初是为了类 UNIX 平台而设计。不过,PostgreSQL 现在可以支持各种主流的平台,例如 Linux、BSD、AIX、HP-UX、Mac OS X、Solaris 以及 Windows 等等。

PostgreSQL 使用客户端/服务器模型。一个 PostgreSQL 会话由以下相互协作的进程(程序)组成:

  • 服务器进程,负责管理数据库文件,接收客户端应用的连接,并且代表客户端执行数据库操作。数据库服务器进程名称为 postgres。

  • 客户端(前端)应用,想要执行数据库操作。客户端应用不尽相同:一个基于文本的工具,一个图形应用,一个访问数据库并显示网页的页面服务器,或者一个专业的数据库维护工具。



作为一个典型的客户端/服务器应用,客户端和服务器可以位于不同的主机上。它们通过一个 TCP/IP 网络连接进行通信。需要记住这一点,因为客户端能够访问的文件在数据库服务器上可能无法访问(或者只能使用一个不同的文件名访问)。PostgreSQL 服务器可以处理多个客户端的并发连接。服务器为每个连接启动(fork)一个新的进程。此后,客户端与新建的服务器进程通信,而与最初的 postgres 进程无关。因此,主服务器进程一直运行,等待客户端连接,而客户端和相关的服务器进程不停创建和关闭。

PostgreSQL 遵循事务的 ACID 原则,高度兼容 SQL 标准,对于 2021 年 9 月发布的 PostgreSQL 14,至少符合 SQL:2016 核心一致性的 179 项强制功能中的 170 项;目前,还没有任何关系型数据库产品完全符合该标准。

以下是 PostgreSQL 所支持的主要功能和特性,随着新版本的发布,将会增加更多的功能:

  • 数据类型

    • 基本类型:整型、数值、字符串、布尔值

    • 结构化类型:日期/时间、数组、范围、UUID

    • 文档类型:JSON/JSONB、XML、键值存储(Hstore)

    • 几何类型:点、线、圆、多边形

    • 定制化类型:复合类型、自定义类型

  • 数据完整性

    • UNIQUE、NOT NULL

    • 主键

    • 外键

    • 排除约束

    • 显式锁、建议锁

  • 并发、性能

    • 索引:B-tree、复合索引、函数索引、部分索引

    • 高级索引:GiST、SP-Gist、KNN Gist、GIN、BRIN、覆盖索引、布隆过滤器索引

    • 复杂的查询计划器/优化器、Index-Only 扫描、多列统计

    • 事务、嵌套事务(通过保存点实现)

    • 多版本并发控制(MVCC)

    • 并行查询以及 B-tree 索引的并行创建

    • 表分区

    • SQL 标准中定义的 4 种事务隔离级别,包括序列化(Serializable)事务级别

    • 表达式的即时(JIT)编译

  • 可靠性、灾难恢复

    • 预写式日志(WAL)

    • 复制:异步复制、同步复制、逻辑复制

    • 基于时间点的恢复(PITR)、活动备份

    • 表空间

  • 安全

    • 身份认证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、SSL 证书等等

    • 强大的访问控制系统

    • 列级与行级安全性

  • 可扩展性

    • 存储函数和存储过程

    • 过程语言:PL/PGSQL、PL/Perl、PL/Python 等等

    • 外部数据包装器(FDW):通过标准 SQL 接口连接到其他数据库或数据流

    • 大量提供额外功能的扩展:包括 PostGIS

  • 国际化、全文检索

    • 多种方式支持国际字符集,例如通过 ICU 排序规则

    • 全文检索

对于初学者,随着学习的深入可以慢慢了解这些功能的强大之处。如果想要了解每个 PostgreSQL 版本支持的新特性,可以查看官方的特性矩阵(https://www.postgresql.org/about/featurematrix/)。该页面详细列出了不同版本支持的各种功能,方便进行比较,同时还可以通过链接查看每个功能的具体介绍。

PostgreSQL 的另一个强大之处在于它的高度可扩展性。在 PostgreSQL 中,用户可以定义自己的数据类型、索引类型、过程语言等等。市场上存在大量基于 PostgreSQL 的数据库产品,例如 Greenplum、EnterpriseDB、TimescaleDB、Citus 等等。

如果需要支持,PostgreSQL 拥有一个非常活跃的社区,包括中文社区,通过社区通常总是可以解决你的各种问题。另外,许多公司可以提供商业支持。

PostgreSQL 已经被实践证明,无论是可管理的数据量还是支持的用户并发数,它都具有高度的可扩展性。在生产环境中已经存在能够管理 TB 级别数据量的 PostgreSQL 集群,以及能够管理 PB 级别数据量的专用系统。

下一篇中我们将会学习如何安装 PostgreSQL 软件。

原文作者:SQL编程思想;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
《SQL编程思想》作者,专注于数据库领域知识的分享。

注册时间:2021-08-26

  • 博文量
    443
  • 访问量
    546962