應(yīng)用

技術(shù)

物聯(lián)網(wǎng)世界 >> 物聯(lián)網(wǎng)新聞 >> 物聯(lián)網(wǎng)熱點(diǎn)新聞
企業(yè)注冊(cè)個(gè)人注冊(cè)登錄

一個(gè) Babelfish ,看懂云數(shù)據(jù)庫(kù)的發(fā)展方向

2021-12-01 11:09 媒體合作

導(dǎo)讀:如果云數(shù)據(jù)庫(kù),或者叫云原生數(shù)據(jù)庫(kù),是確鑿無(wú)疑的下一個(gè)風(fēng)口。那么其當(dāng)下主要的技術(shù)和發(fā)展方向是什么?我們?cè)撊绾慰创圃鷶?shù)據(jù)庫(kù)的發(fā)展趨勢(shì)?亞馬遜云科技在 2020 年發(fā)布的 Babelfish 或許能夠帶給我們一些啟發(fā)。

作為基礎(chǔ)軟件皇冠上的明珠,數(shù)據(jù)庫(kù)技術(shù)一直以來(lái)都是開(kāi)發(fā)者關(guān)注的焦點(diǎn)。這關(guān)注度是如此之高,幾乎自然打通了學(xué)界和產(chǎn)業(yè)界的隔閡,以至于關(guān)于數(shù)據(jù)庫(kù)技術(shù)的每一篇重要論文面世,都可能導(dǎo)致一批價(jià)值數(shù)十億美金的公司出現(xiàn)。

而在最近幾年,縱觀整個(gè)數(shù)據(jù)庫(kù)產(chǎn)業(yè),云數(shù)據(jù)庫(kù)逐漸成為焦點(diǎn)中的焦點(diǎn)。據(jù) Gartner, Inc 稱,到 2022 年,所有數(shù)據(jù)庫(kù)中有 75% 將部署或遷移到云平臺(tái),只有 5% 曾考慮返回到本地。而 IDC 認(rèn)為,到 2025 年,全球超過(guò) 50% 的數(shù)據(jù)庫(kù)將部署在公有云上;在中國(guó)市場(chǎng),這個(gè)數(shù)據(jù)更為夸張,達(dá)到了 70% 以上。

d730a8a983964b23837a6f827353d051.png

那么問(wèn)題來(lái)了,如果云數(shù)據(jù)庫(kù),或者叫云原生數(shù)據(jù)庫(kù),是確鑿無(wú)疑的下一個(gè)風(fēng)口。那么其當(dāng)下主要的技術(shù)和發(fā)展方向是什么?我們?cè)撊绾慰创圃鷶?shù)據(jù)庫(kù)的發(fā)展趨勢(shì)?亞馬遜云科技在 2020 年發(fā)布的 Babelfish 或許能夠帶給我們一些啟發(fā)。

1.Babelfish,一個(gè)被人低估的重磅發(fā)布 

Babelfish 在 2020 年的 re:Invent 上發(fā)布,由亞馬遜云科技 CEO Andy Jassy 宣布。

簡(jiǎn)單來(lái)說(shuō),Babelfish 是云數(shù)據(jù)庫(kù) Amazon Aurora PostgreSQL 的一個(gè)插件,它讓 Aurora 能夠兼容 Microsoft SQL Server 編寫(xiě)的應(yīng)用程序。

Babelfish 剛剛發(fā)布,Youtube 上就有許多工程師制作視頻表達(dá)了不理解。因?yàn)樽源蛟茢?shù)據(jù)庫(kù)出現(xiàn),相關(guān)遷移服務(wù)就在產(chǎn)業(yè)內(nèi)隨處可見(jiàn),幾乎每一家公有云企業(yè),都能提供相關(guān)遷移服務(wù),只不過(guò)大部分是針對(duì) Oracle 的。有一家叫做 Enterprise DB 的美國(guó),專門(mén)提供從 Oracle 到 PostgreSQL 的遷移服務(wù)。相關(guān)代理層、SQL 語(yǔ)言轉(zhuǎn)換工具更是層出不窮。

事實(shí)上,亞馬遜云科技自己就有相關(guān)的遷移服務(wù),比如 Amazon Schema Convertion Tool 做架構(gòu)遷移,Amazon Database Migration Service 做存儲(chǔ)遷移。

那么,Babelfish 存在的意義是什么呢?多加一層代理增加后端處理成本嗎?

實(shí)際上,只遷移架構(gòu)和存儲(chǔ)是不完整的,構(gòu)建在數(shù)據(jù)庫(kù)之上的應(yīng)用還沒(méi)有完成遷移。以 Babelfish 服務(wù)的場(chǎng)景來(lái)說(shuō),基于 Microsoft SQL Server 構(gòu)建的應(yīng)用使用 T-SQL 與數(shù)據(jù)庫(kù)交互,這與 PostgreSQL 完全是兩碼事。如果你想將應(yīng)用也同步遷移,除非把這部分重寫(xiě)一遍。

