專訪阿里資深研發工程師竇賢明: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章