PostgreSQL/功能
外观
最早的 概念文件 - 出版于 1986 年 - 定义了一个目标,该目标将 PostgreSQL 与其他许多系统区分开来,直到今天:“为数据类型、运算符和访问方法提供用户可扩展性”。这个目标已经实现。它不仅对用户可用,即使内部实现也利用这些接口来创建系统组件。
PostgreSQL 实现了一个客户端/服务器模型。每个客户端进程连接到服务器站点上的一个后端进程。这样的后端进程是实例的一部分,一个由许多进程组成的组,它们紧密协作并处理数据访问。PostgreSQL 不会在后端进程或其他任何地方使用线程。
- 身份验证方法:SCRAM-SHA-256、GSSAPI、SSPI、LDAP、RADIUS、证书、PAM
- 角色(用户和组)授权访问数据和执行函数
- 事务,具有完整的 ACID 支持和不同的隔离级别
- 保存点(子事务)
- 多版本并发控制 (MVCC)
- 时间点恢复
- 表和索引的分区
- 同步、异步和逻辑复制
- 双向复制
- 发布/订阅机制
- 在多个 CPU 上并行执行单个查询
- 丰富的预定义数据类型,例如 JSON
- 支持数组
- 复合类型(类似于某些编程语言中的记录),通过行关键字构造行
- 检查约束
- 使用外键的引用完整性
- 表继承
- 视图、物化视图、可更新视图
- 用户定义的数据类型、运算符和索引访问方法
- 用户定义的函数、过程、触发器和过程语言
- 创建扩展接口以创建用户定义的包。一些公开可用的示例
- 外部数据包装器用于其他 - PostgreSQL 或非 PostgreSQL - 数据库或文件系统
- PostGIS:用于空间和地理对象的扩展
- hstore:键值存储
- 高度符合 SQL 标准:177 个功能中的 170 个
- 外连接、联合、交集、排除
- 分组依据、分组集、立方、汇总
- 公用表表达式 (CTE)
- 递归查询、图查询
- 窗口函数、分析函数