數(shù)據(jù)庫(kù)產(chǎn)品用什么抓住用戶
?周五聊了下數(shù)據(jù)庫(kù)基準(zhǔn)測(cè)試的一些事情,現(xiàn)在客戶選擇數(shù)據(jù)庫(kù)產(chǎn)品,唯一比較有權(quán)威的就是一些國(guó)測(cè)機(jī)構(gòu)的測(cè)試結(jié)果。企業(yè)自行搞選型測(cè)試是十分困難的,一方面成本太高,一方面自己的能力不足,很容易被人忽悠瘸了。
周五的文章有搞數(shù)據(jù)庫(kù)的朋友留言,談了對(duì)測(cè)試的一些看法。比如代碼自主率測(cè)試,有朋友說(shuō)可以要求數(shù)據(jù)庫(kù)廠商現(xiàn)場(chǎng)編譯,現(xiàn)場(chǎng)測(cè)試。我不知道有多少?gòu)S商可以很方便的把整個(gè)數(shù)據(jù)庫(kù)的編譯環(huán)境都部署到測(cè)試現(xiàn)場(chǎng)去,這對(duì)測(cè)試機(jī)構(gòu)是個(gè)巨大的挑戰(zhàn)。哪怕真的可以這樣做,還是有些作弊手段可以使用的。我以前搞類似測(cè)試的時(shí)候,就有廠家把容易掃描出問(wèn)題的代碼做成lib庫(kù),或者甚至把這些obj打到linux系統(tǒng)的lib庫(kù)中,跟隨著編譯依賴庫(kù)一起通過(guò)YUM先安裝好,然后直接鏈接到應(yīng)用系統(tǒng)里,這樣我們的掃描工具就掃描不出這些代碼的問(wèn)題了。
實(shí)際上對(duì)于絕大多數(shù)用戶來(lái)說(shuō),關(guān)心的并不是數(shù)據(jù)庫(kù)代碼是否自主,而是數(shù)據(jù)庫(kù)本身的功能是否滿足自己的需求。對(duì)于一些國(guó)企央企或者國(guó)有控股企業(yè)來(lái)說(shuō),對(duì)于代碼自主率的焦慮主要是怕自己選擇的數(shù)據(jù)庫(kù)產(chǎn)品最后無(wú)法被國(guó)家認(rèn)可為信創(chuàng)產(chǎn)品。信創(chuàng)數(shù)據(jù)庫(kù)的認(rèn)定國(guó)產(chǎn)以前是采用清單的,不過(guò)這個(gè)清單覆蓋面太小,因此也被廣為詬病。
除此之外,實(shí)際上客戶最為關(guān)心的問(wèn)題就是國(guó)產(chǎn)數(shù)據(jù)庫(kù)用起來(lái)是否便捷、數(shù)據(jù)庫(kù)可靠性如何,高可用切換是否簡(jiǎn)單可靠、數(shù)據(jù)庫(kù)的性能如何、數(shù)據(jù)庫(kù)的運(yùn)維難度如何、數(shù)據(jù)庫(kù)的周邊生態(tài)工具是否完備。
數(shù)據(jù)庫(kù)用起來(lái)是否便捷實(shí)際上是用戶在做數(shù)據(jù)庫(kù)選型的時(shí)候最為關(guān)注的問(wèn)題這個(gè)是設(shè)計(jì)師并不是我們的數(shù)據(jù)庫(kù)廠商最為關(guān)注的問(wèn)題,不過(guò)對(duì)于一些運(yùn)維能力相對(duì)不足的中小型客戶來(lái)說(shuō),在數(shù)據(jù)庫(kù)選型的時(shí)候可能會(huì)把使用便捷性放在第一位。很巧的是,最近在和兩個(gè)金融用戶討論國(guó)產(chǎn)數(shù)據(jù)庫(kù)選型的時(shí)候,他們都在三四個(gè)數(shù)據(jù)庫(kù)中做選擇,經(jīng)過(guò)測(cè)試試用后不約而同的選擇了TDSQL。當(dāng)時(shí)我覺(jué)得有些意外,后來(lái)詢問(wèn)原因后才明白了其中的奧妙。實(shí)際上TDSQL并不是一個(gè)數(shù)據(jù)庫(kù),而是一個(gè)數(shù)據(jù)庫(kù)云平臺(tái),其扁鵲平臺(tái)可以很方便的維護(hù)一個(gè)大型的數(shù)據(jù)庫(kù)云平臺(tái),像普通的云平臺(tái)提供的RDS一樣快速交付各種數(shù)據(jù)庫(kù)。TDSQL不是一個(gè)數(shù)據(jù)庫(kù),TDSQL平臺(tái)可以提供單機(jī)MYSQL實(shí)例、單機(jī)PG實(shí)例、分布式數(shù)據(jù)庫(kù)等??蛻暨x擇TDSQL的最終原因是他們的MYSQL單實(shí)例對(duì)他們遷移一些小系統(tǒng)來(lái)說(shuō)完全夠用了,而扁鵲平臺(tái)的能力讓他們節(jié)約了大量的建設(shè)投入。在國(guó)產(chǎn)數(shù)據(jù)庫(kù)內(nèi)卷如此激烈的時(shí)候,數(shù)據(jù)庫(kù)產(chǎn)品在核心能力上提升很難,但是提供一個(gè)類似“扁鵲”的平臺(tái),我想并不困難。
數(shù)據(jù)庫(kù)一旦上線運(yùn)行后,就難免會(huì)出現(xiàn)各種問(wèn)題,導(dǎo)致實(shí)例宕機(jī)。用戶也認(rèn)可單實(shí)例數(shù)據(jù)庫(kù)肯定是不能100%可靠的,但是如果數(shù)據(jù)庫(kù)實(shí)例宕機(jī)后能夠做自動(dòng)遷移或者自動(dòng)重啟,對(duì)于核心生產(chǎn)系統(tǒng)來(lái)說(shuō),可以秒鐘級(jí)主備自動(dòng)切換,對(duì)于普通業(yè)務(wù)系統(tǒng)來(lái)說(shuō),可以分鐘級(jí)故障恢復(fù),那么數(shù)據(jù)庫(kù)實(shí)例宕機(jī)并不會(huì)對(duì)核心業(yè)務(wù)產(chǎn)生重大影響,這些都是可以接受的。最主要的是數(shù)據(jù)庫(kù)廠商要能夠提供一個(gè)完整的解決方案,既可以方便的部署,也可以放心的使用。類似于Oracle GDS的能力,對(duì)于用戶的關(guān)鍵應(yīng)用來(lái)說(shuō)是十分必要的。
至于數(shù)據(jù)庫(kù)的性能,這是用戶在做數(shù)據(jù)庫(kù)選型時(shí)最為迷茫的,什么樣的性能才是企業(yè)所需要的。TPCC肯定不是用戶數(shù)據(jù)庫(kù)性能的關(guān)鍵點(diǎn)。很多應(yīng)用系統(tǒng)從Oracle遷移到國(guó)產(chǎn)數(shù)據(jù)庫(kù)的時(shí)候,并不是因?yàn)閲?guó)產(chǎn)數(shù)據(jù)庫(kù)并發(fā)處理能力不足而出現(xiàn)了性能問(wèn)題,而是因?yàn)閲?guó)產(chǎn)數(shù)據(jù)庫(kù)在表連接算法方面的的性能差異,執(zhí)行計(jì)劃方面的差異導(dǎo)致了較大的性能差異。我遇到過(guò)一個(gè)客戶的數(shù)據(jù)庫(kù)從Oracle遷移到某國(guó)產(chǎn)數(shù)據(jù)庫(kù)后,核心業(yè)務(wù)模塊普遍性能下降了二三十倍。經(jīng)過(guò)分析發(fā)現(xiàn),最多的問(wèn)題是因?yàn)樗饕O(shè)計(jì)導(dǎo)致的,原有的索引設(shè)計(jì)在Oracle上效率還不錯(cuò),但是到了國(guó)產(chǎn)數(shù)據(jù)庫(kù)上就不行了。還有一些是國(guó)產(chǎn)數(shù)據(jù)庫(kù)的表連接方面與Oracle存在技術(shù)差異,很多SQL在國(guó)產(chǎn)數(shù)據(jù)庫(kù)上無(wú)法使用Oracle上的執(zhí)行計(jì)劃。遇到這種情況,我們就只能通過(guò)改寫SQL來(lái)解決問(wèn)題了。目前的國(guó)產(chǎn)數(shù)據(jù)庫(kù)替代存在大量的存量替代問(wèn)題,因此國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品需要做好這方面的對(duì)比測(cè)試,如果數(shù)據(jù)庫(kù)產(chǎn)品確實(shí)無(wú)法采用較好的執(zhí)行計(jì)劃來(lái)執(zhí)行某些SQL,則應(yīng)該發(fā)布優(yōu)化建議,讓用戶能夠快速找到解決方案。
對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),除了數(shù)據(jù)庫(kù)核心的能力之外,生態(tài)工具的完備性也十分關(guān)鍵,比如數(shù)據(jù)庫(kù)異構(gòu)復(fù)制工具、數(shù)據(jù)庫(kù)遷移工具、數(shù)據(jù)庫(kù)備份工具等。數(shù)據(jù)庫(kù)系統(tǒng)往往不是孤立的,異構(gòu)數(shù)據(jù)庫(kù)之間需要進(jìn)行雙向的數(shù)據(jù)復(fù)制,因此國(guó)產(chǎn)數(shù)據(jù)庫(kù)需要能夠和一些主流的國(guó)產(chǎn)數(shù)據(jù)庫(kù)、開源數(shù)據(jù)庫(kù)、大數(shù)據(jù)平臺(tái)之間進(jìn)行雙向數(shù)據(jù)復(fù)制。甚至在目前階段,國(guó)產(chǎn)數(shù)據(jù)庫(kù)與Oracle之間的數(shù)據(jù)雙向復(fù)制工具還是必須存在一段時(shí)間的。數(shù)據(jù)庫(kù)遷移工具主要是支持將應(yīng)用與數(shù)據(jù)從Oracle遷移到國(guó)產(chǎn)數(shù)據(jù)庫(kù),不僅僅能夠遷移表結(jié)構(gòu),還要能夠支持大數(shù)據(jù)量的批處理遷移與增量復(fù)制。另外還需要能夠遷移Oracle 的PL/SQL存儲(chǔ)過(guò)程,讓整個(gè)數(shù)據(jù)庫(kù)應(yīng)用能夠很便捷的遷移過(guò)來(lái)。備份是另外一個(gè)大問(wèn)題,雖然所有的數(shù)據(jù)庫(kù)廠商都提供了備份工具,但是備份工具與主流的磁帶庫(kù),備份管理工具,備份一體機(jī),CDM等能否兼容也是十分關(guān)鍵的。這涉及到多廠商之間的生態(tài)協(xié)作,比起數(shù)據(jù)庫(kù)廠商自己就能干的事情來(lái)說(shuō)更為復(fù)雜,難度也更高,特別是涉及一些國(guó)外數(shù)據(jù)庫(kù)備份工具的情況。
除此之外,數(shù)據(jù)庫(kù)的運(yùn)維接口與運(yùn)維工具也十分關(guān)鍵。目前大多數(shù)國(guó)產(chǎn)數(shù)據(jù)庫(kù)能夠提供的運(yùn)維接口十分有限,數(shù)據(jù)庫(kù)廠商能夠提供給客戶的運(yùn)維知識(shí)更是鳳毛麟角。國(guó)產(chǎn)數(shù)據(jù)庫(kù)對(duì)于用戶來(lái)說(shuō)就是一個(gè)十分不穩(wěn)定的黑匣子,說(shuō)不準(zhǔn)什么時(shí)候就出問(wèn)題了。更有甚者,有些用戶現(xiàn)場(chǎng)的問(wèn)題,我們的數(shù)據(jù)庫(kù)廠商都很難定位問(wèn)題的原因,這樣的數(shù)據(jù)庫(kù)產(chǎn)品讓用戶用得提心吊膽的。
提升數(shù)據(jù)庫(kù)核心的能力,這需要很長(zhǎng)的時(shí)間的積累,甚至無(wú)法完全依靠數(shù)據(jù)庫(kù)研發(fā)團(tuán)隊(duì)的技術(shù)能力。很多數(shù)據(jù)庫(kù)性能的提升是在實(shí)際應(yīng)用中遇到了問(wèn)題,才去想辦法解決的。研發(fā)人員在設(shè)計(jì)數(shù)據(jù)庫(kù)產(chǎn)品的時(shí)候很難想得到這樣特殊的應(yīng)用場(chǎng)景。因此這些核心能力的積累是需要時(shí)間的,很難一蹴而就。不過(guò)我今天提到的一些能力都是在數(shù)據(jù)庫(kù)核心能力之外的,只要我們的數(shù)據(jù)庫(kù)廠商想去完善,也是完全有能力做到的。?