這也讓數(shù)據(jù)庫(kù)遷移成為了業(yè)內(nèi)非常少見(jiàn)的動(dòng)作,不是大家不想(畢竟誰(shuí)也沒(méi)法保證最初的架構(gòu)選型永遠(yuǎn)正確),但成本實(shí)在是太高。

這種遷移成本,我們可以通過(guò)一套比較通用的遷移方案來(lái)感受下:

9e20c7c725f8407cb5bf837ec14e2fab.png

比起這種沉重的遷移,如果數(shù)據(jù)庫(kù)天生兼容,是不是方便太多了?這也是 Babelfish 存在最主要的意義。

而許多人,會(huì)低估 Babelfish ,可能也是因?yàn)橹豢匆?jiàn)了其商業(yè)層面的意義,而沒(méi)有注意到其技術(shù)層面的難度。

Oracle 和 PostgreSQL,許多特性相同,轉(zhuǎn)換尚且困難;切換到 T-SQL 和 PostgreSQL 就更加復(fù)雜了。數(shù)據(jù)庫(kù)的同步轉(zhuǎn)換要注意許多異常復(fù)雜的細(xì)節(jié)問(wèn)題,包括查詢語(yǔ)言的轉(zhuǎn)換,存儲(chǔ)過(guò)程的轉(zhuǎn)換,靜態(tài)游標(biāo)的轉(zhuǎn)換,觸發(fā)器的轉(zhuǎn)換,等等。

3dd6cc0a57704862be7bd55146c8f880.png

亞馬遜云科技 的 Sébastien Stormacq 曾在發(fā)布的博客中指出,在 T-SQL 中,MONEY 類型具有四位小數(shù)精度, PostgreSQL 則只有兩位小數(shù)精度,這種細(xì)微的差異可能會(huì)導(dǎo)致四舍五入錯(cuò)誤,并對(duì)下游流程(例如財(cái)務(wù)報(bào)告)產(chǎn)生重大影響。

他說(shuō):“在這種情況下,Babelfish 會(huì)確保保留了 SQL Server 數(shù)據(jù)類型的語(yǔ)義和 T-SQL 功能:我們創(chuàng)建了一個(gè) MONEY 數(shù)據(jù)類型,使其行為與 SQL Server 應(yīng)用程序預(yù)期的一樣。”

Babelfish 的方案是用 hooks(鉤子)方法在 PostgreSQL 內(nèi)置引擎中實(shí)現(xiàn),將自己暴露為不同的數(shù)據(jù)庫(kù)(否則就只能修改 PostgreSQL 許多核心區(qū)域的代碼),其架構(gòu)圖如下:

c13fdedec4a8424abebea1f4c80a34b2.png

精妙之處在于,通過(guò)數(shù)據(jù)庫(kù)內(nèi)核部分執(zhí)行器層面的擴(kuò)展開(kāi)發(fā),Babelfish 實(shí)現(xiàn)了 T-SQL 與 pgSQL 之間的互相調(diào)用。也就是說(shuō),新寫(xiě) PostgreSQL 代碼可以調(diào)用之前應(yīng)用寫(xiě)的 SQL Server 代碼。對(duì)于寫(xiě)過(guò)存儲(chǔ)過(guò)程的朋友們來(lái)說(shuō),這個(gè)功能已經(jīng)和 Babelfish 的名字一樣,帶上“科幻”色彩了。即便已經(jīng)使用了最硬核的實(shí)現(xiàn)方式, Babelfish 也沒(méi)有完全實(shí)現(xiàn)兼容,ADD SIGNATURE 等一些功能、語(yǔ)法還沒(méi)有實(shí)現(xiàn)。亞馬遜官方工程師說(shuō):“SQL Server 已經(jīng)發(fā)展了 30 多年,我們不希望立即支持所有功能。相反,我們專注于最常見(jiàn)的 T-SQL 命令并返回正確的響應(yīng)或錯(cuò)誤消息?!?/p>

這也恰恰說(shuō)明了類似遷移加速器的開(kāi)發(fā)難度,也證實(shí)了為什么開(kāi)源路線才是最適合 Babelfish 發(fā)展的,因?yàn)殚_(kāi)源可以讓足夠多的開(kāi)發(fā)者參與到產(chǎn)品迭代中來(lái)。

同理,一個(gè)如此高難度的開(kāi)發(fā)項(xiàng)目,也不太可能是無(wú)足輕重的。相反,它可能是亞馬遜云科技 2020 年最重要的發(fā)布之一。

2.數(shù)據(jù)庫(kù)碎片化時(shí)代,真的來(lái)了?

