揭秘下一代云数据库引擎MyBasefor PostgreSQL
一、PostgreSQL引擎核心能力
PostgreSQL功能圖
在MyBase中,PG引擎除了包含RDS所有的能力,還包含GIS、分詞搜索、精準(zhǔn)營(yíng)銷、復(fù)雜SQL、Oracle兼容擴(kuò)展和圖像識(shí)別等核心能力。
1.GIS
GIS是一個(gè)地理信息系統(tǒng),隨著移動(dòng)的終端還有帶GPS傳感器的普及,實(shí)際很多的業(yè)務(wù)里都有經(jīng)緯度的信息。
以共享單車為例,車內(nèi)裝有GPS系統(tǒng),方便用戶查看自己的行駛軌跡,同時(shí)后臺(tái)可以做行為軌跡的分析,共享單車使用的熱點(diǎn)等都與GIS相關(guān)。
針對(duì)GIS這塊功能,我們有一個(gè)強(qiáng)大的時(shí)空內(nèi)核研發(fā)團(tuán)隊(duì)在做支持,目前GIS相比較于開源的版本有50倍的性能提升,這里面主要體現(xiàn)在移動(dòng)對(duì)象處理。
移動(dòng)對(duì)象處理通常使用在公安緝查等方面,例如公安鎖定了某位嫌疑人之后,可以通過移動(dòng)對(duì)象信息查詢到他的軌跡,根據(jù)嫌疑人的軌跡迅速鎖定相似軌跡或有密切接觸的對(duì)象,有效提高公安辦案效率,是一個(gè)具有特殊社會(huì)價(jià)值的功能。
2.分詞搜索
分詞搜索是PG引擎里的一大特色。
分詞搜索目前廣泛存在于各個(gè)業(yè)務(wù)場(chǎng)景,如文檔系統(tǒng),社交聊天系統(tǒng)等。單獨(dú)建一個(gè)搜索引擎需要很大的成本,包含硬件成本,軟件成本,維護(hù)成本等。
對(duì)于企業(yè)來說,首先本身數(shù)據(jù)庫(kù)的數(shù)據(jù)量并不算很大,其次單獨(dú)建立一個(gè)搜索引擎,意味著要將數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到搜索引擎,將會(huì)引出許多問題,例如同步的延遲,如果是異構(gòu)數(shù)據(jù)庫(kù)的話可能導(dǎo)致數(shù)據(jù)不一致,因此單獨(dú)建立一個(gè)搜索引擎對(duì)企業(yè)來說,性價(jià)比十分低。
PG引擎內(nèi)置的分詞搜索解決了企業(yè)的這個(gè)難題,且相較于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),性能提升了1000倍。
3.精準(zhǔn)營(yíng)銷
精準(zhǔn)營(yíng)銷常見于銷售業(yè)務(wù)相關(guān)場(chǎng)景。
精準(zhǔn)營(yíng)銷通常涉及根據(jù)用戶行為構(gòu)造用戶畫像,然后查詢用戶的興趣點(diǎn),根據(jù)用戶的興趣點(diǎn)進(jìn)行搜索,這里我們支持了向量相似的索引。
我們根據(jù)用戶本身的特征或商品的特征進(jìn)行數(shù)字化,就會(huì)儲(chǔ)存浮點(diǎn)向量。然后我們基于浮點(diǎn)向量做相似檢索,這種方式相較于全盤掃描,性能上有提升了1500倍,在千萬級(jí)別的向量里可以做到毫秒級(jí)的相似召回。
4.復(fù)雜SQL
隨著業(yè)務(wù)的發(fā)展,如今的業(yè)務(wù)已經(jīng)不像以前那樣 簡(jiǎn)單的增刪改查,完全沒有連表的查詢。如今的業(yè)務(wù),特別是企業(yè)上云,許多企業(yè)的ERP系統(tǒng)、CRM系統(tǒng)里的關(guān)系都特別復(fù)雜,可能存在幾十上百?gòu)埍淼年P(guān)聯(lián)。
PG引擎針對(duì)這一塊做出許多優(yōu)化,相較于其他引擎,PG的性能提升20倍以上。
5.Oracle兼容擴(kuò)展
目前PG在數(shù)據(jù)庫(kù)領(lǐng)域的地位與Oracle旗鼓相當(dāng),是一個(gè)功能全面的產(chǎn)品,因此PG引擎內(nèi)置Oracle兼容擴(kuò)展包,可以兼容最常見的一些數(shù)據(jù)類型、函數(shù)和package。
6.圖像識(shí)別
PG引擎與螞蟻聯(lián)合推出的圖像識(shí)別插件:pase,這個(gè)插件相較于暴力計(jì)算的圖像識(shí)別,性能提升了2萬倍,已經(jīng)被廣泛應(yīng)用于新零售商店、銀行網(wǎng)點(diǎn)。
二、使用云數(shù)據(jù)庫(kù)服務(wù)給DBA帶來的問題
(一)問題一:架構(gòu)、監(jiān)控、優(yōu)化等
- 解決這些問題主要存在以下幾個(gè)困難:
- 針對(duì)以上問題,使用PostgreSQL有以下幾個(gè)優(yōu)點(diǎn):
(二)問題二:Bug
Bug分為社區(qū)內(nèi)核Bug與插件Bug。
- 常見的社區(qū)Bug解決方法:
- 常見的插件Bug解決方法:
- 針對(duì)Bug問題,使用阿里云PostgreSQL有以下好處:
(三)問題三:無法滿足業(yè)務(wù)需求
當(dāng)前開源數(shù)據(jù)庫(kù)在某些情況下可能無法滿足業(yè)務(wù)需求,用戶需要有內(nèi)核研發(fā)能力才能自己添加功能,例如以下常見的社區(qū)版本無法滿足的安全問題:
- 針對(duì)以上問題,使用PostgreSQL有以下幾個(gè)優(yōu)點(diǎn):
三、PostgreSQL在MyBase的核心能力
阿里云提前洞察行業(yè)需求,用技術(shù)幫助客戶突破商業(yè)邊界。PostgreSQL核心能力主要體現(xiàn)在三個(gè)部分:更快的業(yè)務(wù)體驗(yàn)價(jià)值、更穩(wěn)和更安全的核心業(yè)務(wù)必要能力,以下進(jìn)行詳細(xì)拆解分析。
(一)提升更快的業(yè)務(wù)體驗(yàn)價(jià)值:更快
阿里云在研發(fā)產(chǎn)品的同時(shí)一直與客戶保持溝通與交流,了解行業(yè)場(chǎng)景存在的問題,阿里云基于這些場(chǎng)景問題做出如下優(yōu)化:
阿里云PostgreSQL使用了螞蟻集團(tuán)的人臉識(shí)別技術(shù),在數(shù)據(jù)庫(kù)里使用了新的索引結(jié)構(gòu)。我們知道,如果要做到快速查詢,需要在查詢前做好預(yù)計(jì)算,或者讓數(shù)據(jù)庫(kù)存儲(chǔ)適合查詢。因此我們使用了兩種圖像搜索的算法,重新組織圖像的特征值(即浮點(diǎn)),使得性能提升了20000倍。
我們通過與短視頻或社交類行業(yè)的公司接觸,根據(jù)用戶的喜好在內(nèi)核做了優(yōu)化,在向量相似搜索方面取得了上千倍的性能提升。
實(shí)時(shí)營(yíng)銷中會(huì)有跟用戶畫像相關(guān)的數(shù)據(jù)組織,在移動(dòng)對(duì)象的處理如協(xié)助公安辦案等方面也有一個(gè)性能的大幅提升。
(二)核心業(yè)務(wù)必要能力:更穩(wěn)
- 更穩(wěn)體現(xiàn)在Paas多租戶場(chǎng)景:
大并發(fā)大量元數(shù)據(jù)、大量連接優(yōu)化;
資源隔離優(yōu)化。
在數(shù)據(jù)庫(kù)中特別是在PG里面,如果連1萬個(gè)連接再去跑TPCB的話,存在許多更新、插入的操作,導(dǎo)致性能直線下降。AliPG針對(duì)這個(gè)問題做了大量連接、進(jìn)程內(nèi)耗的優(yōu)化。
所謂的租戶業(yè)務(wù)場(chǎng)景如SaaS類的業(yè)務(wù)包含了許多企業(yè),在這種數(shù)據(jù)庫(kù)里會(huì)有上千萬個(gè)Scheme,有許多原數(shù)據(jù)。這里可能出現(xiàn)資源之間相互爭(zhēng)搶,某一企業(yè)使用時(shí)將資源全部用光,從而影響其他的企業(yè)。我們通過將資源隔離優(yōu)化,從而使得企業(yè)在使用數(shù)據(jù)庫(kù)時(shí)不會(huì)與其他企業(yè)產(chǎn)生資源爭(zhēng)奪的情況。
(三)核心業(yè)務(wù)必要能力:更安全
- 安全加固場(chǎng)景:
1)敏感信息加密, 函數(shù)調(diào)用陷阱規(guī)避;
2)SGX全加密;
3)最大保護(hù)、最高可靠、最高可用模式;
4)Slot Failover。
PG的社區(qū)版本存在函數(shù)調(diào)用陷阱的問題,例如某用戶創(chuàng)建了一個(gè)視圖,視圖后面調(diào)用的Fuction設(shè)置為Security Invoke,表示判斷這個(gè)函數(shù)的權(quán)限時(shí)是以調(diào)用這個(gè)函數(shù)的用戶的權(quán)限判斷的。當(dāng)該用戶為普通用戶時(shí),他執(zhí)行Drop Database操作時(shí),系統(tǒng)會(huì)報(bào)沒有權(quán)限。但是如果用戶將drop database封裝到一個(gè)函數(shù),并且把權(quán)限設(shè)置為上述模式,同時(shí)用戶將它偽裝為一個(gè)常見視圖,當(dāng)某位權(quán)限較大的用戶,如DBA管理員上線看見這個(gè)視圖并被迷惑且同意該操作后,則會(huì)完成Drop Database操作,造成重大損失。
阿里云PG解決了這樣的問題,這樣的函數(shù)陷阱在阿里云云端數(shù)據(jù)庫(kù)是不存在的。
我們還支持保護(hù)模式,最高可靠、最高可用模式,這些在PG社區(qū)版本里面是不支持的。這意味著我們可以在兩節(jié)點(diǎn)里實(shí)現(xiàn)全同步、半同步以及異步的效果,滿足了不同行業(yè)對(duì)數(shù)據(jù)庫(kù)可靠性的要求。
關(guān)于Slot Failover。用戶在用一個(gè)開源數(shù)據(jù)庫(kù)時(shí),通常會(huì)用數(shù)據(jù)庫(kù)的流復(fù)制做HA,在主節(jié)點(diǎn)里創(chuàng)建Slot做邏輯復(fù)制,例如業(yè)務(wù)里的某些表希望同步到另外的B業(yè)務(wù)中,只需要同步若干表而不是所有的數(shù)據(jù)。包括做增量的數(shù)據(jù)遷移、數(shù)據(jù)同步或異構(gòu)同步,比如我要把你數(shù)據(jù)庫(kù)里的數(shù)據(jù)同步到我們的消息隊(duì)列,然后再通過消息隊(duì)列同步到其他業(yè)務(wù),這是目前業(yè)界非常通用的做法。
如果是以上情況,在PG社區(qū)版本一旦主備發(fā)生切換,Slot位點(diǎn)會(huì)丟失,因?yàn)樵趶膸?kù)里沒有那個(gè)位點(diǎn),從而導(dǎo)致業(yè)務(wù)上的故障。
阿里PG在主庫(kù)里面創(chuàng)建Slot會(huì)同步到從庫(kù),從而保證發(fā)生HA時(shí)Slot的信息不會(huì)丟失,從而解決了把數(shù)據(jù)庫(kù)里的數(shù)據(jù)增量同步到其他業(yè)務(wù)的問題。
(四)MyBase
有些用戶擔(dān)心使用RDS后不過自由,那么PG引擎的MyBase是個(gè)不錯(cuò)的選擇,它開放了OS權(quán)限,允許用戶原來的系統(tǒng)整合到新系統(tǒng),堪稱RDS PLUS。
- MyBase具備以下特點(diǎn):
1)既要: 全自動(dòng)(DB全生命周期管理,自動(dòng)化運(yùn)維、診斷),解放雙手
-救DBA于水火
2)又要: 自主可控,隨心所欲
-開放OS權(quán)限開放數(shù)據(jù)庫(kù)ROOT用戶
-開放調(diào)度策略,自定義超賣,實(shí)現(xiàn)超高性價(jià)比
3)還要:低成本、可定制、有內(nèi)核兜(背)底(鍋)
-內(nèi)核Bug快速Fix,提新功能需求有研發(fā)支持。
原文鏈接:https://developer.aliyun.com/article/782615?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的揭秘下一代云数据库引擎MyBasefor PostgreSQL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MQTT与函数计算做热力图实践
- 下一篇: 开课啦! dubbo-go 微服务升级实