解密AISWare AntDB為何選擇基於PostgreSQL研發

  • 2019 年 11 月 21 日
  • 筆記

姜明俊 亞信科技資料庫技術創新實驗室總監,專註研究方向為分散式資料庫技術和系統架構,深入掌握PostgreSQL內核原理和使用。現為中國開源推進聯盟PostgreSQL分會專家組成員、PostgreSQL中國社區核心組常委。

1. 摘要

一直以來都有人問我們,為啥要選擇基於PostgreSQL進行產品研發,PostgreSQL相比MySQL在中國的用戶群體還比較小,研發出來的產品客戶會購買嗎?為啥不選擇MySQL進行研發呢?今天就把咱們團隊過去在技術選型上的所思所想通過這篇文章分享給大家。

2. 背景介紹

圖1:國際主流通用關係型資料庫家譜圖

從這張圖可以看出,IBM的System R系統是關係型資料庫的鼻祖,1973年Ingres吸收了System R的一系列文檔在Michael Stonebraker和Eugene Wong的帶領下誕生,隨後在1982年的時候Ingres就閉源了,開始走上商業化道路,發展出了幾個著名的資料庫產品比如Infomix、SyBase、SQL Server。PostgreSQL 真正誕生於二十世紀八十年代,它沿用了 Ingres很多的思想。到了1995年,兩位華人把 PostgreSQL的SQL引擎改掉之後完成金蟬脫殼,正式社區化,PostgreSQL從此誕生了。經過近30年的持續開發和驗證PostgreSQL 在資料庫領域已經贏得了良好的聲譽。目前被大家公認為世界上最先進開源資料庫。尤其是近些年,社區明顯加快了迭代的速度,每年發布一個大版本,最新的release版本已經是PostgreSQL11。正在研發的12版本也會在今年的秋季完成release和用戶見面。

從圖中也可以回饋出一點PostgreSQL和Oracle一樣從誕生以來一直保持著根正苗紅的發展。

3. 獨特優勢

1) 保持獨立性

PostgreSQL和Linux一樣是純社區類的開源產品,已經發展了近30年,背後不受任何一家商業公司或某一個國家獨立完整控制,主要貢獻者來自日本、美國、德國、法國、奧地利、瑞典、英國、俄羅斯等全球各地的企業和個人。其中主要企業有CitusData、VMware、EnterpriseDB、Pivotal、NTT Group、Fujitsu、Google、WAS、IBM、Zalando、Yandex等共24家公司佔比63%,個人貢獻者佔比37%。和MySQL的發展完全受到Oracle控制不一樣。自主可控需要保持技術的獨立性。

圖2:PostgreSQL社區的主要貢獻者

2) 開源許可

PostgreSQL使用的是類BSD的開源協議,用戶使用沒有任何法律風險,可以隨意分發、閉源和開源。PostgreSQL社區特別聲明了對用戶的使用「永久免費,永久可以自由的修改,自由的分發,永久無任何限制的使用。」特別適合上市公司或準備海外拓展的公司進行合規性檢查。和MySQL使用的GPL協議完全不一樣,GPL協議是一種傳染性協議,基於MySQL修改的程式碼必須強制開源並且不能作為閉源的商業軟體發布和銷售。因此BSD協議是對商業集成很友好的協議,很多公司在選用開源產品的時候都首選BSD協議,因為可以根據市場策略完全隨意的控制這些第三方的程式碼。可能很多同學會問為啥AIiSQL或TXSQL也是基於MySQL內核的改造版本可以在阿里雲和騰訊雲上進行申請使用呢,不是不能作為閉源的商業軟體進行發布和銷售的嗎?請注意在雲上售賣的號稱是服務而不是產品,從而利用了當前協議的不嚴謹造成的漏洞,所以近來也看到很多開源社區修改License,比如Redis、MongoDB等,防止雲公司只吸血不貢獻。

用一棵樹來形容三個主流協議之間的關係就是Apache協議像枝葉可以不斷的分叉,GPL協議是樹榦,不允許分叉保證血統,而BSD協議就像樹根可以自由隨意的生長。

開源協議的選擇主要考慮著作權,商標權和專利權。所有開源協議均要求程式碼附開源協議許可證和版權聲明,區別主要在於是否可以閉源銷售,是否可以保留專利,是否可以保留商標權。三種開源協議之間的主要區別如下:

