專訪阿里資深研發工程師竇賢明:PG與商業數據庫差距並不明顯

 

908e2899872c6186fac5a5045a75d606d28d81f4
竇賢明認爲, 支持類型、功能和語法豐富,性能優良
 
9月24日,竇賢明將參加在北京舉辦的線下活動,並作主題爲《Greenplum分片案例分析》的分享。值此,他分享了PG、工做上的一些經歷和經驗。

想和這些大咖面對面聊PG嗎?點擊這裏>>> 免費報名
 
正文:
 
和大部分人同樣,竇賢明也是被PG吸引過去的。有點特別的是,他以前徹底不是作數據庫的,「雲計算剛剛興起,分佈式方興未艾時,我一頭紮了進去。」而和PG的結緣,也很巧合,「後來分佈式數據庫有緊急的工做須要去支持一下,而後就接觸到了PostgreSQL。」
 
「接觸以後發現,代碼看起來挺漂亮的嘛,挺像我處女座的風格,而後玩着玩着就進來了。」 竇賢明對PG非常有感受。
 
然後,他加入阿里,完全撲入PG的懷抱,負責ApsaraDB For PostgreSQL / Greenplum的內核源碼開發與維護工做。
 
這份工做挑戰挺多。好比某個特性原本在正常環境沒什麼問題的,但在雲環境中就出問題了;好比針對雲環境的優化以外,客戶羣體的複雜性也帶來更高的自動化程度的要求;再者,就是功能上的需求和問題的修復。
 
解決各類挑戰的背後,也加深了對PG的認識,積累下許多經驗。好比對「爲何CPU滿了?」、「爲何IO又滿了?」、「爲何執行時間變長了?」等問題的認識,他說,這類問題的緣由有不少,除了一些特殊場景之外,大部分是能夠經過某些方法去解決的,好比索引、冗餘數據的清理等。
 
對於PG性能,竇賢明說,在同臺機器未作任何優化的狀況下測試TPCC,PG與商業數據庫的差距並不明顯。若是不是極端或特殊的應用場景,性能上差距是比較小的,「這仍是原生的,不算咱們內部作的性能優化。」他指出。
 
對於9月24日PG線下的活動,這個直率的專家說:「但願你們可以玩得開心、能給你們帶一點幫助就好。」
 
固然,他也講述了ApsaraDB For PostgreSQL / Greenplum的內核源碼開發與維護工做中的挑戰是如何應對的、這位資深工程師眼中的PG究竟什麼樣……等等。
 
更爲具體的內容,請查看如下完整採訪:
 
雲棲社區:請介紹下你以及所從事的工做
 
竇賢明:我是竇賢明,研發工程師一枚。如今在阿里雲數據庫內核服務組裏,參與PostgreSQL與Greenplum的內核源碼維護、開發,以及雲上自動化服務之類的工做。最近咱們剛剛完成了Greenplum在雲上的部署,你們能夠很方便地來把玩一下,而不用本身費心費力地去搭建。
 
雲棲社區:說說你和PG結緣的過程
 
竇賢明:我以前不是作數據庫的,主要接觸內核、驅動、文件系統之類的東西。在幾年前,到了一家公司作分佈式存儲。那個時候雲計算剛剛興起,分佈式方興未艾,有大行其道之勢,因而就一頭紮了進去。到了以後,分佈式數據庫這邊有些緊急的工做須要我去支持一下,而後就接觸到了PostgreSQL。接觸以後發現,代碼看起來挺漂亮的嘛,挺像我處女座的風格,而後玩着玩着就進來了。
 
後來就到了阿里這邊專門搞這個,還挺巧合的。
 
雲棲社區:你在作ApsaraDB For PostgreSQL / Greenplum的內核源碼開發與維護工做中,有沒有遇到什麼挑戰?都是如何解決的?
 
竇賢明:其實挑戰仍是挺多的,尤爲是咱們所支持的雲計算環境中。好比某個特性原本在正常環境沒什麼問題的,但在雲環境中就出問題了。這個對咱們來講是出現比較多的挑戰的地方,須要針對雲環境作不少內核上的定製和優化。
 
除了針對雲環境的優化以外,客戶羣體的複雜性也帶來更高的自動化程度的要求。由於不可能人去一個個解決客戶的問題,那麼如何把這些客戶的問題經過自動化來解,是挑戰咱們去作的事情。
 
再者,就是功能上的需求和問題的修復。雖然說「No silver bullet」,但對於咱們客戶來說都是但願功能儘可能去完善;另一個就是內核自己會有一些問題,不論是Bug也好仍是設計上、實現上的問題,這些都是要咱們團隊去處理的。
 
雲棲社區:你還爲雲數據庫的良好運行保駕護航,保障用戶在雲數據庫上的良好體驗,可否介紹下當前用戶遇到的最多見的問題,以及緣由是什麼?
 
