云原生演進(jìn)趨勢(shì)下傳統(tǒng)數(shù)據(jù)庫(kù)升級(jí)實(shí)踐
 一、概述云原生數(shù)據(jù)庫(kù)
(一)云計(jì)算是數(shù)字化的基礎(chǔ)設(shè)施
眾所周知,目前云計(jì)算已經(jīng)成為數(shù)字化的基礎(chǔ)設(shè)施,整個(gè)社會(huì)也在數(shù)字化。數(shù)字化滲透進(jìn)我們的日常生活中,除了衣食住行,還包括教育、醫(yī)療、游戲等。
以醫(yī)療領(lǐng)域?yàn)槔?,早些年去醫(yī)院,不管是驗(yàn)血還是拍胸片,一定是要去取紙質(zhì)報(bào)告,然后打一張塑料的胸片圖。但是最近一兩年,除了三甲醫(yī)院,其他醫(yī)院也基本是通過(guò)網(wǎng)上向患者提供無(wú)論是報(bào)告還是胸片之類的材料,醫(yī)療領(lǐng)域數(shù)字化現(xiàn)象十分明顯。
而這些數(shù)據(jù)全部都數(shù)字化以后,面臨一個(gè)非常大的問(wèn)題,它在哪些平臺(tái)承載,怎么樣承載?阿里云是其中非常重要的一個(gè)環(huán)節(jié),數(shù)據(jù)庫(kù)在數(shù)字化進(jìn)程中承載了數(shù)據(jù)的生產(chǎn)、集成、實(shí)時(shí)處理和分析的整套流程。在整個(gè)數(shù)據(jù)庫(kù)周邊,可能還有硬件、安全、彈性計(jì)算等能力,這些大大小小的東西最終組成阿里云這個(gè)平臺(tái)。
(二)什么是云原生數(shù)據(jù)庫(kù)技術(shù)
云計(jì)算在重塑數(shù)據(jù)庫(kù)技術(shù)與商業(yè)。
在數(shù)字化背景下,我們有許多思考。
數(shù)據(jù)庫(kù)跟以前那有什么不一樣呢?什么是所謂的云原生數(shù)據(jù)庫(kù)呢?作為使用數(shù)據(jù)庫(kù)的開(kāi)發(fā)者,對(duì)數(shù)據(jù)庫(kù)的需求有什么變化?如今使用數(shù)據(jù)庫(kù)我們一般會(huì)提什么樣的訴求?
如今,上層的業(yè)務(wù)變化非常快,包括以前阿里巴巴淘寶內(nèi)部其實(shí)也有同樣的問(wèn)題。業(yè)務(wù)的快速變化讓開(kāi)發(fā)者面臨一個(gè)非常大的挑戰(zhàn),就是要非??焖俚剡m應(yīng)變化。在云普及之前,這個(gè)過(guò)程其實(shí)還是比較慢的,從構(gòu)建服務(wù)器,然后網(wǎng)絡(luò)打好,安裝操作系統(tǒng)和數(shù)據(jù)庫(kù)等,整個(gè)流程非常長(zhǎng)。
對(duì)數(shù)據(jù)庫(kù)的訴求,總結(jié)起來(lái)可能有以下幾個(gè)。
第一個(gè)就是我們希望更專注在業(yè)務(wù)開(kāi)發(fā)上,不要把太多時(shí)間放在底層的硬件、軟件、機(jī)房、網(wǎng)絡(luò)等設(shè)施的配置上。
第二個(gè)是開(kāi)箱即用的,我們希望數(shù)據(jù)庫(kù)創(chuàng)建好了可以直接使用,不需要再去做配置、優(yōu)化等非常繁瑣耗時(shí)且專業(yè)性強(qiáng)的事情。
第三個(gè)是安全可信,把數(shù)據(jù)放在第三方平臺(tái)上,安全可信是一個(gè)非常基本的要求。
第四個(gè)是開(kāi)放兼容,我們不希望被哪個(gè)云廠商鎖定,希望能非常自由地遷移進(jìn)來(lái)和遷移出去。
第五個(gè)是海量擴(kuò)展,隨著業(yè)務(wù)爆發(fā)式的增長(zhǎng),系統(tǒng)壓力很快就會(huì)變成原來(lái)的數(shù)倍甚至數(shù)十倍。在這種情況下,如果沒(méi)有一個(gè)很好的橫向、縱向擴(kuò)展的數(shù)據(jù)庫(kù)系統(tǒng),那么很難支撐業(yè)務(wù)正常運(yùn)行,處理起來(lái)就會(huì)非常棘手。
第六個(gè)是全球化。中國(guó)很多游戲廠商在海外的拓展和推廣做得非常不錯(cuò),尤其是在東南亞一帶,另外也有一些游戲在歐美日本獲得了非常大的成功,所以現(xiàn)在有些開(kāi)發(fā)者也面臨著全球化的訴求,作為數(shù)據(jù)庫(kù)的基礎(chǔ)設(shè)施,應(yīng)該思考如何提供全球化的能力。
第七個(gè)是持續(xù)可用,我們?cè)瓉?lái)自己做一套數(shù)據(jù)庫(kù)系統(tǒng),持續(xù)可用也是核心考慮之一。
除此之外還有可靠性,要求不能發(fā)生數(shù)據(jù)丟失。
最后是低成本,當(dāng)業(yè)務(wù)發(fā)展到比較成熟的階段,我們會(huì)關(guān)注低成本。
在這些客戶訴求下,我們思考下一代數(shù)據(jù)庫(kù)或者說(shuō)新的數(shù)據(jù)庫(kù)要具備哪些特性,也就是云原生數(shù)據(jù)庫(kù)它所具備的產(chǎn)品能力,如下所示。
第一個(gè)是全面托管,用戶不再需要去關(guān)注安裝、備份、部署、監(jiān)控、高可用等,可以一鍵創(chuàng)建實(shí)例,創(chuàng)建出來(lái)的實(shí)例具備以上東西。
第二個(gè)是按量付費(fèi),按量付費(fèi)可以讓業(yè)務(wù)起步的成本變得非常低,否則機(jī)房、硬件、網(wǎng)絡(luò)等一整套設(shè)施配置下來(lái),成本非常高昂。
第三個(gè)是按需彈性,它分為兩個(gè)方面,一方面是要具備往上彈的能力,當(dāng)業(yè)務(wù)在快速發(fā)展的過(guò)程中,數(shù)據(jù)庫(kù)也要能夠快速往上彈。另一方面是往下彈,當(dāng)業(yè)務(wù)高峰過(guò)去了,需要很快地把資源使用量降下來(lái),達(dá)到降低成本的目的。
第四個(gè)是生態(tài)兼容,無(wú)論用戶目前使用的是MySQL,還是Oracle,或者是其他數(shù)據(jù)庫(kù),我們能遷移進(jìn)來(lái),也能遷移出去。
上方是我們認(rèn)為云原生數(shù)據(jù)庫(kù)它所具備的產(chǎn)品能力。
在這些產(chǎn)品能力底下,還是有很多的技術(shù)在支持。
六大核心技術(shù)分別是智能化、多模、軟硬件一體化、安全可信、HTAP:大數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)一體化、云原生+分布式。這六大核心技術(shù)支撐了上文的產(chǎn)品能力,解決開(kāi)發(fā)者訴求。
(三)云原生關(guān)系型數(shù)據(jù)庫(kù) PolarDB
PolarDB是阿里巴巴自研的新一代云原生數(shù)據(jù)庫(kù),在存儲(chǔ)計(jì)算分離架構(gòu)下,利用了軟硬件結(jié)合的優(yōu)勢(shì),為用戶提供具備極致彈性、高性能、海量 存儲(chǔ)、安全可靠的數(shù)據(jù)庫(kù)服務(wù)。100%兼容MySQL 5.6/5.7/8.0,PostgreSQL 11,高度兼容Oracle。
PolarDB-X為PolarDB分布式版本,融合分布式SQL引擎與分布式自研存儲(chǔ)X-DB,專注解決海量數(shù)據(jù)存儲(chǔ)、超高并發(fā)吞吐、復(fù)雜計(jì)算與分析等問(wèn)題。
(四)云原生關(guān)系型數(shù)據(jù)庫(kù)PolarDB產(chǎn)品架構(gòu)
PolarDB產(chǎn)品架構(gòu)圖
PolarDB產(chǎn)品有以下特性:
存儲(chǔ)計(jì)算分離
1)分鐘級(jí)彈性升降級(jí)
2)分鐘級(jí)新增/刪除只讀節(jié)點(diǎn)
智能代理轉(zhuǎn)發(fā)
1)實(shí)現(xiàn)數(shù)據(jù)庫(kù)透明擴(kuò)容
2)多種一致性級(jí)別
3)自定義Endpoint
分布式存儲(chǔ)
1)支持100TB
2)快速備份與恢復(fù)
3)更高單實(shí)例IO能力
libpfs+rdma+optane
1)高性能透明實(shí)現(xiàn)三副本 RPO=0
2)高性能寫入:實(shí)現(xiàn)高并發(fā)的寫入
基于redo復(fù)制
1)只讀實(shí)例毫秒級(jí)延遲
2)解決binlog/redo雙日志一致性與性能問(wèn)題
并行執(zhí)行
1)部分場(chǎng)景下的查詢與分析
2)可以自由控制的并行度,保障性能與穩(wěn)定性
這里主要講一個(gè)和開(kāi)發(fā)者使用過(guò)程中關(guān)系比較大的特性:智能代理轉(zhuǎn)發(fā)。
在數(shù)據(jù)庫(kù)中有一個(gè)非常難的點(diǎn),它跟應(yīng)用服務(wù)器不一樣,當(dāng)應(yīng)用服務(wù)器系統(tǒng)壓力特別大的時(shí)候,還是比較容易做擴(kuò)展的,可以加一組應(yīng)用服務(wù)器,把相關(guān)的流量擴(kuò)展到新的應(yīng)用服務(wù)器上就可以了。
但數(shù)據(jù)庫(kù)通常做不到,因?yàn)閿?shù)據(jù)在查詢和使用上都是相互關(guān)聯(lián)的,數(shù)據(jù)不能簡(jiǎn)單地做拆分。PolarDB在上層有一個(gè)智能代理層叫Proxy,它為開(kāi)發(fā)者解決了這個(gè)問(wèn)題。當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)壓力特別大的時(shí)候,通過(guò)智能代理可以自動(dòng)把一些查詢的Query分發(fā)到別的只讀節(jié)點(diǎn)上。比如原來(lái)是一主一備,可以變成一主三備,就可以把流量自動(dòng)分發(fā)到三個(gè)節(jié)點(diǎn)。
大家可能想,這個(gè)不就跟原來(lái)數(shù)據(jù)庫(kù)加幾個(gè)備庫(kù)是一樣的道理嗎?
PolarDB通過(guò)智能代理解決了一個(gè)非常關(guān)鍵的問(wèn)題,那就是加了這些只讀節(jié)點(diǎn)以后,應(yīng)用服務(wù)器上的連接配置是不需要做任何改動(dòng),可以隨時(shí)加上去,智能代理收到Query以后會(huì)自動(dòng)轉(zhuǎn)發(fā)過(guò)去。
以現(xiàn)實(shí)業(yè)務(wù)場(chǎng)景舉例,比如某天前端的業(yè)務(wù)系統(tǒng)告訴我們,明天早上10點(diǎn)要做一個(gè)促銷活動(dòng),請(qǐng)做好數(shù)據(jù)庫(kù)的擴(kuò)容。
以前如果加了只讀節(jié)點(diǎn),可能遇到的問(wèn)題是前端應(yīng)用服務(wù)器根本就訪問(wèn)不到這個(gè)只讀節(jié)點(diǎn),或者可以訪問(wèn)到只讀節(jié)點(diǎn),但要對(duì)應(yīng)用服務(wù)器的配置做一些改變,可能導(dǎo)致應(yīng)用要把應(yīng)用服務(wù)器重啟?,F(xiàn)在通過(guò)PolarDB的智能代理可以有效解決這個(gè)問(wèn)題,方便快捷地做容量擴(kuò)展。
二、傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)向云原生環(huán)境遷移
(一)傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)替換的挑戰(zhàn)
如今,如果要從別的商業(yè)數(shù)據(jù)庫(kù)遷移到 PolarDB上,比如從Oracle數(shù)據(jù)庫(kù),一般來(lái)說(shuō)有幾個(gè)比較大的挑戰(zhàn)。
第一個(gè)挑戰(zhàn)是應(yīng)用耦合度高。通常情況下,數(shù)據(jù)庫(kù)跟應(yīng)用的耦合度非常高,如果要對(duì)數(shù)據(jù)庫(kù)做一個(gè)動(dòng)作的話,應(yīng)用前端的應(yīng)用要配合著一起做,可能會(huì)影響前端的可用性,因?yàn)橥ǔG闆r下數(shù)據(jù)庫(kù)底下承載的業(yè)務(wù)都是比較關(guān)鍵的,動(dòng)數(shù)據(jù)庫(kù)往往意味著動(dòng)前端應(yīng)用。
第二個(gè)挑戰(zhàn)是穩(wěn)定性要求高。數(shù)據(jù)庫(kù)一出問(wèn)題,前端的業(yè)務(wù)就會(huì)出問(wèn)題,所以數(shù)據(jù)庫(kù)的變更和動(dòng)作經(jīng)常會(huì)在晚上執(zhí)行。
第三個(gè)挑戰(zhàn)是數(shù)據(jù)量大。由于現(xiàn)在業(yè)務(wù)都比較大,因此核心數(shù)據(jù)庫(kù)的數(shù)據(jù)量通常會(huì)比較大。
第四個(gè)挑戰(zhàn)是語(yǔ)法兼容要求高。雖然大家使用的都是 SQL,但是不同數(shù)據(jù)庫(kù)的SQL還是不一樣的。如果從Oracle數(shù)據(jù)庫(kù)遷移到PolarDB,SQL要做太多的改造的話,就意味著前端業(yè)務(wù)系統(tǒng)的改造要非常大,情況也很復(fù)雜。
(二)使用云原生數(shù)據(jù)庫(kù)PolarDB替換傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)
是一個(gè)科學(xué)的標(biāo)準(zhǔn)化、產(chǎn)品化的過(guò)程。
遷移流程圖
在阿里云上,我們會(huì)提供一套標(biāo)準(zhǔn)化流程和產(chǎn)品幫助用戶從原始數(shù)據(jù)庫(kù)移到PolarDB數(shù)據(jù)庫(kù)。
首先,我們會(huì)給用戶一個(gè)工具或者腳本,到用戶的系統(tǒng)里面運(yùn)行一下,它可以采集到用戶數(shù)據(jù)庫(kù)的一些特征,這個(gè)特征包括有哪些 SQL、函數(shù)、存儲(chǔ)過(guò)程跟目標(biāo)數(shù)據(jù)庫(kù)寫法不匹配,原始的數(shù)據(jù)庫(kù)的特點(diǎn),比如它是一個(gè)系統(tǒng)壓力特別大的數(shù)據(jù)庫(kù),還是一個(gè)熱點(diǎn)數(shù)據(jù)特別明顯的數(shù)據(jù)庫(kù)。探測(cè)到這些點(diǎn)后,會(huì)告訴用戶在后期的改造中要注意什么問(wèn)題。
上方表格就是在實(shí)際的業(yè)務(wù)過(guò)程中通過(guò)腳本跑出來(lái)的。
通過(guò)這個(gè)表格,我們可以看到原始數(shù)據(jù)庫(kù)如果要遷移到PolarDB的時(shí)候,它整體的兼容性還是比較高的。我們一共探測(cè)了6029個(gè)對(duì)象,這個(gè)對(duì)象可能包括存儲(chǔ)過(guò)程、數(shù)據(jù)表、索引序列,還有一些同義詞等相關(guān)的東西,其中不兼容的對(duì)象只有兩個(gè),其實(shí)是比較少的。報(bào)表里會(huì)指出具體是哪兩個(gè)表,里面也有一些比較具體的修改建議,然后就可以遷移過(guò)來(lái)了。
下圖是一個(gè)比較具體的過(guò)程,此處不詳細(xì)展開(kāi)闡述。
目前,阿里云已經(jīng)把這一套標(biāo)準(zhǔn)化、產(chǎn)品化的流程和中國(guó)信通院一起做成了數(shù)據(jù)庫(kù)遷移的標(biāo)準(zhǔn)指南,開(kāi)發(fā)者可以到網(wǎng)上查閱,遵照指南做數(shù)據(jù)庫(kù)遷移。
三、管理PolarDB O引擎(兼容Oracle語(yǔ)法)
(一)PolarDB提供面向Oracle的全棧兼容性
PolarDB提供的Oracle兼容性是包括多個(gè)方面的,除了語(yǔ)法層的兼容,還有物理存儲(chǔ)層、邏輯層和接口層。
(二)管理PolarDB O引擎(兼容Oracle語(yǔ)法):常用工具
如果用戶從Oracle遷移過(guò)來(lái),在使用或者管理PolarDB的時(shí)候,和原來(lái)有哪些不一樣?
在管理工具方面,用戶可以使用阿里云云端的數(shù)據(jù)管理平臺(tái)DMS,在控制臺(tái)上找到叫登錄數(shù)據(jù)庫(kù)的入口,就可以登錄到DMS上,如下所示。
第二個(gè)是用開(kāi)源的數(shù)據(jù)管理平臺(tái)叫pgAdmin,在這個(gè)平臺(tái)上可以做基本的數(shù)據(jù)管理操作,包括基礎(chǔ)信息的查看,數(shù)據(jù)查詢,看一些執(zhí)行計(jì)劃、表、對(duì)象等,如下所示。
四、PolarDB O引擎(兼容Oracle語(yǔ)法)的開(kāi)發(fā)實(shí)踐:數(shù)據(jù)庫(kù)基本規(guī)范
管理PolarDB O引擎(兼容Oracle語(yǔ)法):開(kāi)發(fā)規(guī)范(1)
另外,阿里云有一些常用的開(kāi)發(fā)規(guī)范,開(kāi)發(fā)規(guī)范是阿里云內(nèi)部探索出來(lái)的,也稱為規(guī)約,在阿里巴巴內(nèi)部是比較嚴(yán)格遵守執(zhí)行的,未來(lái)會(huì)發(fā)布在開(kāi)發(fā)者社區(qū)和阿里云的文檔體系中。開(kāi)發(fā)規(guī)范分成幾個(gè)方面,有些地方和開(kāi)發(fā)者在具體使用PolarDB的時(shí)候關(guān)系會(huì)比較大,下面簡(jiǎn)單闡述一下。
規(guī)范中有一些是我們內(nèi)部要求強(qiáng)制執(zhí)行,有一些則是推薦執(zhí)行,用戶可以根據(jù)自己的實(shí)際情況進(jìn)行取舍。
上方為建表規(guī)約。比如有一個(gè)對(duì)字段名的規(guī)范,要求必須要用小寫字母和數(shù)字,不能用關(guān)鍵字,為什么會(huì)有這樣的規(guī)范?因?yàn)樽侄蚊男薷氖且粋€(gè)代價(jià)比較大的事情,通常不能“預(yù)發(fā)”。
我們發(fā)現(xiàn),在實(shí)際的生產(chǎn)過(guò)程中改一個(gè)字段名是非常麻煩的。因?yàn)榍懊娴臉I(yè)務(wù)已經(jīng)在運(yùn)行,如果改一個(gè)字段名,就意味著業(yè)務(wù)系統(tǒng)不能正常運(yùn)行。所以以前大多數(shù)的做法就是加新的字段,因此我們對(duì)字段名提了一些規(guī)范,比如只能用小寫字母,不能用關(guān)鍵字等。
第二個(gè)是表名和字段名,我們要求加create_time和 update_time。這會(huì)帶來(lái)幾個(gè)好處,第一個(gè)就是如果數(shù)據(jù)發(fā)生錯(cuò)誤的時(shí)候,你可以很快知道字段的修改情況和時(shí)間。第二個(gè)是在上下游系統(tǒng)里面,如果要拉取一些變化數(shù)據(jù)的時(shí)候,它也可以非??斓卣业侥男?shù)據(jù)發(fā)生了變化,然后去做對(duì)應(yīng)的處理。
另外,表必須有主鍵。這里有幾個(gè)原因,第一個(gè)是查詢性能會(huì)非常好,第二個(gè)是在下游的系統(tǒng)拉取一些變化的數(shù)據(jù)的時(shí)候,它通過(guò)主鍵可以比較快速地拿到。
此外還有一系列的索引規(guī)約,如上圖所示。
規(guī)約中提到,索引的建立要有順序,這個(gè)順序的考慮可能會(huì)去關(guān)注where條件里面有哪些字段,要注意order by條件里面字段的順序,這個(gè)順序可能要影響索引建立的字段順序,只有它們兩個(gè)比較匹配的時(shí)候,整個(gè)的性能才會(huì)比較好。
另外,如果可以用覆蓋索引查詢的時(shí)候,盡量用覆蓋查索引查詢,會(huì)大大增加效率。
規(guī)約中還有一個(gè)推薦項(xiàng):利用延遲關(guān)聯(lián)或者子查詢優(yōu)化超多分頁(yè)場(chǎng)景。這也是我們?cè)跀?shù)據(jù)庫(kù)的索引優(yōu)化里面的經(jīng)驗(yàn)。當(dāng)做分頁(yè)查詢的時(shí)候,比如說(shuō)當(dāng)你翻到了第1000頁(yè),或者是第500頁(yè)這樣靠后的頁(yè)面時(shí),這時(shí)候建議的做法是,比如說(shuō)翻頁(yè)要查出10頁(yè)的內(nèi)容,最好先把這10頁(yè)內(nèi)容的主鍵ID先查出來(lái),查出來(lái)之后再回表一次,把所有的數(shù)據(jù)查出來(lái),這是一個(gè)比較常見(jiàn)的推薦做法。
另外索引規(guī)約里面還提到一條,就是要注意不同字段類型,盡可能少或者不要發(fā)生隱式轉(zhuǎn)換,因?yàn)殡[式轉(zhuǎn)換會(huì)導(dǎo)致整個(gè)索引失效。
管理PolarDB O引擎(兼容Oracle語(yǔ)法):開(kāi)發(fā)規(guī)范(2)
SQL和運(yùn)維也有許多規(guī)約,這里主要講一下運(yùn)維方面其中幾個(gè)點(diǎn)。
首先是數(shù)據(jù)訂正,開(kāi)發(fā)者如果要去做一些修改數(shù)據(jù)的話,一定要先把這些數(shù)據(jù)查詢出來(lái),先看一遍再去做刪除,要不然的話很容易出現(xiàn)誤刪除。
另外推薦使用數(shù)據(jù)管理產(chǎn)品DMS。如果在DMS上做數(shù)據(jù)訂正的話,它有一個(gè)好處是可以勾選備份,當(dāng)做數(shù)據(jù)訂正的時(shí)候,它會(huì)自動(dòng)把所有要訂正的數(shù)據(jù)全部做一個(gè)備份。如果發(fā)現(xiàn)數(shù)據(jù)訂正出了問(wèn)題的時(shí)候,可以找到DMS自動(dòng)備份下來(lái)的數(shù)據(jù),重新再把這個(gè)數(shù)據(jù)恢復(fù)起來(lái)。
其他的這些這里不做過(guò)多闡述,未來(lái)會(huì)發(fā)布在開(kāi)發(fā)者社區(qū)和阿里云的文檔體系中。
五、PolarDB O引擎(兼容Oracle語(yǔ)法)的開(kāi)發(fā)實(shí)踐:常見(jiàn)的SQL優(yōu)化
(一)管理 PolarDB O引擎(兼容Oracle語(yǔ)法):SQL優(yōu)化案例一 并行查詢
當(dāng)查一些帶復(fù)雜計(jì)算的Query,用并行查詢可以大大加速查詢效率。
上方是一個(gè)簡(jiǎn)單的例子,在GROUP BY的時(shí)候有一個(gè)非常簡(jiǎn)單的計(jì)算,當(dāng)這個(gè)Query要掃描的數(shù)據(jù)非常多的時(shí)候,開(kāi)一個(gè)并行查詢可以讓耗時(shí)從原來(lái)的100多秒到10秒時(shí)間,速度翻了10倍,這是用戶在使用PolarDB的一個(gè)小技巧。
(二)管理PolarDB O引擎(兼容Oracle語(yǔ)法):SQL優(yōu)化案例二 選擇合適的JOIN方式
我們支持hash join,merge join和nest-loop join,用戶可以根據(jù)不同的場(chǎng)景選擇合適的Join方式。
可以看到,在上面這個(gè)案例中,選擇nest-loop join是最快的。
六、案例與認(rèn)可
(一)完整的數(shù)據(jù)庫(kù)生態(tài)
雖然PolarDB是一個(gè)單獨(dú)的產(chǎn)品,但是它有非常完善的產(chǎn)品生態(tài),包括數(shù)據(jù)管理DMS,數(shù)據(jù)自治服務(wù)DAS,數(shù)據(jù)傳輸DTS,數(shù)據(jù)庫(kù)備份DBS,數(shù)據(jù)與應(yīng)用遷移ADAM等,可以滿足用戶各種場(chǎng)景,帶來(lái)全方位的服務(wù)。
(二)案例:PolarDB助力PrestoMall平滑從Oracle遷移上云
PrestoMall 是一家成立于2014年的東南亞電商企業(yè),為了應(yīng)對(duì)業(yè)務(wù)的快速增長(zhǎng),阿里云數(shù)據(jù)庫(kù)PolarDB助力PrestoMall平滑從Oracle遷移上云。
遷移上云主要面臨以下業(yè)務(wù)挑戰(zhàn):
業(yè)務(wù)快速發(fā)展,IT 費(fèi)用也隨之水漲船高,Oracle成本高昂;
業(yè)務(wù)的快速增長(zhǎng),應(yīng)對(duì)雙十一大促乏力,應(yīng)用具備水平擴(kuò)展的能力,但是數(shù)據(jù)庫(kù)彈性不足;
去O復(fù)雜度太高,缺乏經(jīng)驗(yàn),希望有專業(yè)評(píng)估指導(dǎo);
最優(yōu)遷移成本,控制風(fēng)險(xiǎn)成為難題。
根據(jù)客戶業(yè)務(wù)需求,我們制定了遷移至PolarDB O(兼容Oracle語(yǔ)法)的方案,原因是:
PolarDB O引擎(兼容Oracle語(yǔ)法) 作為云數(shù)據(jù)庫(kù),沒(méi)有昂貴的license費(fèi)用;
PolarDB O引擎(兼容Oracle語(yǔ)法)云原生彈性,解決客戶數(shù)據(jù)庫(kù)彈性不足的問(wèn)題;
ADAM為客戶提供專業(yè)的數(shù)據(jù)庫(kù)/應(yīng)用兼容性評(píng)估報(bào)告,制定完善的遷移計(jì)劃;結(jié)合PolarDB O引擎(兼容Oracle語(yǔ)法)對(duì)Oracle的高兼容性,大幅提升改造效率;
DTS實(shí)時(shí)遷移/回流的功能,配合專家服務(wù),大幅縮短割接時(shí)間并降低風(fēng)險(xiǎn)。
遷移到PolarDB O引擎(兼容Oracle語(yǔ)法)后,通過(guò)最終實(shí)現(xiàn)了以下客戶價(jià)值:
PolarDB O引擎(兼容Oracle語(yǔ)法)在成功支撐客戶業(yè)務(wù)的同時(shí),公司整體IT成本降低40%;
雙十二大促PolarDB O引擎(兼容Oracle語(yǔ)法)彈性升級(jí),應(yīng)對(duì)自如;
ADAM + PolarDB O引擎(兼容Oracle語(yǔ)法)幫助客戶代碼改造成本降低93%;
在計(jì)劃內(nèi)順利平穩(wěn)完成割接,業(yè)務(wù)穩(wěn)定運(yùn)行。
(三)被廣泛認(rèn)可的云原生關(guān)系型數(shù)據(jù)庫(kù)PolarDB
目前,PolarDB在業(yè)界受到非常廣泛的認(rèn)可,頂級(jí)學(xué)會(huì)的論文已經(jīng)超過(guò)了10篇了,獲得了今年中國(guó)電子學(xué)會(huì)的科技進(jìn)步一等獎(jiǎng),還有一些其他權(quán)威榮譽(yù)。








































 
 
 













 
 
 
 