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