PostgreSQL

PostgreSQL 起源于加州大学伯克利分校计算机系,最初设想于 1986 年,当时叫做 Berkley Postgres Project。1995 年,开发者 Andrew Yu 和 Jolly Chen 在 Postgres 中添加了一个 SQL 翻译程序,并在开源社区发布,称为 Postgres95。1996 年,开发者再次对 Postgres95 做了较大的改动,并将其作为 PostgresSQL 6.0 版正式发布。

PostgreSQL是一个强大的开源对象关系数据库系统,它使用并扩展了SQL语言,并结合了许多特性来安全存储和扩展最复杂的数据工作负载。凭借其经过验证的架构、可靠性、数据完整性、健壮的特性集、可扩展性,以及开源社区对该软件持续交付性能和创新解决方案的奉献,赢得了强大的声誉。PostgreSQL可以运行在所有主流的操作系统上,自2001年起就与acid兼容,并且拥有强大的插件,比如流行的PostGIS地理空间数据库扩展器。自从 MySQL 被 Oracle 收购以后,PostgreSQL 逐渐成为了开源关系型数据库的首选。

特性

数据类型

  • 基本类型:Integer、Numeric、String、Boolean
  • 结构类型:Date/Time、Array、Range / Multirange、UUID
  • 文档类型:JSON/JSONB、XML、Key-value (Hstore)
  • 几何类型:Point、Line、Circle、Polygon
  • 自定义类型:Composite、Custom Types

完整性约束

  • 数据唯一约束,非空约束
  • 主键约束
  • 外键约束
  • 排除约束
  • 显式锁定、咨询锁定

并发性、性能

  • 索引:B树,组合索引,表达式索引,局部索引
  • 高级索引:GiST, SP-Gist, KNN GiST, GIN, BRIN,覆盖索引,Bloom过滤器
  • 复杂的查询规划/优化器、仅索引扫描、多列统计信息
  • 事务、嵌套事务
  • 多版本并发控制
  • 并行读取查询和构建B树索引
  • 表分区
  • SQL标准中定义的所有事务隔离级别,包括Serializable
  • 表达式的即时(JIT)编译

可靠性

  • 预写日志(WAL)
  • 数据复制(异步,同步,逻辑):对于 Web 应用来说,复制的特性很重要,PostgreSQL 可以做到同步,异步,半同步复制。PostgreSQL 的复制基于 WAL,可以做到同步复制。同时 PostgreSQL 还提供 stream 复制。
  • 时间点恢复
  • 主动备用
  • 表空间

安全性

  • 身份验证方式:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等。
  • 健壮的访问控制系统
  • 列级和行级安全
  • 使用证书和附加方法的多因素身份验证

可扩展性

  • 存储函数和过程

  • 过程语言:PL/PGSQL、Perl、Python(以及更多)

  • SQL / JSON路径表达式

  • 外部数据包装器:使用标准SQL接口连接到其他数据库或流

  • 可定制的表存储接口

  • 许多扩展提供额外的功能,包括PostGIS

国际化、文本搜索

  • 支持国际字符集,例如通过ICU排序

  • 不区分大小写和不区分重音的排序规则

  • 全文搜索

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