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