新聞中心
?前陣子有個(gè)企業(yè)的IT負(fù)責(zé)人和我討論,對(duì)于信創(chuàng)數(shù)據(jù)庫(kù),制定一些國(guó)家標(biāo)準(zhǔn),會(huì)不會(huì)對(duì)國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)業(yè)有幫助。當(dāng)時(shí)我的第一反應(yīng)是,國(guó)產(chǎn)數(shù)據(jù)庫(kù)咋做標(biāo)準(zhǔn)化,不同的數(shù)據(jù)庫(kù)產(chǎn)品技術(shù)路線不同,架構(gòu)不同,技術(shù)水平不同,實(shí)現(xiàn)方式不同,我們沒(méi)辦法也沒(méi)必要去做個(gè)國(guó)標(biāo)來(lái)做一些限制吧。說(shuō)實(shí)在的,標(biāo)準(zhǔn)是個(gè)雙刃劍,搞好了,能夠促進(jìn)國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)業(yè),搞得不好,就變成黨同伐異的工具了。

前些年一些行業(yè)制訂了數(shù)據(jù)庫(kù)的一系列的數(shù)據(jù)庫(kù)標(biāo)準(zhǔn),實(shí)際上這些標(biāo)準(zhǔn)更像是招標(biāo)文件中的技術(shù)規(guī)范書(shū),很難對(duì)數(shù)據(jù)庫(kù)產(chǎn)業(yè)發(fā)展有什么作用。另外一個(gè)典型的案例就是等保安全標(biāo)準(zhǔn),前些年Oracle參加過(guò)一次等保2級(jí)測(cè)試,居然慘敗,也就很說(shuō)明問(wèn)題了,了解Oracle安全的朋友絕對(duì)相信Oracle數(shù)據(jù)庫(kù)絕對(duì)不會(huì)比當(dāng)時(shí)的國(guó)產(chǎn)數(shù)據(jù)庫(kù)在安全方面差,但是當(dāng)時(shí)的不少國(guó)產(chǎn)數(shù)據(jù)庫(kù)是可以輕松過(guò)等保三級(jí)的。
不過(guò)仔細(xì)想一想,我倒是覺(jué)得國(guó)產(chǎn)數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)也不見(jiàn)得是一件壞事情,如果做好了,還真的能促進(jìn)國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)業(yè)的發(fā)展。國(guó)外商用數(shù)據(jù)庫(kù)發(fā)展過(guò)程中也是先萬(wàn)花齊放,不同的架構(gòu)、不同的技術(shù)路線、不同的編程接口。發(fā)展到一定階段才發(fā)現(xiàn),如果不遵循某些標(biāo)準(zhǔn),野蠻生長(zhǎng),數(shù)據(jù)庫(kù)市場(chǎng)就很難快速增長(zhǎng)。于是大家才開(kāi)始互相“學(xué)習(xí)”,采用一些事實(shí)標(biāo)準(zhǔn),最終其能力也開(kāi)始趨同了。SQL語(yǔ)言、B樹(shù)索引、MVCC,事務(wù)隔離級(jí)別、存儲(chǔ)過(guò)程、觸發(fā)器,等等等等,正是這些技術(shù)被商用數(shù)據(jù)庫(kù)廠商廣泛使用后,才讓關(guān)系型數(shù)據(jù)庫(kù)市場(chǎng)變得繁榮起來(lái)。國(guó)產(chǎn)數(shù)據(jù)庫(kù)的起步比較晚,因此不但上述這些都成了標(biāo)配,并且大家都有意無(wú)意的向幾個(gè)數(shù)據(jù)庫(kù)產(chǎn)品靠攏。一個(gè)是Oracle,另外就是MySQL、Postgresql兩大開(kāi)源數(shù)據(jù)庫(kù)。
2014年的時(shí)候,我們的優(yōu)化項(xiàng)目開(kāi)始接觸達(dá)夢(mèng)、金倉(cāng)等國(guó)產(chǎn)數(shù)據(jù)庫(kù)。剛剛接手一個(gè)全新的數(shù)據(jù)庫(kù)的時(shí)候,我們完全時(shí)懵的。不過(guò)看到DBA_TABLES,v$sysstat、v$sessions等熟悉的視圖的時(shí)候,心里就踏實(shí)了很多。雖然達(dá)夢(mèng)數(shù)據(jù)庫(kù)與Oracle的內(nèi)核不同,sysstat和會(huì)話信息所反映的系統(tǒng)狀況也沒(méi)Oracle那么清晰,不過(guò)這種兼容性也讓我們?cè)谧鲞@個(gè)優(yōu)化項(xiàng)目時(shí)受益良多。后來(lái)這個(gè)項(xiàng)目的完成比原來(lái)預(yù)想的順利很多,效果也超出了我們開(kāi)始時(shí)的預(yù)期。
數(shù)據(jù)庫(kù)的核心技術(shù)實(shí)無(wú)法做標(biāo)準(zhǔn)化的,做起來(lái)也無(wú)益,差異化競(jìng)爭(zhēng)才能讓優(yōu)秀的數(shù)據(jù)庫(kù)產(chǎn)品更好的成長(zhǎng)起來(lái)。不過(guò)在某些方面還是可以建立一些國(guó)標(biāo)的。比如可觀測(cè)性接口、數(shù)據(jù)字典表、云平臺(tái)納管接口等外圍接口方面,如果能形成標(biāo)準(zhǔn)化,那么對(duì)于國(guó)產(chǎn)數(shù)據(jù)庫(kù)市場(chǎng)還是有所助益的。
我們是做運(yùn)維工具的,對(duì)可觀測(cè)性接口的問(wèn)題深有感觸。每納管一個(gè)數(shù)據(jù)庫(kù)產(chǎn)品,我們都需要從頭開(kāi)發(fā),從指標(biāo)體系構(gòu)建,到指標(biāo)采集,再到診斷工具,都要重新寫一套。實(shí)際上,不管數(shù)據(jù)庫(kù)產(chǎn)品核心的差異有多大,很多指標(biāo)實(shí)際上都是標(biāo)準(zhǔn)的,負(fù)載、性能、并發(fā)、集群等方面都有很多指標(biāo)都是普適性的,系統(tǒng)狀態(tài)、系統(tǒng)指標(biāo)、等待事件等接口能力都是可以提供的。在我們這些年的工具開(kāi)發(fā)中發(fā)現(xiàn),PG兼容的數(shù)據(jù)庫(kù)產(chǎn)品的監(jiān)控開(kāi)發(fā)工作量相對(duì)較小,雖然很多數(shù)據(jù)庫(kù)在底層都做了很多優(yōu)化,也增加了一些可觀測(cè)性的接口,不過(guò)因?yàn)槠浜诵牟糠值闹笜?biāo)體系,監(jiān)控視圖方面存在較多兼容的地方,因此納管新的PG類的國(guó)產(chǎn)數(shù)據(jù)庫(kù)的開(kāi)發(fā)成本遠(yuǎn)低于一個(gè)全新的數(shù)據(jù)庫(kù)產(chǎn)品。
如果能夠形成一套國(guó)家標(biāo)準(zhǔn),那么今后不僅對(duì)于數(shù)據(jù)庫(kù)監(jiān)控產(chǎn)品的廠商,對(duì)于DBA來(lái)說(shuō)也是一個(gè)福音。比如日志文件的存儲(chǔ)位置,日志文件的文件名格式,日志條目的格式,這些按照一個(gè)標(biāo)準(zhǔn)化的格式去輸出,對(duì)于數(shù)據(jù)庫(kù)內(nèi)核來(lái)說(shuō)影響不大,完全是可以標(biāo)準(zhǔn)化的。甚至日志輸出的內(nèi)容,我們也可以做一些標(biāo)準(zhǔn)化,比如錯(cuò)誤類日志,可以學(xué)習(xí)Oracle那樣,把應(yīng)用中幾層堆棧的報(bào)錯(cuò)按照順序一起輸出,而不僅僅輸出最后報(bào)錯(cuò)點(diǎn)多而錯(cuò)誤信息,這十分有助于故障診斷。
數(shù)據(jù)字典接口標(biāo)準(zhǔn)化也會(huì)給DBA與生態(tài)工具合作伙伴帶來(lái)極大的便利。Tablename/table_name/tname這些字段都能表示表的名字,為什么就不能使用統(tǒng)一的名稱呢?既然大家習(xí)慣使用dba_tables了,大家就都用這個(gè)耳熟能詳?shù)囊晥D名稱好了。國(guó)產(chǎn)數(shù)據(jù)庫(kù)都采用標(biāo)準(zhǔn)的數(shù)據(jù)字典接口,也可以降低國(guó)產(chǎn)數(shù)據(jù)庫(kù)的學(xué)習(xí)成本,讓應(yīng)用軟件在不同的國(guó)產(chǎn)數(shù)據(jù)庫(kù)之間做遷移時(shí)成本得到極大的降低。
編程接口的標(biāo)準(zhǔn)化工作實(shí)際上有一部分已經(jīng)讓JDBC/ODBC等事實(shí)上的標(biāo)準(zhǔn)做了。不過(guò)在一些常用的細(xì)節(jié)上,不同的數(shù)據(jù)庫(kù)產(chǎn)品依然十分有個(gè)性。序列號(hào)的使用,Oracle用seq.nextval,有不少國(guó)產(chǎn)數(shù)據(jù)庫(kù)做了這方面的兼容,但是并不是所有的數(shù)據(jù)庫(kù)產(chǎn)品都這么使用。存儲(chǔ)過(guò)程就更是百花齊放了,MYSQL系的PG系的,仿Oracle PL/SQL的三大系列三足鼎立。我們是不是也可以出一個(gè)國(guó)家級(jí)的存儲(chǔ)過(guò)程語(yǔ)法標(biāo)準(zhǔn)呢?我們完全可以學(xué)習(xí)Oracle,用類ADA語(yǔ)法做一個(gè)標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)基本上兼容了Oracle的PL/SQL,也具有一定的獨(dú)立性。
關(guān)于數(shù)據(jù)庫(kù)云納管標(biāo)準(zhǔn)實(shí)際上來(lái)自于最近遇到的一個(gè)案例。某企業(yè)測(cè)試國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品,必須在云平臺(tái)上測(cè)試。這就遇到了不公平的問(wèn)題,因?yàn)樵破脚_(tái)廠家自己的數(shù)據(jù)庫(kù)產(chǎn)品可以以RDS的形式提供,而第三方的國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品就只能部署到云主機(jī)里了。RDS部署不僅部署起來(lái)比第三方數(shù)據(jù)庫(kù)方便,更重要的是RDS都是跑在裸金屬服務(wù)器上的,而云主機(jī)的云盤性能垃圾的很。這樣測(cè)試下來(lái),公正性就大打折扣了。于是云廠商和數(shù)據(jù)庫(kù)廠商之間就打起嘴炮來(lái)了。數(shù)據(jù)庫(kù)廠商說(shuō)云廠商排外,不肯把他們的數(shù)據(jù)庫(kù)納入RDS范疇,云廠商說(shuō)國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品這么多,標(biāo)準(zhǔn)不統(tǒng)一,我們把他們做成RDS成本太高。如果大家各退一步,云廠商做一個(gè)數(shù)據(jù)庫(kù)RDS納管接口標(biāo)準(zhǔn)規(guī)范,數(shù)據(jù)庫(kù)廠商各自實(shí)現(xiàn)接口規(guī)范,這個(gè)問(wèn)題不就解決了。當(dāng)然技術(shù)上不難,這個(gè)案例中實(shí)際上還是一個(gè)商務(wù)問(wèn)題。
無(wú)論如何,這些標(biāo)準(zhǔn)都只是接口上的標(biāo)準(zhǔn)。不同的數(shù)據(jù)庫(kù)產(chǎn)品的核心差異極大。哪怕我們用SQL訪問(wèn)起來(lái),SQL代碼都是兼容的,但是訪問(wèn)數(shù)據(jù)庫(kù)的執(zhí)行計(jì)劃差異會(huì)很大,相同的執(zhí)行計(jì)劃算子,其性能與能力也會(huì)有差異,因此接口上的兼容性不等于能力的完全替代。以前我們做過(guò)的數(shù)據(jù)庫(kù)遷移項(xiàng)目中,從Oracle遷移到某國(guó)產(chǎn)數(shù)據(jù)庫(kù)上,SQL執(zhí)行時(shí)間變長(zhǎng)數(shù)倍甚至十?dāng)?shù)倍是十分常見(jiàn)的。不過(guò)這些問(wèn)題最終都通過(guò)優(yōu)化去解決掉了。我們的很多應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)做的都很差,索引建的很亂,在Oracle CBO下,這一切都還不是問(wèn)題,但是遷移到國(guó)產(chǎn)數(shù)據(jù)庫(kù)上,就問(wèn)題多多了。這些內(nèi)功的問(wèn)題,需要我們的國(guó)產(chǎn)數(shù)據(jù)庫(kù)廠商逐步去解決,而一些接口的標(biāo)準(zhǔn)化上,實(shí)際上目前是應(yīng)該做些工作了。
這些標(biāo)準(zhǔn)不需要設(shè)置為行業(yè)強(qiáng)制標(biāo)準(zhǔn),而是給一些愿意讓使用者用的更習(xí)慣的數(shù)據(jù)庫(kù)廠商有一個(gè)參考標(biāo)準(zhǔn)。如果有一些廠家愿意參與進(jìn)來(lái),形成的小集團(tuán)確實(shí)方便了用戶,那么會(huì)有更多的用戶會(huì)參與進(jìn)來(lái),廠家實(shí)際上也會(huì)受益。這樣就能夠讓更多的數(shù)據(jù)庫(kù)廠商也參與進(jìn)來(lái)。這種靠市場(chǎng)發(fā)展的標(biāo)準(zhǔn),比那些被用于招標(biāo)的標(biāo)準(zhǔn),有價(jià)值的多。?
本文題目:國(guó)產(chǎn)數(shù)據(jù)庫(kù)適合國(guó)家標(biāo)準(zhǔn)嗎?
路徑分享:http://www.5511xx.com/article/cddjich.html


咨詢
建站咨詢