表1:三種開源協議對比

GPL v3

Apache v2

BSD v3

作為閉源商業軟體發布與銷售

是否放棄專利

是否可以使用商標

AISWare AntDB開源協議使用的是Apache V2協議,既可以吸引軟體廠家參與,又可以避免專利問題。

3)發展勢頭

PostgreSQL在17,18年連續兩年獲得DB-Engines年度資料庫獎項,最近又獲得了2019年O』Reilly的終身成就獎,從下圖DB-Engines的統計數據看,PostgreSQL的受歡迎程度一直保持著持續的增長,社區也保持著每年一個大版本迭代的速度如期和大家見面。

圖3:PostgreSQL和MySQL相比的增長曲線

或許大家又會有另一個問題既然PostgreSQL那麼好,為啥互聯網公司都大量使用MySQL呢?我認為有如下三個方面的原因:

(1)受經典的LAMP(Linux+Apache+MySQL+PHP)輕量級建站系統架構的影響,我記得上大學期間,在圖書館或書店購買的技術書籍中的實踐案例基本都是以MySQL作為例子參考。工作後,面對資料庫的技術選型,用熟不用生,在滿足業務需要的情況下,就會優先採用MySQL。

(2)互聯網業務指數級爆髮式增長後,傳統的商業資料庫已經難以支撐,面臨著成本和技術的巨大挑戰,去IOE成為一種新的選擇,而互聯網的業務特彆強調業務連續性保障,否則就拿一分鐘的宕機可能引起的客戶體驗差造成金錢和用戶量的損失都是難以估量的,當時MySQL具備主從複製的特性可滿足故障切換提供業務連續性能力,而PostgreSQL主從複製的特性從2010年才添加進來,而到了2010年整個第二波互聯網浪潮都快接近尾部了。自然PostgreSQL錯過了和互聯網聯姻的大好機會。

(3)一件事情的兩面性,MySQL背後有商業公司的支援,技術上的宣傳和推廣要相比純社區的方式會有更多的資金支援去快速的通過論壇,技術分享等等方式快速建立起自己的技術生態,通過不斷的教化加上很多客戶的資訊渠道來源本身有限,大量的用戶會被這種模式吸引到其生態中。這個背後可能忽略了一個邏輯,通過商業手段快速聚集起來的客戶群體,其背後不一定有其對等實力的產品。一切都要回歸到商業的本質上,是否足夠的穩定、好用、高效,功能特性是否豐富,PostgreSQL就是在這樣的情況下,經過多年的驗證和近幾年快速的迭代、不斷的補齊過去的短板,直到真正的滿足企業級的特性要求,成為一款最先進的開源資料庫系統。PostgreSQL走到這一步完全靠的是其強大的產品能力獲得用戶的青睞。

4) 豐富的產品生態

基於PostgreSQL內核衍生出的產品變種有很多,比如流式資料庫PipelineDB(被Kafka收購);地理資訊資料庫PostGIS;時序資料庫TimeScale;MPP分析型資料庫Greenplum;圖資料庫AgensGraph;事務和分析融合的資料庫AISWare AntDB、CitusDB(被微軟收購); SQL On Hadoop資料庫有Vertica、BIGSQL(被AWS收購)等,從這些豐富的產品生態中可以看出兩點:

(1)PostgreSQL的license確實足夠的開放。

(2)PostgreSQL的內核API開放型做的非常好,不光是一個先進的資料庫系統更是一個強大的數據處理編程平台。所以我認為學好PostgreSQL內核會有非常大的優勢,通過PostgreSQL簡化技術棧統一掉數據處理平台,降低運維的複雜度和各種技術的集成和學習成本。特別是面向未來市場需要的輕量級細分領域的大數據處理系統。

就是因為PostgreSQL有其豐富的產品生態,我認為相比MySQL會更有優勢,因為未來的分析是流式的實時計算,分析的時效性是需要融合進資料庫,插入到各個業務流程中的,這就要求存放數據的資料庫本身必須具備OLTP和OLAP融合處理能力,避免數據在事務和分析兩個異構數據源之間搬遷,影響數據處理的時效性和準確性。而PostgreSQL在OLAP和OLTP甚至在HATP領域都已經有了成熟的產品,相比MySQL只有OLTP類的產品。能占點HTAP邊的也僅僅使用了MySQL的協議而已,並不是基於MySQL的程式碼進行開發。所以即使目前MySQL的使用很廣泛,但局限性也已經顯現。從信通院的《第八批大數據產品能力評測觀察》報告中顯示MPP分析型資料庫中有57%的產品都是基於PostgreSQL生態進行二次訂製開發。這個比例一定也會隨著大家對PostgreSQL內核的逐步掌握,越來越高。