竇賢明:在我接觸到的問題當中,除了比較特別的使用上的問題外,咱們遇到比較多的是性能問題。常常會被問到形如「爲何CPU滿了?」、「爲何IO又滿了?」、「爲何執行時間變長了?」之類的問題。這類問題的緣由有不少,除了一些特殊場景之外,大部分是能夠經過某些方法去解決的,好比索引、冗餘數據的清理等。
 
但由於面向的雲上客戶羣體比較複雜一點,對PG和數據庫的熟悉程度多少有別,在針對這種問題方面咱們團隊也是花了不少精力去作這個事情。好比數據庫的一鍵診斷,給用戶一個診斷報告,用戶看了以後對本身數據庫的狀況就一目瞭然了,哪條SQL該怎麼作之類的。目前咱們收到了比較多的正面評價。
 
雲棲社區:你眼中的PG是什麼樣的,請談談它的優缺點
 
竇賢明:不少人有一個相對比較一致的見解,認爲PG屬於比較學院派的。從實現上來說,PG的代碼實現上可圈可點、比較規範,符合數據庫原理,甚至能夠做爲教學範例來看。包括其實現上模塊的劃分、運行時的架構設計、ACID的實現和用法上權限的設計、SQL標準的支持、數據類型的支持等方面,都是比較中規中矩的,因此第一個關鍵字就是標準。
 
第二個是豐富,豐富主要體如今兩個方面:
 
1.支持的類型方面:PG支持很是豐富的數據類型,除了常見的數據類型外,還支持包括JSON、GIS(geography和geometry)、XML、枚舉、二進制等,甚至還有數組類型(對,你沒看錯,就是與編程語言中很相近的數組類型,你確定懂我在說什麼)。除此以外,還能夠本身定製類型,好比IP等;同時定製類型的相關操做,好比avg、sum等,並且是強類型。可能你們日常數據庫用的比較隨意,會比較喜歡弱類型或者自動類型轉換,但這個其實有代價的,在雲上咱們就遇到過不少相似的問題。對於數據庫數據類型的合理使用,應該是應用開發者和DBA的必修課,能夠帶來不少收益。
 
2.功能和語法的豐富:語法的豐富很好解釋,PG支持幾乎全部的SQL標準,並且在語法實現上也很規範,這意味着友好和健壯。再加上其所支持的豐富的函數和存儲過程語言(你能夠用SQL、C、Python、Java、Perl等來寫存儲過程),這意味着PG能夠適應各類各樣的功能需求。PostgreSQL自然地具備很是良好的擴展性,依託於PG的插件,你能夠很容易地添加或者去除相應的功能。並且,在PG生態裏,不少比較牛逼閃閃的功能都是插件所提供的,而且不是內核維護者來開發的。這意味着,你徹底能夠依據本身的需求作任意的定製。並且我瞭解的DBA中,不少都具備不錯的開發能力,以定製功能需求。
 
3.優良的性能。咱們內部作過一些測試對比,但這裏不是太方便公佈,只能大概地說,在同臺機器上未作任何優化的狀況下測試TPCC,PG與商業數據庫的差距並不明顯。若是不是極端或特殊的應用場景,性能上差距是比較小的,這仍是原生的,不算咱們內部作的性能優化。
 
不過也有幾個缼點:
 
第一個是知道的人太少了,生態比較脆弱。不少朋友抱怨找不到PG的DBA,想用,而又不敢用。生態脆弱也就致使中文資料比較匱乏,又致使你們學習成本的上升,從而沒有造成正循環。而這個是咱們一直在努力的,但願可以在雲上讓你們更方便、放心地使用PostgreSQL。
 
第二個就是PostgreSQL由於MVCC實現機制的緣由,在特殊場景的使用和處理上對使用者有必定能力的要求。雖然如今常規場景也是即開即用,但出了問題,部分用戶沒有可以Hold住的能力——固然這個也與前面所說的生態有關係。對於這個問題,咱們也在想辦法處理,儘可能地消除你們的後顧之憂,好比咱們的數據庫一鍵診斷和專家服務就是專門針對這類客戶的。
 
雲棲社區:本期線下活動,你將分享什麼議題?對與會者,有什麼寄語?
 
竇賢明:分享的主題是《Greenplum分片案例分析》:經過簡單的內核上的分析,給你們介紹一下GP的分片上的用法,和在雲上如何快速的把玩起來。
 
沒啥寄語,但願你們可以玩得開心、能給你們帶一點幫助就好。
 
相關閱讀:
 
阿里雲Greenplum官方介紹:
 
阿里雲PostgreSQL官方介紹: https://www.aliyun.com/product/rds/postgresql
 
阿里雲PPAS官方介紹: https://www.aliyun.com/product/rds/ppas
 
TB1tl2fNXXXXXaDXpXXXXXXXXXX-600-300.jpg
相關文章
相關標籤/搜索