天天看點

專訪探探DBA張文升:PG在網際網路應用中同樣也跑的很歡暢

專訪探探DBA張文升:PG在網際網路應用中同樣也跑的很歡暢

張文升認為,pg無論在可靠性和性能方面都不輸其它任何關系型資料庫

張文升,探探dba,負責探探的資料庫架構、運維和調優的工作。擁有8年開發經驗,曾任去哪兒網dba。

9月24日,張文升将參加在北京舉辦的線下活動,分享postgresql在網際網路應用的一些經驗。值此,他分享了個人的一些經曆,以及對pg的一些看法。

<b>正文:</b>

初接觸pg,“what?什麼是pg?”一臉懵圈——張文升用時下比較流行的一個詞兒形容當時的心情,而且他們的team也是一身抵觸情緒。但動手操作和實驗一段時間後發現,pg是一個對開發者非常友好,并且穩定好用的關系型資料庫,由此他開始迷上pg。

postgresql非常棒,如何讓更多人知道并使用它?僅僅開發基于pg的應用已經不能滿足張文升的求知欲。他除了成為專業的基于pg技術售後技術支援外,還和一幫熱愛pg的人,身體力行的推廣着postgresql在國内的使用。“我願意和他們一樣,為了自由和開源,貢獻自己的一份綿薄之力。” 張文升說。

“網絡上有很多文章,可能是年代太久遠,也可能是其它原因,都認為pg隻适合做olap,不适合在網際網路的應用。資料分析是postgresql的強項,多表join、豐富的fdw、視窗函數等在資料分析都有很大的優勢,這一點毋庸置疑。事實上,做oltp應用,pg無論在可靠性和性能方面都不輸其它任何關系型資料庫,包括商業和開源的關系型資料庫。”為什麼要分享pg在網際網路應用,張文升在采訪中如此說到。

“我想和大家說的是:pg在網際網路應用中,同樣跑的很歡暢。” 他用過去的事實進一步說明,“例如我的前東家去哪兒網,instegram等網際網路公司都大規模的使用pg來支撐海量業務。”

對于上段時間uber從pg切換為mysql一事,張文升認為這隻是一個很普通的商業公司的行為,但他也指出這是一個不負責任的行為,“uber工程師把自己搞不定的問題歸咎到資料庫産品本身,會讓很多業内人士錯誤的認為postgresql很糟糕。”

“很有可能,過幾年uber工程師又會從mysql遷移到其它資料庫......” 他最後還打趣到。

<b>更為具體的内容,請檢視以下完整采訪:</b>

<b>雲栖社群:請介紹下你以及所從事的工作。</b>

<b></b>

<b>張文升:</b>大家好,我叫張文升,曾任去哪兒網dba,今年7月初加入探探,任探探的dba。剛畢業工作時,我是從開發做起,也就是“程式猿”,做了近八年的開發之後轉行做了dba,那幾年的開發經驗,為我日後從事dba打下了很好的基礎,專門從事資料庫的運維工作又有好幾年了,時間不長也不短。

目前我的工作主要負責探探的資料庫架構、運維和調優的工作。探探是一家不大的公司,目前隻是c輪,我們的dba團隊也比較小,一共隻有三個人,但是個小而精的團隊,另外兩名dba同僚都非常給力,我們互相學習,各司其職。

<b>雲栖社群:能聊聊你是如何和pg結緣的?</b>

<b>張文升:</b>在從事開發的那幾年,經常和各種資料庫打交道,包括ms sql 

server,oracle,自認為對資料庫比較了解了。

大約是在2008年的時候,我當時所在的公司有一個某島國的項目,這個項目在需求書上明确提出了使用postgresql作為後端資料庫......我很願意用當下比較流行的一個詞兒形容我當時的心情:“一臉懵圈”!what?什麼是postgresql?我們的team也是一身的抵觸情緒,為什麼不用我們都最熟悉的oracle?但為了順利的拿下項目,我還是硬着頭皮,從google搜尋、下載下傳、閱讀文檔,從零開始學習postgresql。

說到這裡,其實大多數開發都有過為了完成某個有特定需求的項目,短時間攻克一項陌生技術的經曆,項目完成後,那項技術就抛在腦後了。但我花了幾周的時間讀postgresql文檔,動手操作和實驗了一段時間之後,仿佛打開了一扇新的門,發現postgresql是一個對開發者非常友好,并且穩定好用的關系型資料庫;從商業層面講,它還是bsd協定的,可以免費使用的開源資料庫。

我開始嘗試在大大小小的項目中開始用它,它的表現也從沒有讓我失望。慢慢的,我就迷上了postgresql,僅僅開發基于postgresql的應用已經不能滿足我的求知欲。在幾年以前,一個非常好的機會,我加入了enterprisedb(postgresql的一個商業版本,也稱為ppas)中國區的一家公司,成為了專業的基于postgresql技術的售後技術支援。