表2:PostgreSQL和MySQL生態對比

資料庫種類

PostgreSQL生態

MySQL生態

圖資料庫

AgensGraph

流式資料庫

PipelineDB

時空資料庫

PostGIS

時序資料庫

PipelineDB

SQL On Hadoop

Vertica、BIGSQL

MPP分析型資料庫

Greenplum等

事務和分析融合原生分散式資料庫

AISWare AntDB、CitusDB等

在MySQL的生態中還沒有一款真正的融合了事務和實時分析於一體的的原生分散式資料庫產品,市場上所見到的基本還是通過Proxy實現的資料庫分散式部署架構的產品,簡稱為「偽」分散式資料庫。真正的原生分散式資料庫和基於代理的資料庫分散式部署架構的區別在於:(1)對SQL的完整性支援,是否無裁剪,比如跨分片的聚合、JOIN;存儲過程,外鍵、視圖等是否完整支援。(2)分散式事務ACID的四個特性是否完美支援,特別是4個事務隔離級別是否全部支援等,能否與傳統Oracle、DB2等的ACID特性保持一致。因為對於大部分公司來說,數據是核心資產,聯機交易絕對不能丟棄數據的安全性和一致性,而採用最終一致性的措施。

5) 超強的軟硬平台兼容性

PotgreSQL和晶片、作業系統等底層軟硬體生態具備很強的友好型,比如支援ARM,Power、x86、IA64、MIPS、Alpha、S/390x、Sparc 64等CPU架構,支援的作業系統有Linux、Windows、FreeBSD、OpenBSD、NetBSD、Mac OS X、AIX、HP/UX、IRIX、Solaris、Tru64 Unix and UnixWare。

4. 所思所做

資訊化和工業化逐步深度融合,為構建自主可控的現代新產業體系提供了極為有利的土壤,亞信科技創新引領,品質為本,從提出產業互聯網偉大構想開始就深刻意識到深度掌握基礎軟體是產業發展之基。

只有通過科學理性的規劃和判斷,閱讀大量的資料,看清事情的本質,才能幫助客戶選擇合適的技術做出最好的產品,我們經過深入的調研和綜合的分析,AISWare AntDB沒有選擇基於MySQL而是選擇站在巨人的肩膀PostgreSQL內核上進行研發,充分的吸收PostgreSQL全球開源技術最新的研發成果並在此基礎上進行技術創新,一方面可以把穩定的產品快速的帶給客戶;另一方面降低研發和學習使用成本。我們受益於開源社區,但我們也有充分的技術自信,通過開源把我們的技術和產品也回饋給社區幫助客戶更好的了解和使用AISWare AntDB產品和資料庫技術,一起推動PostgreSQL生態的繁榮。AISWare AntDB團隊是一支有實力的PostgreSQL內核特種兵團隊,它是一把劍,我們就是那個舞劍的人。

圖4:AntDB+產品特性

我們除了可以提供給客戶專業的AISWare AntDB資料庫產品和服務外,我們還有AntDB+,基於對內核深度的掌握能力,我們可以幫助我們的客戶提供插件形式基於業務場景完成程式碼級內核的優化,更好的賦能業務的發展。各種技術搭積木的模式在紛繁複雜的數據處理技術面前已經變的越來越難以支撐,帶來的直接問題就是開發成本和學習成本變高,產品的穩定性下降難以維護。我們認為輕量級、低延遲實時分析的能力應該Integrated into在資料庫中,通過AntDB+針對特定的細分領域比如物聯網、車聯網、智慧家居、邊緣計算等應用場景輸出精簡、高性能的一套數據計算存儲組件,用PostgreSQL的開放性多模態能力統一掉時序、空間、流式、Translytical等結構化數據開發運維的技術棧,降低客戶的學習和運維成本是未來可實踐的方向。