一杉畜、PG簡介
PostgreSQL 是一個免費的對象-關(guān)系數(shù)據(jù)庫服務(wù)器(ORDBMS)眨层,在靈活的BSD許可證下發(fā)行允悦。
PostgreSQL 開發(fā)者把它念作 post-gress-Q-L汁咏。
PostgreSQL 的 Slogan 是"世界上最先進的開源關(guān)系型數(shù)據(jù)庫"贝咙。
PostgreSQL官網(wǎng)
https://www.postgresql.org/
PostgreSQL中文社區(qū)
http://www.postgres.cn/v2/home
全球數(shù)據(jù)庫排行
https://db-engines.com/en/
國產(chǎn)數(shù)據(jù)庫排行
https://www.modb.pro/dbRank
1样悟、PG的歷史
PostgreSQL最初設(shè)想于1986年,當(dāng)時被叫做Berkley Postgres Project颈畸。
該項目一直到1994年都處于演進和修改中乌奇,直到開發(fā)人員Andrew Yu和Jolly Chen在Postgres中添加了一個SQL(Structured Query Language没讲,結(jié)構(gòu)化查詢語言)翻譯程序,該版本叫做Postgres95礁苗,在開放源代碼社區(qū)發(fā)放爬凑。
開始以社區(qū)的形式運作。
1996年试伙,再次對Postgres95做了較大的改動嘁信,并將其作為PostgresSQL6.0版發(fā)布。該版本的Postgres提高了后端的速度疏叨,包括增強型SQL92標(biāo)準以及重要的后端特性(包括子選擇潘靖、默認值、約束和觸發(fā)器)蚤蔓。
2005年卦溢,發(fā)布8.0版本,開始支持windows系統(tǒng)環(huán)境
PostgreSQL 9.0 :支持64位windows系統(tǒng)秀又,異步流數(shù)據(jù)復(fù)制单寂、Hot Standby;
PostgreSQL 9.1 :支持數(shù)據(jù)同步復(fù)制吐辙,unlogged tabels宣决、serializable snapshot isolation、FDW 外部表昏苏。
此版本后尊沸,PostgreSQL 開始得到中國多個行業(yè)用戶的關(guān)注,開始有應(yīng)用于電信贤惯、保險洼专、制造業(yè)等邊緣系統(tǒng)。
目前生產(chǎn)環(huán)境主流的版本是PostgreSQL 12
2021-09-30救巷,PostgreSQL全球開發(fā)組宣布壶熏,功能最為強大的開源數(shù)據(jù)庫,PostgreSQL 14版本正式發(fā)布浦译!
2棒假、PG的社區(qū)
PG為什么沒有被商業(yè)公司控制?
他們?yōu)槭裁匆暙I核心代碼精盅?
最終用戶
- 希望社區(qū)長久帽哑,期望可以享受免費的、可持續(xù)發(fā)展的叹俏、開源的妻枕、不被任何商業(yè)公司、不被任何國家控制的企業(yè)級數(shù)據(jù)庫。去O屡谐,去DB2 述么,去Sybase;
- 不靠數(shù)據(jù)庫賺錢愕掏;
- PG用到的人越多度秘,越多人背書,使用越靠譜(事實也是如此)饵撑;
- 拋磚引玉剑梳,企業(yè)投入2個研發(fā)持續(xù)貢獻(一年可能一兩百萬),實際上整個PG社區(qū)有數(shù)千人在貢獻滑潘,對最終用戶來說垢乙,簡直賺到了。使用商業(yè)數(shù)據(jù)庫语卤,除了LICENSE等成本追逮,依舊需要投管理、研發(fā)粱侣、外包資源羊壹,一年數(shù)千萬甚至上億蓖宦,公司越大齐婴,越有動力去貢獻社區(qū)。從趨勢來看稠茂,給PG貢獻代碼的大客戶只會越來越多柠偶;
云廠商
- 開源數(shù)據(jù)庫與云廠商發(fā)生利益沖突,紛紛改協(xié)議睬关;
- 數(shù)據(jù)庫市場巨大诱担;
- 自研是最佳選擇,但是自研有一些問題:譬如需要培養(yǎng)生態(tài)电爹,需要市場背書蔫仙,需要大量研發(fā)資源,可能需要重復(fù)造輪子丐箩;
BASE PG的好處:
- 免去自己培養(yǎng)生態(tài)摇邦,
- 避免重復(fù)造輪子,
- PG的代碼基礎(chǔ)非常不錯(開源界的Oracle)
- 防止其他廠商控制PG失去市場主導(dǎo)能力(AWS,google,IBM,微軟都已成為PG社區(qū)的贊助商)
數(shù)據(jù)庫廠商
推一款新的商業(yè)數(shù)據(jù)庫屎勘,通常都需要背書施籍,小廠產(chǎn)品,誰為你背書概漱?
- 有技術(shù)的廠商丑慎,很難挑戰(zhàn)已有的數(shù)據(jù)庫市場格局
- 有渠道的廠商,需要抓住窗口期,快速占領(lǐng)市場竿裂,避免重復(fù)造輪子玉吁。
需要一款可以無法律風(fēng)險,二次分發(fā)的開源數(shù)據(jù)庫腻异,唯有PG
可以貢獻核心代碼诈茧,社區(qū)所有的用戶都可以為之背書。
數(shù)據(jù)庫服務(wù)|DaaS服務(wù)提供商
- 開源產(chǎn)品的服務(wù)提供商捂掰,能力如何體現(xiàn)敢会?
當(dāng)然是你的架構(gòu)能力,優(yōu)化能力这嚣,管理能力鸥昏,F(xiàn)IX BUG的能力
最好能貢獻核心代碼,有PG為你背書
開源許可獨特性
(Postgres遵守BSD許可證發(fā)行)卻使開發(fā)者們得以獲取源代碼并進一步開發(fā)系統(tǒng)姐帚。
眾所周知吏垮,MySQL被Oracle所控制,MySQL同時使用了GPL和一種商業(yè)許可(稱為雙重許可)罐旗。
GPL(General Public license)是公共許可膳汪,遵循了GPL的軟件是公共的。如果某軟件使用了GPL軟件九秀,那么該軟件也需要開源遗嗽,如果不開源,就不能使用GPL軟件鼓蜒,這和是否把該軟件商用與否是沒關(guān)系的痹换。
如果無法滿足GPL,就需要獲得商業(yè)許可都弹,通過與Oracle公司聯(lián)系娇豫,制定解決方案,受Oracle公司約束畅厢。
同為開源軟件冯痢,PostgreSQL源碼使用自由友好、商業(yè)應(yīng)用不受任何公司實體所控制框杜,而MySQL則在一定程度上有所限制浦楣。
3、PostgreSQL與MySQL的比較
PostgreSQL相對于MySQL的優(yōu)勢
在SQL的標(biāo)準實現(xiàn)上要比MySQL完善霸琴,而且功能實現(xiàn)比較嚴謹椒振。
對表連接支持較完整,優(yōu)化器的功能較完整梧乘,支持的索引類型很多澎迎,復(fù)雜查詢能力較強庐杨。
PG主表采用堆表存放,MySQL采用索引組織表夹供,能夠支持比MySQL更大的數(shù)據(jù)量灵份。
PG的主備復(fù)制屬于物理復(fù)制,相對于MySQL基于binlog的邏輯復(fù)制哮洽,數(shù)據(jù)的一致性更加可靠填渠,復(fù)制性能更高,對主機性能的影響也更小鸟辅。
PostgreSQL支持JSON和其他NoSQL功能氛什,如本機XML支持和使用HSTORE的鍵值對。它還支持索引JSON數(shù)據(jù)以加快訪問速度匪凉,特別是10版本JSONB更是強大枪眉。
PostgreSQL完全免費,而且是BSD協(xié)議再层,如果你把PostgreSQL改一改贸铜,然后再拿去賣錢,也沒有人管你聂受,這一點很重要蒿秦,這表明了PostgreSQL數(shù)據(jù)庫不會被其它公司控制。相反蛋济,MySQL現(xiàn)在主要是被Oracle公司控制棍鳖。
MySQL相對于PG的優(yōu)勢
innodb的基于回滾段實現(xiàn)的MVCC機制,相對PG新老數(shù)據(jù)一起存放的基于XID的MVCC機制瘫俊,是占優(yōu)的鹊杖。新老數(shù)據(jù)一起存放,需要定時觸 發(fā)VACUUM扛芽,會帶來多余的IO和數(shù)據(jù)庫對象加鎖開銷,引起數(shù)據(jù)庫整體的并發(fā)能力下降积瞒。而且VACUUM清理不及時川尖,還可能會引發(fā)數(shù)據(jù)膨脹。
MySQL采用索引組織表茫孔,這種存儲方式非常適合基于主鍵匹配的查詢叮喳、刪改操作,但是對表結(jié)構(gòu)設(shè)計存在約束缰贝。
MySQL的優(yōu)化器較簡單馍悟,系統(tǒng)表、運算符剩晴、數(shù)據(jù)類型的實現(xiàn)都很精簡锣咒,非常適合簡單的查詢操作侵状。
MySQL相對于PG在國內(nèi)的流行度更高,PG在國內(nèi)顯得就有些落寞了毅整。
MySQL的存儲引擎插件化機制趣兄,使得它的應(yīng)用場景更加廣泛,比如除了innodb適合事務(wù)處理場景外悼嫉,myisam適合靜態(tài)數(shù)據(jù)的查詢場景艇潭。
總結(jié)
從應(yīng)用場景來說,PG更加適合嚴格的企業(yè)應(yīng)用場景(比如金融戏蔑、電信蹋凝、ERP、CRM)总棵,但不僅僅限制于此仙粱,PostgreSQL的json,jsonb彻舰,hstore等數(shù)據(jù)格式伐割,特別適用于一些大數(shù)據(jù)格式的分析;而MySQL更加適合業(yè)務(wù)邏輯相對簡單刃唤、數(shù)據(jù)可靠性要求較低的互聯(lián)網(wǎng)場景(比如google隔心、facebook、alibaba)尚胞,當(dāng)然現(xiàn)在MySQL的在innodb引擎的大力發(fā)展硬霍,功能表現(xiàn)良好
擴展閱讀:
PostgreSQL 是中國第一的開源數(shù)據(jù)庫?
https://cloud.tencent.com/developer/article/1847734
解密:為什么國產(chǎn)數(shù)據(jù)庫使用PostgreSQL而不是MySQL
https://www.iidba.com/thread-290491-1-1.html
神仙打架:PG 和 MySQL 到底哪個更好用笼裳?
https://dbaplus.cn/news-11-3235-1.html