從此,我開始了我的postgresql職業生涯,先後服務了多家使用postgresql的企業。

<b>雲栖社群:你是如何從一名使用者,逐漸成為pg社群核心成員和志願者的?</b>

<b>張文升:</b>我身邊有很多和我一樣很喜歡postgresql的朋友,我們經常一起讨論關于postgresql的問題,幾年以前我們經常會聊起一個相同的話題:postgresql非常棒,我們如何讓更多人知道和使用它?我慢慢的認識了目前我們postgresql社群的主席蕭少聰,以及上一任postgresql社群主席李元佳,還有開源資料庫圈赫赫有名的pg大學校長德歌。知道了其實有一幫人和我一樣,熱愛自由和開源,熱愛postgresql,并在身體力行的推廣着postgresql在國内的使用。我願意和他們一樣,為了自由和開源,貢獻自己的一份綿薄之力。

<b>雲栖社群:作為擁有多年項目經驗的開發者,你對哪個項目中應用pg的過程記憶深刻,為什麼?</b>

<b>張文升:</b>我不做開發已經有好幾年了,很多的項目已經沒有印象了。但是第一個使用postgresql的項目依然記憶深刻。并不是用到了什麼特殊的技巧,而是學習postgresql的過程很奇妙,例如postgresql 8.4之後peter eisentraut重新操刀的psql指令行:

哦...使用“\l“指令就可以列出執行個體中所有的database了;

哦...使用“\watch 

n”指令就可以像linux的watch指令一樣循環執行一條命了了,省去了寫腳本的麻煩;

總之,各種大的小的驚喜。學習了postgresql之後,也有了一條心得:對于自己不熟悉的資料庫,親自嘗試并了解它的設計意圖,深入之後會發現新的方法可能是更優解。

<b>雲栖社群:你是如何看待pg優劣的?</b>

<b>張文升:</b>這個問題讨論的太多了,我不太想說太多了,幾個關鍵詞簡單概括一下。postgresql是bsd的開源關系型資料庫,嚴格的事務支援,支援多種語言的存儲過程、資料類型和索引類型豐富、postgis、odl,即将釋出的9.6中還有parallel 

execution,非常令人期待。當然,postgresql也有不完善的地方,例如沒有原生partition等。

<b>雲栖社群:在pg運維上,是否有什麼經驗和大家分享下?</b>

<b>張文升:</b>資料庫是門很複雜的學問,每個資料庫有各自的特點,postgresql中國社群的很多同行在postgresql的高可用、高性能上都積累了不少經驗。如果大家感興趣,可以去社群官方網站翻閱近幾年大家在pg大會上貢獻的話題的文檔。

<b>雲栖社群:能否羅列下,在本次演講中,你将會分享哪些點?另外,你有什麼話想提前和與會者說嗎?</b>

<b>張文升:</b>這次話題我主要想分享postgresql在網際網路應用的一些經驗。

網絡上有很多文章,可能是年代太久遠,也可能是其它原因,都認為postgresql隻适合做olap,不适合在網際網路的應用。資料分析是postgresql的強項,多表join、豐富的fdw、視窗函數等在資料分析都有很大的優勢,這一點毋庸置疑。事實上,做oltp應用,postgresql無論在可靠性和性能方面都不輸其它任何關系型資料庫,包括商業和開源的關系型資料庫。例如我的前東家去哪兒網,instegrem等等網際網路公司都大規模的使用postgresql來支撐海量業務。是以我想把我的postgresql網際網路實戰經驗與大家分享,算是抛磚引玉。我想和大家說的是:postgresql在網際網路應用中,同樣跑的很歡暢。:-)

<b>雲栖社群:你對上段時間uber從pg切換為mysql一事怎麼看?</b>

<b>張文升:</b>關于uber從pg切換為mysql,前一段時間網絡上炒得沸沸揚揚,我也仔細看過uber工程師的文章,還有很多與uber工程師不一樣觀點的文章,例如阿裡雲德哥對uber從pg切換為mysql的分析,《sql performance explained》作者對此事件的分析,都非常中肯。

我對uber這家公司不了解,個人認為uber從pg切換到mysql,隻是一個很普通的商業公司的行為,例如換了leader、換了dba...因為uber在2013年也曾經從mysql遷移到了postgresql......,但是uber工程師把自己搞不定的問題歸咎到資料庫産品本身,會讓很多業内人士錯誤的認為postgresql很糟糕。很不負責任的妄議一項技術,這一行為我認為非常不可取,而且,通常來說從mysql到postgresql的遷移成本會比較低,而從postgresql到mysql的遷移成本會比較高。

postgresql有一個非常開放的技術社群,如果有問題不能解決,可以發送問題郵件到全球開發組織的郵件組,很快可以得到成千上萬熱心的hacker幫助。

很有可能,過幾年uber工程師又會從mysql遷移到其它資料庫......

專訪探探DBA張文升:PG在網際網路應用中同樣也跑的很歡暢