與80年代初期相比,今天的數(shù)據(jù)庫(kù)技術(shù),可以說(shuō)是取得了長(zhǎng)足猛進(jìn)的發(fā)展。不僅在硬件的選擇上,不再視大型機(jī)為唯一,還可以根據(jù)具體的業(yè)務(wù)需求,選擇更貼近業(yè)務(wù)場(chǎng)景需求的數(shù)據(jù)庫(kù)產(chǎn)品。
如今,軟、硬件技術(shù)在不斷進(jìn)步,使得數(shù)據(jù)庫(kù)的種類發(fā)生了翻天覆地的變化。除了過(guò)去常用的關(guān)系型數(shù)據(jù)庫(kù),我們還可以選擇時(shí)序數(shù)據(jù)庫(kù)、圖數(shù)據(jù)庫(kù)、文本數(shù)據(jù)庫(kù)等等。有的數(shù)據(jù)庫(kù)只支持單一數(shù)據(jù)處理,有的數(shù)據(jù)庫(kù)可支持多種數(shù)據(jù)共用同一個(gè)實(shí)例。一些專門(mén)用于在線事務(wù)處理的數(shù)據(jù)庫(kù),叫做OLTP;一些專門(mén)用于分析型業(yè)務(wù)的數(shù)據(jù)庫(kù)叫做OLAP。而能夠把兩者結(jié)合起來(lái)的,叫做HTAP。
總之,你可以把數(shù)據(jù)庫(kù)放在任意地方,可隨時(shí)隨地訪問(wèn)你的數(shù)據(jù),或者隨意遷移數(shù)據(jù)。比如:你可以把智能手機(jī)上的數(shù)據(jù)遷移到本地的數(shù)據(jù)中心服務(wù)器,還可以從本地服務(wù)器遷移到云數(shù)據(jù)庫(kù)上。
那么,問(wèn)題來(lái)啦,什么是云數(shù)據(jù)庫(kù)?
這兩年,不管是傳統(tǒng)數(shù)據(jù)庫(kù)廠商,還是云計(jì)算大廠,都在主推“云數(shù)據(jù)庫(kù)”,對(duì)于云數(shù)據(jù)庫(kù)概念,不同人有不同理解,可以說(shuō)是眾說(shuō)紛紜。那么,到底什么是云數(shù)據(jù)庫(kù)?數(shù)據(jù)庫(kù)從本地遷移到云上,就是云數(shù)據(jù)庫(kù)嗎?
從定義來(lái)看,云數(shù)據(jù)庫(kù)是指被優(yōu)化或部署到一個(gè)虛擬計(jì)算環(huán)境中的數(shù)據(jù)庫(kù),最顯著的優(yōu)勢(shì)是可以獲得按需付費(fèi)、按需擴(kuò)展、高可用性以及存儲(chǔ)整合等能力。所以,云數(shù)據(jù)庫(kù)即可以在本地運(yùn)行,也可以通過(guò)專有云的方式運(yùn)行,同時(shí)與本地?cái)?shù)據(jù)庫(kù)兼容。另外,有些云計(jì)算大廠推崇的是云原生數(shù)據(jù)庫(kù),這意味著整個(gè)數(shù)據(jù)架構(gòu)都需要使用公有云廠商提供的服務(wù)。
不管大家如何看待云數(shù)據(jù)庫(kù),有一點(diǎn)可以確定,那就是數(shù)據(jù)庫(kù)不是一個(gè)簡(jiǎn)單的軟件應(yīng)用,而是涉及到應(yīng)用程序的后端和存儲(chǔ)層。即數(shù)據(jù)從前端傳到后臺(tái),后臺(tái)與數(shù)據(jù)庫(kù)直接關(guān)聯(lián)。同時(shí),按照CAP定理,在一致性、可用性、分區(qū)容錯(cuò)性三者之間,不可能三者兼顧,而是最多同時(shí)兼顧兩項(xiàng)。
也就是說(shuō),如何選擇一個(gè)理想數(shù)據(jù)庫(kù),取決于應(yīng)用程序需求。如果只用于顯示應(yīng)用程序的目錄,那么數(shù)據(jù)庫(kù)的讀取速度和延遲時(shí)間很重要,這時(shí)文檔數(shù)據(jù)庫(kù)可能是理想型選擇,當(dāng)然很多關(guān)系型數(shù)據(jù)庫(kù)和寬列數(shù)據(jù)庫(kù)也能適用。如果是金融交易式應(yīng)用程序處理,那么如何滿足數(shù)據(jù)庫(kù)的ACID屬性(原子性、一致性、隔離性和持久性)就變得非常重要,這時(shí)關(guān)系型數(shù)據(jù)庫(kù)顯然是最佳選擇。
隨著數(shù)據(jù)庫(kù)技術(shù)的不斷成熟,數(shù)據(jù)庫(kù)選型也在突破傳統(tǒng)技術(shù)架構(gòu)的局限。比如:在滿足現(xiàn)代化業(yè)務(wù)需求的分布式數(shù)據(jù)庫(kù)架構(gòu)中,節(jié)點(diǎn)故障和分區(qū)容錯(cuò)性可以通過(guò)使用Paxos或Raft共識(shí)算法來(lái)解決。本質(zhì)上,當(dāng)一個(gè)節(jié)點(diǎn)退出集群時(shí),只要它有仲裁,集群就能繼續(xù)工作。此外,這種分區(qū)的思想在私有云內(nèi)部網(wǎng)絡(luò)中很少見(jiàn),類似于云服務(wù)提供商提供的那種分布式架構(gòu)服務(wù),在本地?cái)?shù)據(jù)中心是通過(guò)光纖冗余來(lái)實(shí)現(xiàn),并且不通過(guò)公網(wǎng)傳輸占據(jù)內(nèi)部流量。
所以,總的來(lái)看,雖然沒(méi)有任何技術(shù)可以繞過(guò)CAP定理,但好的云數(shù)據(jù)庫(kù)具有超過(guò)五個(gè)九(99.999%)的可用性,從一定程度上大大提高了數(shù)據(jù)庫(kù)的一致性和可用性水平。比如:針對(duì)多人游戲場(chǎng)景,讀寫(xiě)能力和延遲性都很重要,這時(shí)分布式數(shù)據(jù)庫(kù)架構(gòu),可以很好地解決這一問(wèn)題。如果不是強(qiáng)一致性業(yè)務(wù)以及關(guān)系型業(yè)務(wù),鍵值數(shù)據(jù)庫(kù)可能是理想選擇。如果是傳感器之類的數(shù)據(jù)輸入輸出,可以快速大量寫(xiě)入的時(shí)序數(shù)據(jù)庫(kù),表現(xiàn)會(huì)更好。
另外,任何云數(shù)據(jù)庫(kù)都可以處理少量以及大量數(shù)據(jù)。少的可以處理以千兆字節(jié)或更少單位的數(shù)據(jù)。而具有大數(shù)據(jù)處理能力的云數(shù)據(jù)庫(kù),可以處理TB級(jí)數(shù)據(jù)(數(shù)千GB),包括少數(shù)數(shù)據(jù)庫(kù)可以容納PB級(jí)(數(shù)百萬(wàn)GB)。
需要重點(diǎn)強(qiáng)調(diào)的是,大多數(shù)云數(shù)據(jù)庫(kù)會(huì)按月向您收取存儲(chǔ)費(fèi)用,SSD存儲(chǔ)的費(fèi)用要高于磁盤(pán)存儲(chǔ)。另外,過(guò)高的數(shù)據(jù)處理速度也會(huì)給其他指標(biāo)帶來(lái)影響,例如數(shù)據(jù)庫(kù)寫(xiě)入速度和網(wǎng)絡(luò)容量受到限制。如果數(shù)據(jù)量突增,數(shù)據(jù)庫(kù)或前端程序可能需要在寫(xiě)入永久存儲(chǔ)時(shí)將其緩沖在RAM中,以避免數(shù)據(jù)丟失。
無(wú)論你選擇什么樣的數(shù)據(jù)庫(kù),都不要忘記在投入生產(chǎn)前進(jìn)行大量測(cè)試。另外,也并不是所有的云數(shù)據(jù)庫(kù),都要需要你100%地把本地?cái)?shù)據(jù)庫(kù)遷移到云上。同時(shí),一旦數(shù)據(jù)庫(kù)上云,就要做好監(jiān)控和防護(hù)措施,出現(xiàn)問(wèn)題時(shí)要有預(yù)警機(jī)制,能夠快速遷移到備份方案中。