RDS算不算數(shù)據(jù)庫(kù)這個(gè)爭(zhēng)論在幾年前有過(guò),DB-ENGINE把RDS收錄為數(shù)據(jù)庫(kù)產(chǎn)品后,這種爭(zhēng)論少了很多。實(shí)際上RDS是關(guān)系型數(shù)據(jù)庫(kù)服務(wù)的簡(jiǎn)稱,本身RDS不是數(shù)據(jù)庫(kù),而RDS使用一些開源的數(shù)據(jù)庫(kù)產(chǎn)品作為服務(wù)的基礎(chǔ)數(shù)據(jù)庫(kù)組件,向云用戶提供數(shù)據(jù)庫(kù)服務(wù)。RDS提供給客戶的并不是一個(gè)完整的數(shù)據(jù)庫(kù),而是用戶使用數(shù)據(jù)庫(kù)的某些接口。
前陣子應(yīng)一個(gè)客戶的要求,d-smart對(duì)接私有云部署的阿里云中的RDS FOR MySQL。我們的開發(fā)人員驚奇地發(fā)現(xiàn)他無(wú)法連接到數(shù)據(jù)庫(kù)所屬的OS上來(lái)采集數(shù)據(jù)。當(dāng)我給他介紹了RDS是什么以后,他才恍然大悟。RDS通過(guò)這種封裝讓用戶更關(guān)注于使用數(shù)據(jù)庫(kù),而不需要關(guān)注數(shù)據(jù)庫(kù)運(yùn)維的細(xì)節(jié),從而簡(jiǎn)化運(yùn)維。
在阿里云上,RDS MySQL版也是被稱為云數(shù)據(jù)庫(kù)的,因此我們?nèi)绻蝗改承┳盅郏裄DS說(shuō)成是一個(gè)云數(shù)據(jù)庫(kù)也說(shuō)得過(guò)去。那么下一個(gè)問(wèn)題就麻煩一些了,RDS MySQL算國(guó)產(chǎn)數(shù)據(jù)庫(kù)還是開源數(shù)據(jù)庫(kù)呢?實(shí)際上,如果真正是業(yè)內(nèi)的人士,甚至阿里云的產(chǎn)品經(jīng)理或者研發(fā)人員,對(duì)這個(gè)問(wèn)題的回答肯定是十分堅(jiān)定的,RDS MySQL屬于開源數(shù)據(jù)庫(kù),因?yàn)槠浠A(chǔ)來(lái)源于開源代碼,雖然經(jīng)過(guò)了云廠商的優(yōu)化,其優(yōu)化的代碼也是要開源的。因此阿里云的RDS MySQL數(shù)據(jù)庫(kù)屬于開源數(shù)據(jù)庫(kù),這一點(diǎn)大家都不會(huì)否認(rèn)。在我的這張截圖上,也可以看到開源兩個(gè)字。
不過(guò)在阿里云RDS MySQL算不算國(guó)產(chǎn)數(shù)據(jù)庫(kù)這個(gè)問(wèn)題上,就沒那么簡(jiǎn)單了。我曾經(jīng)聽到過(guò)不止一個(gè)企業(yè)的領(lǐng)導(dǎo)說(shuō)我們用了國(guó)產(chǎn)數(shù)據(jù)庫(kù)RDS MySQL,我也曾試圖解釋RDS MySQL使用了開源的MySQL,應(yīng)該不屬于國(guó)產(chǎn)數(shù)據(jù)庫(kù),不過(guò)大部分人并沒有被我說(shuō)服。甚至有些人提出了這樣的觀點(diǎn):“開源的就不能是國(guó)產(chǎn)的嗎?開源軟件使用在國(guó)產(chǎn)的云平臺(tái)里,那么就應(yīng)該算是國(guó)產(chǎn)的”。
只能說(shuō)銷售的洗腦水平十分高超,開源的也可以是國(guó)產(chǎn)的,這個(gè)觀點(diǎn)是無(wú)論如何都駁不倒的。實(shí)際上我們也并不一定要糾結(jié)RDS MySQL是不是國(guó)產(chǎn)數(shù)據(jù)庫(kù),算不算信創(chuàng)只是一個(gè)文字游戲。很多企業(yè)的IT主管心里也清楚這些產(chǎn)品的來(lái)源,只是如果落實(shí)到一個(gè)統(tǒng)計(jì)數(shù)字上,那么算不算的問(wèn)題就比較敏感了。
我們現(xiàn)在講的國(guó)產(chǎn)化替代問(wèn)題,實(shí)際上也并不需要去糾結(jié)某些統(tǒng)計(jì)數(shù)字。國(guó)產(chǎn)化率,信創(chuàng)率等等,這些比例實(shí)際上也沒有太大的關(guān)系。我們做國(guó)產(chǎn)化替代的目的是為了安全,而不是去全球化。俄烏戰(zhàn)爭(zhēng)后西方國(guó)家對(duì)俄羅斯的眼花繚亂的制裁讓我們看到了國(guó)產(chǎn)化替代的必要性,因此在關(guān)鍵領(lǐng)域用國(guó)產(chǎn)數(shù)據(jù)庫(kù)替代不安全的產(chǎn)品的必要性是不言而喻的。不過(guò)我們?nèi)匀徊恍枰m結(jié)這個(gè)國(guó)產(chǎn)化率的指標(biāo)。企業(yè)中大量的安全性要求沒那么高的系統(tǒng),用用開源的數(shù)據(jù)庫(kù)產(chǎn)品又如何呢?而對(duì)于涉及到國(guó)計(jì)民生的系統(tǒng),那么使用國(guó)產(chǎn)數(shù)據(jù)庫(kù)也是必然的選擇。這個(gè)選擇并不是一種去全球化的思潮所致,而是真正的從安全出發(fā)。這些年開源軟件的安全漏洞事故層出不窮,開源軟件的安全性肯定是要打一個(gè)問(wèn)號(hào)的。
說(shuō)到開源軟件的安全,再來(lái)看我們的國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品。根據(jù)工信部信通院截至2021年6月的統(tǒng)計(jì),國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品有名有姓的已經(jīng)有140個(gè)了,再加上一些衍生產(chǎn)品,RDS等,據(jù)說(shuō)已經(jīng)接近300個(gè)了。如何判斷這些產(chǎn)品是國(guó)產(chǎn)的呢?工信部有一個(gè)標(biāo)準(zhǔn),自主代碼比例超過(guò)70%。那么如何判斷自主代碼比例呢?自主代碼比例這個(gè)指標(biāo)夠科學(xué)嗎?
這個(gè)問(wèn)題很尖銳,也確實(shí)不好回答。比如說(shuō),我開發(fā)了一個(gè)數(shù)據(jù)庫(kù)產(chǎn)品,原來(lái)的開源數(shù)據(jù)庫(kù)有1000萬(wàn)行開源代碼。我們把這1000萬(wàn)行代碼中的300萬(wàn)行核心代碼提取出來(lái),不做修改或者僅僅做一些小的修改,再把那些JDBC驅(qū)動(dòng),客戶端工具,數(shù)據(jù)導(dǎo)入到處工具等的邊緣代碼做大改,再加上一些亂七八糟不太會(huì)用到的自主研發(fā)的代碼,里面也許有一些不太成熟的存儲(chǔ)引擎,系統(tǒng)插件等,反正正式環(huán)境中也不會(huì)推薦客戶使用。如此再產(chǎn)生1000萬(wàn)行代碼,和原來(lái)的300萬(wàn)行核心代碼放在一起,妥妥地超過(guò)70%的代碼自主率,又不會(huì)讓數(shù)據(jù)庫(kù)產(chǎn)品傷筋動(dòng)骨。那么這種國(guó)產(chǎn)數(shù)據(jù)庫(kù)的核心的300萬(wàn)行代碼中可能存在的安全漏洞就完全消失了嗎?雖然明眼人一眼就能看出這種國(guó)產(chǎn)化的弊端,不過(guò)這可能也是我們國(guó)家數(shù)據(jù)庫(kù)國(guó)產(chǎn)化中的一個(gè)難以言表的痛點(diǎn)。
實(shí)際上這種國(guó)產(chǎn)數(shù)據(jù)庫(kù)的安全性還不一定比得上一些大廠的RDS MySQL產(chǎn)品,很多大廠雖然使用了開源的數(shù)據(jù)庫(kù)引擎,但是在RDS層上做了很多安全增加,比如防SQL注入,安全審計(jì)等。這樣的RDS產(chǎn)品不見得就會(huì)比我們的國(guó)產(chǎn)數(shù)據(jù)庫(kù)在安全性上更差。
從上面討論的一些情況來(lái)看,我們是不是應(yīng)該更加客觀地來(lái)看待數(shù)據(jù)庫(kù)國(guó)產(chǎn)化替代這件事呢?解決安全的問(wèn)題是數(shù)據(jù)庫(kù)國(guó)產(chǎn)化替代的初衷,而做起來(lái)是不是已經(jīng)忘記了我們出發(fā)時(shí)的目標(biāo)了呢?