PostgreSQL 简介

PG简介

PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。

PostgreSQL 开发者把它念作 post-gress-Q-L。

PostgreSQL 的 Slogan 是 “世界上最先进的开源关系型数据库”。

“开源界的Oracle”,去O首选

PG的历史

PostgreSQL 最初设想于1986年,当时被叫做 Berkley Postgres Project。

该项目一直到1994年都处于演进和修改中,直到开发人员 Andrew Yu 和 Jolly Chen 在Postgres中添加了一个SQL(Structured Query Language,结构化查询语言)翻译程序,该版本叫做 Postgres95,在开放源代码开放源代码/114160)社区发放。开始以社区的形式运作。

1996年,再次对 Postgres95 做了较大的改动,并将其作为 PostgresSQL6.0 版发布。该版本的 Postgres 提高了后端的速度,包括增强型 SQL92 标准以及重要的后端特性(包括子选择、默认值、约束和触发器)。

2005年,发布 8.0 版本,开始支持 windows 系统环境

PostgreSQL 9.0:支持64位windows系统,异步流数据复制、Hot Standby;

PostgreSQL 9.1:支持数据同步复制,unlogged tabels、serializable snapshot isolation、FDW 外部表。

此版本后,PostgreSQL 开始得到中国多个行业用户的关注,开始有应用于电信、保险、制造业等边缘系统。

2、PG的社区

PG为什么没有被商业公司控制?

纯社区

为什么要贡献核心代码?

最终用户

  • 希望社区长久,期望可以享受免费的、可持续发展的、开源的、不被任何商业公司、不被任何国家控制的企业级数据库。去O,去DB2 ,去Sybase;
  • 不靠数据库赚钱;
  • PG用到的人越多,越多人背书,使用越靠谱(事实也是如此);
  • 抛砖引玉,企业投入2个研发持续贡献(一年可能一两百万),实际上整个PG社区有数千人在贡献,对最终用户来说,简直赚到了。使用商业数据库,除了LICENSE等成本,依旧需要投管理、研发、外包资源,一年数千万甚至上亿,公司越大,越有动力去贡献社区。从趋势来看,给PG贡献代码的大客户只会越来越多;

云厂商

  • 开源数据库与云厂商发生利益冲突,纷纷改协议;
  • 数据库市场巨大;
  • 自研是最佳选择,但是自研有一些问题:譬如需要培养生态,需要市场背书,需要大量研发资源,可能需要重复造轮子;
  • BASE PG的好处:
    1、免去自己培养生态,
    2、避免重复造轮子,
    3、PG的代码基础非常不错(开源界的Oracle)
    4、防止其他厂商控制PG失去市场主导能力(AWS,google,IBM,微软都已成为PG社区的赞助商)

数据库厂商

  • 推一款新的商业数据库,通常都需要背书,小厂产品,谁为你背书?
    1、有技术的厂商,很难挑战已有的数据库市场格局
    2、有渠道的厂商,需要抓住窗口期,快速占领市场,避免重复造轮子。
    需要一款可以无法律风险,二次分发的开源数据库,唯有PG
    可以贡献核心代码,社区所有的用户都可以为之背书。

数据库服务|DaaS服务提供商

  • 开源产品的服务提供商,能力如何体现?
    当然是你的架构能力,优化能力,管理能力,FIX BUG的能力
    最好能贡献核心代码,有PG为你背书

完善的组织结构

开源许可独特性

Postgres遵守BSD许可证发行,开发者们得以获取源代码并进一步开发系统。

BSD许可协议Berkeley Software Distribution license)是自由软件中使用最广泛的许可协议之一。BSD就是遵照这个许可证来发布,也因此而得名 BSD许可协议。

BSD包最初所有者是加州大学的董事会,这是由于 BSD 源自加州大学伯克利分校。BSD开始后,BSD许可协议得以修正,使得以后许多BSD变种,都采用类似风格的条款。

跟其他条款相比,从 GNU 通用公共许可证(GPL)到限制重重的著作权(Copyright),BSD许可证比较宽松,甚至跟公有领域更为接近。”Take it down to the copy center and make as many copies as you want”。可以说,GPL强迫后续版本必须一样是自由软件,BSD的后续版本可以选择要继续是BSD或其他自由软件条款或封闭软件等等。

众所周知,MySQL被Oracle所控制,MySQL同时使用了GPL和一种商业许可(称为双重许可)。

GPL(General Public license)是公共许可,遵循了GPL的软件是公共的。如果某软件使用了GPL软件,那么该软件也需要开源,如果不开源,就不能使用GPL软件,这和是否把该软件商用与否是没关系的。

如果无法满足GPL,就需要获得商业许可,通过与Oracle公司联系,制定解决方案,受Oracle公司约束。

同为开源软件,PostgreSQL源码使用自由友好、商业应用不受任何公司实体所控制,而MySQL则在一定程度上有所限制。

3、PostgreSQL 与 MySQL 的比较

PostgreSQL相对于MySQL的优势

  1. 在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨。
  2. 对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强。
  3. PG主表采用堆表存放,MySQL 的 InnoDB 采用索引组织表,能够支持比MySQL更大的数据量。
  4. PG 的主备复制属于物理复制,相对于 MySQL 基于 binlog 的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。
  5. PostgreSQL 支持 JSON 和其他 NoSQL 功能,如本机 XML 支持和使用 HSTORE 的键值对。它还支持索引 JSON 数据以加快访问速度,特别是10版本JSONB更是强大。
  6. PostgreSQL 完全免费,而且是BSD协议,如果你把 PostgreSQL 改一改,然后再拿去卖钱,也没有人管你,这一点很重要,这表明了 PostgreSQL 数据库不会被其它公司控制。相反,MySQL 现在主要是被 Oracle 公司控制。

MySQL相对于PG的优势

  1. InnoDB 的基于回滚段实现的 MVCC 机制,相对 PG 新老数据一起存放的基于 XID 的 MVCC 机制,是占优的。新老数据一起存放,需要定时触发 VACUUM,会带来多余的 IO 和数据库对象加锁开销,引起数据库整体的并发能力下降。而且 VACUUM 清理不及时,还可能会引发数据膨胀。
  2. InnoDB 采用索引组织表,这种存储方式非常适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束。
  3. MySQL 的优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作。
  4. MySQL 相对于 PG 在国内的流行度更高,PG 在国内显得就有些落寞了。
  5. MySQL 的存储引擎插件化机制,使得它的应用场景更加广泛,比如除了 InnoDB 适合事务处理场景外,MyISAM 适合静态数据的查询场景。

总结

从应用场景来说,PG 更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),但不仅仅限制于此,PostgreSQL 的json,jsonb,hstore 等数据格式,特别适用于一些大数据格式的分析;而 MySQL 更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景(比如google、facebook、alibaba),当然现在 MySQL 的在 InnoDB 引擎的大力发展,功能表现良好

扩展阅读:


PostgreSQL 简介
https://flepeng.github.io/041-PostgreSQL-00-简介-PostgreSQL-简介/
作者
Lepeng
发布于
2024年3月6日
许可协议