暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

2021年了,你真的应该考虑PostgreSQL了(1)

戏码台 2021-05-25
239

本文系“戏码台”原创,首发于FCC中文社区,感兴趣的小伙伴可以点击“阅读原文”前往FCC中文社区探索更多有意思的事情。如遇超链接无法使用,也请移步“阅读原文”呦。


最近几年,我已经帮助几个团队,把他们的主力关系型数据库从其他xxSQL
切换到PostgreSQL
(以下简称PG
)。可以这么说,用过PG
的小伙伴们,几乎都不愿意换回之前的关系型数据库了。那么PG
到底有什么魔力,能得到大家的一致好评,我打算出一个系列文章,好好介绍介一下这款备受好评的明星级产品。

本篇是这个系列的第一篇,着重讲讲PG
背景知识和国际、国内的应用地位。如果你的团队或者项目还没有使用过PG,希望这篇文章能消除你的顾虑,大胆在项目中尝试一下,PG
一定不会让你失望。

The World's Most Advanced Open Source Relational Database

这是PG
官网对自己的介绍,是的,你没有看错,“世界上最先进的开源关系型数据库”。一段严重违反我国广告法的话,上一个敢那么叫嚣的技术是PHP
,“世界上最好的语言”,然后这句话就成了码农界最广为人知的梗,存在于各种笑料中。不过PG
并没有因为这样明目张胆的自吹自擂而遭到什么抨击或调侃,事实上,无论在务实的码农界,抑或是讲究章法的学术界,对PG
都是赞许有加,PG
是完全当得起这句话的。

感兴趣的小伙伴现在也可以打开MySQL的官网,那里也有一句违反我国广告法的话。

在讨论PG
的强大功能之前,让我们先了解一下开源协议相关的背景知识。

Open≠Free
开源不等于免费,这是个老生常谈的问题了,无奈有些公司还没有意识到。这里转一张老图:

图中最令人闻风丧胆(非贬义)的协议就是GPL
,一种传染协议,也就是要求你动了源码或者仅仅只是做了静态连接(Static Link)就必须也是用GPL
协议开源出来。采用这个协议的典型代表就是Linux 内核
,当年小米公司被国外开发大神硬怼,也就是受这个协议的影响,感兴趣的小伙伴可以搜搜小米 GPL 指责
 。关于开源协议的条条框框和经典案例足够出一本书了。这里大家知道一点就好,GPL
是一种非商业友好协议,如果你要在商业项目上选择开源框架或者其他什么工具,一定要留意避开GPL
以免带来不必要的麻烦。

为什么说这么多协议的事情呢,其实就是想提醒一下大家。目前业内使用量最多的开源数据库MySQL
数据库,大家都是免费用的吧?而这个免费用的MySQL
社区版,恰恰就是GPL
协议的。这个在官网写的明明白白:

虽然说数据库这种东西,跟大家的软件项目是松耦合运行的。通常来说,我们编写的软件项目也不会被MySQL
GPL
协议传染,但是随着数据库的使用深入,当MySQL
的原始功能满足不了现有的场景,当你打算在MySQL
的源码上动刀子的时候,情况就变得很微妙了。

还有一个问题这两年也日益凸显,就是说起我国因技术被卡脖子的事情,不管是政府还是民间,大家现在普遍对国外的技术,尤其是被美国技术寡头掌控的关键技术持有谨慎的态度。所以着眼未来的话,如果还选择由Oracle
公司控制着的MySQL
,我觉得是有一定风险的。

当我们回过头来看看PG
,之前的顾虑都可以一扫而光。

首先PG
的开源协议是一种类BSD
的自有协议——PostgreSQL License
,事实上早期的PG
就是采用的BSD
协议,后续换成自有协议并没有多少改变,依然属于最为友好的协议类型。不论是自用还是商用,都是完全没有问题,修改代码并且用来盈利也是毫无商业风险的。

其次,PG
事实上不被任何一家公司所掌控,它背后的控制机构——PostgreSQL全球开发小组,是一个松散的组织。其核心成员来自全球各地的不同公司,如果你感兴趣,可以在PG
官网查询到这个组织的成员列表。可以这么说,没有任何一个公司享有对PG
的绝对控制权,PG
永远是属于社区的。

那么是什么造就了今天的PG
呢,咱们稍微回顾一下历史,感受一下开源的力量。PG
源于UC Berkeley
大学1977年的Ingress
计划,这个项目由Michael Stonebraker
领导。平平无奇的一句话,透露出三个信息:

  1. 1977
    ,相当有年头的事情了,估计此刻正在阅读本文的你,在那时还未呱呱坠地😃。

  2. UC Berkeley
    ,可以搜一下,世界最知名的7所大学之一,美国最好的公立大学。

  3. Michael Stonebraker
    ,2015年图灵奖获得者,绝对的大佬。

用咱们中国老话说,天时、地利、人和正好应对以上三条。可见PG
一出生就不同凡响。

时间推移到1994年,UC Berkeley
大学两个研究生Andrew Yu
Jolly Chen
PG
增加了SQL语言解释器,建立了Postgres95
,随后的1996年,正式重命名为PostgreSQL
,从此开启了PG
辉煌的二十余年。