亞馬遜在云計(jì)算領(lǐng)域的發(fā)布,曾多次引導(dǎo)了整個(gè)產(chǎn)業(yè)的發(fā)展方向。比如,2012 年發(fā)布的 Amazon Redshift 引導(dǎo)了云原生數(shù)倉(cāng)的發(fā)展方向,2014 年發(fā)布的 Amazon Lambda 引導(dǎo)了 Serverless 的發(fā)展方向(Gartner 到 2019 年才確認(rèn) Serverless 為未來(lái)趨勢(shì)),Amazon Aurora 本身也是云原生數(shù)據(jù)庫(kù)的先驅(qū)產(chǎn)品。

如果說(shuō),Babelfish 也代表了一種方向,那么或許是,數(shù)據(jù)庫(kù)碎片化的時(shí)代,真的來(lái)了。

數(shù)據(jù)庫(kù)這個(gè)產(chǎn)品本身因?yàn)殚_(kāi)發(fā)難度太高,長(zhǎng)期以來(lái)都被少數(shù)幾家公司把控著,其中的佼佼者 Oracle 更是以極快的速度提升著商業(yè)數(shù)據(jù)庫(kù)的開(kāi)發(fā)門(mén)檻。

但數(shù)據(jù)庫(kù)“單極”化發(fā)展后導(dǎo)致的價(jià)格高、綁定風(fēng)險(xiǎn)高等問(wèn)題,也讓眾多企業(yè)逐漸難以忍受。當(dāng)下,各種類型的數(shù)據(jù)庫(kù)層出不窮,關(guān)系型、鍵值、時(shí)序、圖形……讓人難以抉擇。另外一個(gè)重要的現(xiàn)象是,大部分云原生數(shù)據(jù)庫(kù)都是基于 PostgreSQL 研發(fā)而來(lái),但后續(xù)的許多研發(fā)力量卻沒(méi)有投入到高性能、高可拓展性等傳統(tǒng)技術(shù)概念本身。

數(shù)據(jù)庫(kù)兼容,這一開(kāi)發(fā)難度高,與性能無(wú)關(guān)的特性,卻成為了亞馬遜云科技的研發(fā)重點(diǎn)。某種意義上也說(shuō)明,遍地開(kāi)花的各類型數(shù)據(jù)庫(kù)還將長(zhǎng)期存在于產(chǎn)業(yè)內(nèi)。人們習(xí)慣認(rèn)為,產(chǎn)業(yè)的長(zhǎng)期發(fā)展趨勢(shì)是從單一走向多元,最終經(jīng)過(guò)市場(chǎng)篩選,回歸單一。但這次,“單極”時(shí)代可能真的一去不復(fù)返了。

此外,在 2020 Gartner 的魔力象限報(bào)告里,云數(shù)據(jù)庫(kù)領(lǐng)域有數(shù)家占領(lǐng)導(dǎo)位置的企業(yè),亞馬遜、微軟、Google 位居前三位。

634ea931584e44669bda68c15230b4f8.png

而就在 2019 年,前三名還是微軟、Oracle、亞馬遜。老大老三打著打著,老二沒(méi)了……

e72d2ed3b0c2438ca86571be07fef8c5.png

如今,有 Babelfish 加持的 Amazon Aurora ,兼容了 Microsoft SQL Server ,恐怕受傷的還是 Oracle。云數(shù)據(jù)庫(kù)之間的墻壁在倒塌,而傳統(tǒng)商業(yè)型數(shù)據(jù)庫(kù)的競(jìng)爭(zhēng)難度在進(jìn)一步加大。

而乘上碎片化時(shí)代東風(fēng),發(fā)布了 Babelfish 的 Amazon ,也順理成章的成為了云數(shù)據(jù)庫(kù)市場(chǎng)新的領(lǐng)頭羊。

3.寫(xiě)在最后

數(shù)據(jù)庫(kù)行業(yè)遠(yuǎn)未走到終局,也不會(huì)有所謂的終局。但云原生數(shù)據(jù)庫(kù)可以獲得的優(yōu)勢(shì)并不僅限于數(shù)據(jù)庫(kù)本身,比如 Amazon Aurora Serverless 提供的彈性伸縮服務(wù),Amazon Aurora Global Database 提升了數(shù)據(jù)全球同步能力與業(yè)務(wù)連續(xù)性,Amazon DevOps Guru 將機(jī)器學(xué)習(xí)引入了應(yīng)用管理。這是“合力”,將數(shù)據(jù)庫(kù)在云上的體驗(yàn)拉伸到了全新的維度。

在云數(shù)據(jù)庫(kù)領(lǐng)域,這種“合力”將主導(dǎo)接下來(lái)的市場(chǎng)格局。

11 月 30 日,2021 re:Invent 又將到來(lái),Adam Selipsky 將首次以亞馬遜云科技新任 CEO 的身份亮相。相信云數(shù)據(jù)庫(kù)市場(chǎng)的趨勢(shì)動(dòng)向,也將隨之更加清晰。