數(shù)據(jù)庫(kù)選型規(guī)劃上,很多人第一步就做錯(cuò)了……
這個(gè)周末一直在幫一個(gè)客戶構(gòu)思一個(gè)數(shù)據(jù)庫(kù)應(yīng)用的戰(zhàn)術(shù)圖,改了幾稿都不太滿意,好像要說(shuō)的東西還是沒(méi)說(shuō)清楚。數(shù)據(jù)庫(kù)選型如果放到二十年前是件十分容易的事情,因?yàn)槟菚r(shí)候我們要處理的主要是關(guān)系型數(shù)據(jù),而現(xiàn)在不同了,企業(yè)的數(shù)據(jù)里結(jié)構(gòu)化的非結(jié)構(gòu)化的數(shù)據(jù)一大堆,除了普通的表單數(shù)據(jù)外,還有文檔、寬表、鍵值、時(shí)序、空間、圖、事件、全文檢索等一系列的數(shù)據(jù)需要存儲(chǔ)。這些不同種類的數(shù)據(jù),如果都不分青紅皂白,想要用一種數(shù)據(jù)庫(kù)來(lái)搞定,其實(shí)還是相當(dāng)困難的。
正是基于此,我在剛剛接到這個(gè)工作的時(shí)候覺(jué)得十分簡(jiǎn)單的一件事,真正做起來(lái)就發(fā)現(xiàn)實(shí)際上這個(gè)戰(zhàn)術(shù)要梳理好并不是一件容易的事情。就說(shuō)數(shù)據(jù)庫(kù)分類這么簡(jiǎn)單的一件事吧,客戶希望我從關(guān)系型和NOSQL兩個(gè)維度為主分析他們當(dāng)前的數(shù)據(jù)庫(kù)應(yīng)用情況,剛開(kāi)始還好,梳理到時(shí)序數(shù)據(jù)庫(kù)就犯難了,時(shí)序數(shù)據(jù)庫(kù)歸類到關(guān)系型呢還是NOSQL呢?有些時(shí)序數(shù)據(jù)庫(kù)是NOSQL的,而有些則是關(guān)系型的。實(shí)際上數(shù)據(jù)庫(kù)的分類也十分復(fù)雜,存在多個(gè)相互不兼容的維度。這么復(fù)雜的事情,連做數(shù)據(jù)庫(kù)架構(gòu)的專業(yè)人士很多時(shí)候也會(huì)弄不明白,更不要說(shuō)大企業(yè)IT部門(mén)的負(fù)責(zé)領(lǐng)導(dǎo)了。說(shuō)這話還真不是矯情,很多數(shù)據(jù)庫(kù)都不是職責(zé)分明的,很多業(yè)務(wù)選擇數(shù)據(jù)庫(kù)類型的時(shí)候也不是只有一種答案。說(shuō)個(gè)簡(jiǎn)單的問(wèn)題,文檔數(shù)據(jù)庫(kù)和寬列數(shù)據(jù)庫(kù)在應(yīng)用場(chǎng)景上有啥區(qū)別?這個(gè)問(wèn)題好回答嗎?
有些朋友可能要說(shuō),企業(yè)數(shù)據(jù)庫(kù)選型出問(wèn)題,主要是因?yàn)轭I(lǐng)導(dǎo)不懂?dāng)?shù)據(jù)庫(kù)。確實(shí)是的,領(lǐng)導(dǎo)可能不是DBA出身,可能不怎么懂?dāng)?shù)據(jù)庫(kù),不過(guò)企業(yè)數(shù)據(jù)庫(kù)選型存在問(wèn)題或者你認(rèn)為企業(yè)數(shù)據(jù)庫(kù)選型存在問(wèn)題,不應(yīng)該把責(zé)任都往領(lǐng)導(dǎo)身上推。一個(gè)企業(yè)的數(shù)據(jù)庫(kù)選型工作實(shí)際上是相當(dāng)復(fù)雜的,涉及到企業(yè)的EA規(guī)劃,數(shù)據(jù)架構(gòu)規(guī)劃和IT部門(mén)的長(zhǎng)遠(yuǎn)規(guī)劃。數(shù)據(jù)庫(kù)選型在企業(yè)EA里實(shí)際上只是一個(gè)小東西,甚至可能不會(huì)被考慮到。
一個(gè)企業(yè)的數(shù)據(jù)庫(kù)選型,不僅僅是考慮到數(shù)據(jù)庫(kù)技術(shù)這點(diǎn)問(wèn)題,還和企業(yè)的IT發(fā)展歷史,存量系統(tǒng),未來(lái)企業(yè)發(fā)展藍(lán)圖,以及企業(yè)的研發(fā)、運(yùn)維支撐、外部協(xié)作生態(tài)等密切相關(guān)。作為企業(yè)IT部門(mén)的主管,是不可能鉆到數(shù)據(jù)庫(kù)技術(shù)這一個(gè)點(diǎn)上來(lái)考慮問(wèn)題的。
去年我參加一個(gè)沙龍的時(shí)候遇到一個(gè)企業(yè)的IT部門(mén)高管,就問(wèn)起他們的數(shù)據(jù)庫(kù)替代的事情。前兩年他們?cè)谟瞄_(kāi)源數(shù)據(jù)庫(kù)替代Oracle方面搞得轟轟烈烈的,甚至他們的技術(shù)選型對(duì)整個(gè)行業(yè)都產(chǎn)生了深遠(yuǎn)的影響。不過(guò)從溝通中,我感覺(jué)到他們目前的數(shù)據(jù)庫(kù)的選擇方向發(fā)生了一些改變。后來(lái)經(jīng)過(guò)溝通,我了解到當(dāng)初他們做數(shù)據(jù)庫(kù)替代的時(shí)候,把一些關(guān)鍵系統(tǒng)遷移到開(kāi)源數(shù)據(jù)庫(kù)上后,出現(xiàn)了一些問(wèn)題。以他們當(dāng)時(shí)的技術(shù)能力,很難解決這些問(wèn)題。因此他們隨后對(duì)數(shù)據(jù)庫(kù)選型問(wèn)題更為謹(jǐn)慎了,同時(shí)認(rèn)為一個(gè)企業(yè)不能死綁在一個(gè)數(shù)據(jù)庫(kù)身上,有一些比較特殊的高并發(fā)高負(fù)載的系統(tǒng)還是要根據(jù)其應(yīng)用特點(diǎn)去做數(shù)據(jù)庫(kù)選擇。
上面的案例可以說(shuō)明兩個(gè)問(wèn)題,一個(gè)是數(shù)據(jù)庫(kù)遷移改造,運(yùn)維技術(shù)是繞不過(guò)去的坎。如果我們遷移的不是很重要的系統(tǒng),那么IT部門(mén)哪怕遇到些問(wèn)題也是可以扛過(guò)去的,而如果是關(guān)鍵系統(tǒng),那么我們還是需要更為謹(jǐn)慎的。在企業(yè)關(guān)鍵系統(tǒng)遷移改造的時(shí)候,支撐技術(shù)能力的預(yù)先構(gòu)建,應(yīng)該是要先行的。
第二個(gè)問(wèn)題是,對(duì)于大型企業(yè)來(lái)說(shuō),數(shù)據(jù)庫(kù)選型也不能一刀切,選了就硬上。對(duì)于大型企業(yè)來(lái)說(shuō),一些大數(shù)據(jù)量、高負(fù)載、業(yè)務(wù)邏輯十分復(fù)雜的系統(tǒng),如果一刀切的采用一種原則來(lái)遷移,那么最終是要出大問(wèn)題的。實(shí)際上,在這一點(diǎn)上,不太懂?dāng)?shù)據(jù)庫(kù)技術(shù)的領(lǐng)導(dǎo)可能比你想得更為深遠(yuǎn)。因?yàn)閿?shù)據(jù)庫(kù)選型不僅僅關(guān)系到數(shù)據(jù)庫(kù)技術(shù)這一個(gè)點(diǎn),是和整個(gè)企業(yè)的IT總體規(guī)劃相關(guān)的,包括IT系統(tǒng)全生命周期擁有成本、系統(tǒng)改造后的安全穩(wěn)定運(yùn)行、企業(yè)研發(fā)隊(duì)伍的能力、運(yùn)維支撐能力、存量系統(tǒng)改造、企業(yè)業(yè)務(wù)發(fā)展的支撐能力等。
在這種情況下,很多企業(yè)把希望寄托于云平臺(tái),既然企業(yè)IT基礎(chǔ)設(shè)施都要上云了,那么就讓云來(lái)解決這個(gè)問(wèn)題吧。很多大型企業(yè)這些年企業(yè)私有云的發(fā)展十分迅速,大量的系統(tǒng)從傳統(tǒng)的物理機(jī)遷移到云平臺(tái),數(shù)據(jù)庫(kù)也選擇十分方便的RDS,大量的新建系統(tǒng)就這么建設(shè)起來(lái)了,似乎十分和諧。甚至領(lǐng)導(dǎo)們都忘記了數(shù)據(jù)庫(kù)這個(gè)頭痛的問(wèn)題,企業(yè)甚至沒(méi)有數(shù)據(jù)庫(kù)許可證采購(gòu)這個(gè)以前讓人感到十分頭痛的問(wèn)題了?!斑€是上云大法好??!”
在這種情況下,甚至有些人都潛意識(shí)里認(rèn)為云上的數(shù)據(jù)庫(kù)都是免費(fèi)的,殊不知,RDS也不是免費(fèi)的午餐,現(xiàn)在幾乎大多數(shù)私有云供應(yīng)商對(duì)于RDS都是按照物理服務(wù)器按年收費(fèi)的,比如某著名私有云的RDS FOR MYSQL一臺(tái)物理服務(wù)器的年服務(wù)費(fèi)是十幾萬(wàn)。大家如果仔細(xì)算下來(lái),發(fā)現(xiàn)這玩意可能是個(gè)無(wú)底洞啊。不過(guò)對(duì)于企業(yè)來(lái)說(shuō),這些成本都算到了云平臺(tái)的建設(shè)成本里去了,從統(tǒng)計(jì)報(bào)表里看,已經(jīng)看不到數(shù)據(jù)庫(kù)許可證這一項(xiàng)了。
這些年和許多用戶討論過(guò)數(shù)據(jù)庫(kù)國(guó)產(chǎn)化或者數(shù)據(jù)庫(kù)選型的問(wèn)題,企業(yè)規(guī)模不同的企業(yè)面臨的問(wèn)題可能是方方面面的,不過(guò)企業(yè)關(guān)注的問(wèn)題的本質(zhì)上是差不多的。第一個(gè)是數(shù)據(jù)庫(kù)與應(yīng)用的適配度問(wèn)題;第二個(gè)是采購(gòu)成本的問(wèn)題;第三個(gè)是運(yùn)維成本問(wèn)題;第四個(gè)是服務(wù)生態(tài)問(wèn)題。實(shí)際上雖然考慮了很多問(wèn)題,不過(guò)依然是不夠的。
數(shù)據(jù)庫(kù)是上接企業(yè)應(yīng)用,下連IT基礎(chǔ)設(shè)施的關(guān)鍵性IT組件,其選型的影響上到應(yīng)用開(kāi)發(fā),下到云平臺(tái),所以不得不慎重?;ヂ?lián)網(wǎng)企業(yè)可以投入大量的費(fèi)用來(lái)整合整個(gè)體系,而我們的傳統(tǒng)企業(yè),無(wú)論企業(yè)規(guī)模大小,都很難像互聯(lián)網(wǎng)企業(yè)那樣來(lái)整合,因?yàn)榛ヂ?lián)網(wǎng)企業(yè)的IT已經(jīng)成為企業(yè)的命脈,而傳統(tǒng)行業(yè)企業(yè)不是。所以這些年,凡是全面學(xué)習(xí)互聯(lián)網(wǎng)企業(yè)的傳統(tǒng)企業(yè),沒(méi)有特別成功的應(yīng)用案例。
對(duì)于數(shù)據(jù)庫(kù)選型,我們或多或少的存在輕視的問(wèn)題,把這件事想的簡(jiǎn)單了,過(guò)于技術(shù)化,過(guò)于理想化了。面臨企業(yè)數(shù)字化轉(zhuǎn)型,我們?cè)谶@方面稍微謹(jǐn)慎一些也不為過(guò)。對(duì)于一些新建的小系統(tǒng),采用RDS也好,采用開(kāi)源數(shù)據(jù)庫(kù)也好,基于開(kāi)源數(shù)據(jù)庫(kù)的特點(diǎn)把應(yīng)用優(yōu)化好,應(yīng)該問(wèn)題也不大,足以應(yīng)付目前信息系統(tǒng)建設(shè)的需求了。而對(duì)于關(guān)鍵性的核心業(yè)務(wù)系統(tǒng),其選型是需要多想一想的,哪怕稍微慢一點(diǎn)也沒(méi)關(guān)系,如果選定方向,應(yīng)用改造、運(yùn)維支撐、人才培養(yǎng)與儲(chǔ)備等一定要抓緊先行。最頭疼的問(wèn)題也許是大量的存量系統(tǒng)了,這些系統(tǒng)目前先維持現(xiàn)狀是沒(méi)問(wèn)題的,不過(guò)隨著時(shí)間的推移,這些系統(tǒng)使用的老舊的數(shù)據(jù)庫(kù)早晚是要淘汰的,這些系統(tǒng)的遷移也是必須要面臨的問(wèn)題,這個(gè)問(wèn)題雖然可以拖一拖,不過(guò)我想還是早點(diǎn)動(dòng)手會(huì)更主動(dòng)一些。