仔细留意一下上面两个研究生的名字,是不是看着很亲切?我特意搜了下这俩哥们的照片,放出来给大家看看:

看了照片感觉更亲切,这俩兄弟是哪国人,不言自明了吧:)

往后的事,有意思也很多,但是限于篇幅,咱们不能一直扯。这里就讲一点,估计也是大家最为关心的一点,既然PG
历史这么悠久,如果它真的如宣传所说,这么强的话,为什么现在大家都在用MySQL
而不是PG
呢?

说实话,这个问题,同样困扰了我很久,我也向一些前辈请教过,至今也没有权威的答案。这里就谈谈我自己的思路,两个原因:

  1. PG
    支持Windows
    太晚了。有多晚呢?直到2005
    年,才原生支持Windows
    2005
    年啊,比PG
    支持SQL
    晚了十年,比互联网在中国兴起,繁荣,泡沫戳破也晚了好几年。想想最重要的2000
    年前后,多少懵懂的站长都在使用Windows
    PG
    错过了Windows
    就错过了最重要的一批在互联网上尝到甜头的人,从此一步错步步错(这个“错”不是“错误”的意思,而是“错过”的意思)。

  2. LAMP
    的崛起,继续将PG
    边缘化。现在很少有人提LAMP
    这个缩写了,最早它是Linux/Apache/MySQL/PHP
    的意思。我第一次听到这个缩写是08年,那年我还在读大二。可以想象一下这个缩写有多火,连一个大二的学生都听过,而且那年我还无数次的给同学们安利这套技术,因为它看起来真的很时髦。而直到我参加工作的几年后,才第一次听说PG
    ,等在项目中正式使用PG
    ,已是2015
    年之后的事了。(一不小心,又是十年)

时也,命也,怎不令人唏嘘。

扯远了,让我们说回现在。

最近两年数据库国产化的呼声也很高。应该说咱们也取得了一些成果,比如华为的openGauss,腾讯的Tbase,老牌的达梦,风头正盛的TiDB,阿里的OceanBase,还有百度的BaikalDB等等等等,可谓是百花齐放。

这里咱单说前面那哥俩,华为的openGuauss,腾讯的Tbase都是跟PG
颇有渊源的数据库。如果你查看它们的官网,或许不会看到Postgres
的字样,但是如果你去GitHub
看看它们的源码及说明,就会发现离不开PG
的影子,用大白话说,它俩都是在PG
上衍生出来的。当然这也不是什么秘密,不重复造轮子乃是业界共识,事实上无论是华为还是腾讯,都在PG
上做了不少工作,也为我国PG
社区的繁荣出过很多力。

我举这个例子主要是想说明一个问题,PG
的开源协议非常友好,你甚至可以把它拿来改头换面,说成是自己的数据库,也没有什么法律风险。

当然大部分小伙伴也就是把PG
拿来用在项目上,我想你们肯定关心,都有哪些公司已经在使用PG
了呢。这里我也准备了一张老图,几年前的了:

怎么样?还可以吧?可以看出PG
在各行各业都扮演了重要的角色,这还是几年前的图。有些大公司也没给列出来,像中国移动、平安科技、摩拜单车、探探科技、苏宁云商,也都在使用PG
哦。

有了这么多大公司对PG
的认可,PG
在整个数据库领域的热度也是与日俱增。这里有一张最近几年循环洗脑的图,估计大家也在各种场合见过:

可以看出PG
在一众数据库中披荆斩棘,绝对是众多关系型数据库中最靓的仔😉。

当然DB-Engines
的排名也不能太当回事,我觉得远不如直接做问卷调查更有说服力,只要样本够大就能说明一些问题。还好Stack Overflow
作为世界上最大的开发者问答社区,在今年二月做了一份问卷调查,共收集到65000份样本,整理了一份非常有价值的报告,地址是:https://insights.stackoverflow.com/survey/2020 如果你还没有看过,那我强烈建议你看一看。

现在我带大家简单看一下关于数据库方便的调查结果。首先是最受欢迎的数据库:

第一名是Redis
,人见人爱的数据库,并不意外。紧随其后的就是咱们的PG
了,并且与第一名的差距非常小,也就是说PG
是最受欢迎的关系型数据,怎么样,这样的结果是不是有点猛呢?

还有一个统计数据也很能说明问题,就是受调查者正在使用的数据库的情况:

可以看到PG
虽然落后MySQL
一个身位,暂居第二,但是这已经比DB-Engines
中的第四的排名提高了不少。可以这么理解,在活跃于社区的开发者中,采纳PG
的比重还是比较高的,至少比Oracle
高不少,即使跟Microsoft Sql Server
比较也丝毫不逊色。

总结

本篇是关于PostgreSQL
系列中的第一篇。本文中用了不少笔墨介绍了PG
的过去和现在,我想你应该对这门存在了几十年的技术有点兴趣了吧,下一篇,我会用更加技术流的方式介绍下PG
到底牛在哪里,有什么让人大呼过瘾的特色。

PG
从不让人失望,我们下一篇再见。


文章转载自戏码台,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论