PostgreSQL支持多種表關(guān)聯(lián)算法,有豐富的統(tǒng)計(jì)函數(shù)和語法,面對多維度的復(fù)雜查詢和分析場景性能表現(xiàn)優(yōu)異。31會議在UCloud優(yōu)刻得云平臺的PostgreSQL云數(shù)據(jù)庫的應(yīng)用實(shí)踐,可以為PostgreSQL在解決大數(shù)據(jù)量快速查詢上成功應(yīng)用提供參考。
用戶場景:大數(shù)據(jù)量快速查詢
31會議是中國領(lǐng)先的場景營銷科技服務(wù)商,隸屬于上海八彥圖信息科技有限公司。通過運(yùn)用互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、AI、大數(shù)據(jù)和云計(jì)算技術(shù),并結(jié)合會議、展覽、活動(dòng)等面對面營銷場景,其陸續(xù)推出了會議云、展覽云、營銷云三大產(chǎn)品體系以及10個(gè)行業(yè)場景方案。其中,31會議云和31會展云作為一站式數(shù)字會務(wù)SaaS云平臺,通過組件化、集成化、流程化實(shí)現(xiàn)會展全流程智慧化。

注:圖片來自31會議
可以想見,SaaS化的會議平臺,內(nèi)部模塊眾多且關(guān)聯(lián)緊密,對數(shù)據(jù)庫的需求呈現(xiàn)多樣化和精細(xì)化等特點(diǎn),31會議對OLTP和OLAP都有重要的訴求。截至目前累計(jì)服務(wù)30多萬家客戶、130多萬場會展的業(yè)務(wù)量,意味著數(shù)據(jù)庫的存儲量也很可觀。所以首要的是調(diào)研了解市面上可獲取的主流數(shù)據(jù)庫類型。
UCloud能提供的UDB子類型如下表:

31會議團(tuán)隊(duì)經(jīng)過審慎考慮,用戶同時(shí)選用三種數(shù)據(jù)庫,針對性的滿足不同目標(biāo)。

其中,PostgreSQL相比于MySQL在OLAP上的快速高效是其優(yōu)勢,也是用戶選型PostgreSQL的重要砝碼。在實(shí)際業(yè)務(wù)中,31會議利用PostgreSQL來處理單表500w條記錄規(guī)模的大數(shù)據(jù)量查詢,并且快速流暢的將結(jié)果流轉(zhuǎn)到下一業(yè)務(wù)環(huán)節(jié)。
31會議:自建數(shù)據(jù)庫集群還是用PostgreSQL UDB云數(shù)據(jù)庫?
現(xiàn)在需要面對的選擇,是利用云主機(jī)自己搭建PostgreSQL集群,還是直接使用UCloud PostgreSQL UDB云數(shù)據(jù)庫產(chǎn)品?
UCloud PostgreSQL UDB具備高安全性和高可用性,并有備份創(chuàng)建、自動(dòng)回檔等功能。數(shù)據(jù)層面來講,高可用主備和底層數(shù)據(jù)存儲,具備數(shù)據(jù)冗余,可以保證數(shù)據(jù)零丟失。
基于產(chǎn)品層面提供的這些要素,31會議選擇了使用UCloud PostgreSQL UDB產(chǎn)品。在使用PostgreSQL UDB的一年多時(shí)間里,其數(shù)據(jù)庫實(shí)例沒有發(fā)生過一次故障,UCloud后臺可靠性設(shè)計(jì)的機(jī)制抵御住了各種意外狀況,沒有影響用戶正常使用,幫助31會議免去了緊急排障的煩惱。
“PostgreSQL UDB用在大數(shù)據(jù)分析上,查詢效率更高。相比自建,其可靠性更高,方便運(yùn)維維護(hù)。”31會議運(yùn)維經(jīng)理湯雷在評價(jià)UCloud PostgreSQL UDB產(chǎn)品時(shí)如此說到。
UCloud PostgreSQL UD:如何保障高可靠?
為了充分保證可靠性,PostgreSQL UDB產(chǎn)品化方面做了多項(xiàng)工作,例如:
1. 自動(dòng)回檔
這個(gè)功能是指,當(dāng)用戶出現(xiàn)人為誤操作造成數(shù)據(jù)刪除或者丟失時(shí),只要之前7天的備份存在,就可以利用“秒級回檔”功能將數(shù)據(jù)恢復(fù)到過去7天內(nèi)的任意一秒,可以說是為用戶使用PostgreSQL產(chǎn)品提供了一顆“定心丸”。

除了回檔,用戶也可通過“創(chuàng)建從庫”功能來創(chuàng)建更多數(shù)據(jù)庫的副本,進(jìn)一步增加數(shù)據(jù)的安全性。
2. 高可用部署,自動(dòng)容災(zāi)
PostgreSQL UDB為確保服務(wù)的高可用性,采用主從復(fù)制架構(gòu),主數(shù)據(jù)庫提供服務(wù)的同時(shí),有另一套數(shù)據(jù)庫服務(wù)不斷同步數(shù)據(jù)并隨時(shí)待命, UDB后臺的自動(dòng)容災(zāi)模塊可以在PostgreSQL實(shí)例服務(wù)出現(xiàn)問題時(shí)自動(dòng)探測到,并自動(dòng)容災(zāi),保證數(shù)據(jù)庫服務(wù)的穩(wěn)定可靠。
實(shí)例切換時(shí),容災(zāi)模塊會把待命的備用PostgreSQL服務(wù)提升為主庫,并且在原來主服務(wù)啟動(dòng)之后回退到從庫。整個(gè)過程中用戶不需要任何人工干預(yù)和配置修改,真正做到自動(dòng)容災(zāi)。

圖:PostgreSQL UDB自動(dòng)容災(zāi)示意圖
3. 熱升級,不停服在線擴(kuò)容
PostgreSQL UDB可依據(jù)業(yè)務(wù)的需要,動(dòng)態(tài)按需擴(kuò)展數(shù)據(jù)庫資源。用戶只需在控制臺上進(jìn)行幾次點(diǎn)擊,就可以動(dòng)態(tài)調(diào)整實(shí)例的內(nèi)存和磁盤大小,滿足不同業(yè)務(wù)階段對于數(shù)據(jù)庫性能和存儲空間的彈性需求。
PostgreSQL UDB 在資源擴(kuò)容過程中,數(shù)據(jù)庫服務(wù)可以做到基本不停服,只有秒級的閃斷。這樣大大減少了數(shù)據(jù)庫擴(kuò)容對于業(yè)務(wù)的影響時(shí)間,做到真正的“熱升級”。


