應(yīng)用

技術(shù)

物聯(lián)網(wǎng)世界 >> 物聯(lián)網(wǎng)新聞 >> 物聯(lián)網(wǎng)熱點(diǎn)新聞
企業(yè)注冊個人注冊登錄

云數(shù)據(jù)庫選型也繞不開“CAP定理”?

2021-08-26 14:26 IT168網(wǎng)站

導(dǎo)讀:這兩年,不管是傳統(tǒng)數(shù)據(jù)庫廠商,還是云計(jì)算大廠,都在主推“云數(shù)據(jù)庫”,對于云數(shù)據(jù)庫概念,不同人有不同理解,可以說是眾說紛紜。那么,到底什么是云數(shù)據(jù)庫?數(shù)據(jù)庫從本地遷移到云上,就是云數(shù)據(jù)庫嗎?

與80年代初期相比,今天的數(shù)據(jù)庫技術(shù),可以說是取得了長足猛進(jìn)的發(fā)展。不僅在硬件的選擇上,不再視大型機(jī)為唯一,還可以根據(jù)具體的業(yè)務(wù)需求,選擇更貼近業(yè)務(wù)場景需求的數(shù)據(jù)庫產(chǎn)品。

如今,軟、硬件技術(shù)在不斷進(jìn)步,使得數(shù)據(jù)庫的種類發(fā)生了翻天覆地的變化。除了過去常用的關(guān)系型數(shù)據(jù)庫,我們還可以選擇時序數(shù)據(jù)庫、圖數(shù)據(jù)庫、文本數(shù)據(jù)庫等等。有的數(shù)據(jù)庫只支持單一數(shù)據(jù)處理,有的數(shù)據(jù)庫可支持多種數(shù)據(jù)共用同一個實(shí)例。一些專門用于在線事務(wù)處理的數(shù)據(jù)庫,叫做 OLTP;一些專門用于分析型業(yè)務(wù)的數(shù)據(jù)庫叫做 OLAP。而能夠把兩者結(jié)合起來的,叫做HTAP。

總之,你可以把數(shù)據(jù)庫放在任意地方,可隨時隨地訪問你的數(shù)據(jù),或者隨意遷移數(shù)據(jù)。比如:你可以把智能手機(jī)上的數(shù)據(jù)遷移到本地的數(shù)據(jù)中心服務(wù)器,還可以從本地服務(wù)器遷移到云數(shù)據(jù)庫上。

那么,問題來啦,什么是云數(shù)據(jù)庫?

這兩年,不管是傳統(tǒng)數(shù)據(jù)庫廠商,還是云計(jì)算大廠,都在主推“云數(shù)據(jù)庫”,對于云數(shù)據(jù)庫概念,不同人有不同理解,可以說是眾說紛紜。那么,到底什么是云數(shù)據(jù)庫?數(shù)據(jù)庫從本地遷移到云上,就是云數(shù)據(jù)庫嗎?

從定義來看,云數(shù)據(jù)庫是指被優(yōu)化或部署到一個虛擬計(jì)算環(huán)境中的數(shù)據(jù)庫,最顯著的優(yōu)勢是可以獲得按需付費(fèi)、按需擴(kuò)展、高可用性以及存儲整合等能力。所以,云數(shù)據(jù)庫即可以在本地運(yùn)行,也可以通過專有云的方式運(yùn)行,同時與本地?cái)?shù)據(jù)庫兼容。另外,有些云計(jì)算大廠推崇的是云原生數(shù)據(jù)庫,這意味著整個數(shù)據(jù)架構(gòu)都需要使用公有云廠商提供的服務(wù)。

不管大家如何看待云數(shù)據(jù)庫,有一點(diǎn)可以確定,那就是數(shù)據(jù)庫不是一個簡單的軟件應(yīng)用,而是涉及到應(yīng)用程序的后端和存儲層。即數(shù)據(jù)從前端傳到后臺,后臺與數(shù)據(jù)庫直接關(guān)聯(lián)。同時,按照CAP定理,在一致性、可用性、分區(qū)容錯性三者之間,不可能三者兼顧,而是最多同時兼顧兩項(xiàng)。

也就是說,如何選擇一個理想數(shù)據(jù)庫,取決于應(yīng)用程序需求。如果只用于顯示應(yīng)用程序的目錄,那么數(shù)據(jù)庫的讀取速度和延遲時間很重要,這時文檔數(shù)據(jù)庫可能是理想型選擇,當(dāng)然很多關(guān)系型數(shù)據(jù)庫和寬列數(shù)據(jù)庫也能適用。如果是金融交易式應(yīng)用程序處理,那么如何滿足數(shù)據(jù)庫的 ACID 屬性(原子性、一致性、隔離性和持久性)就變得非常重要,這時關(guān)系型數(shù)據(jù)庫顯然是最佳選擇。

隨著數(shù)據(jù)庫技術(shù)的不斷成熟,數(shù)據(jù)庫選型也在突破傳統(tǒng)技術(shù)架構(gòu)的局限。比如:在滿足現(xiàn)代化業(yè)務(wù)需求的分布式數(shù)據(jù)庫架構(gòu)中,節(jié)點(diǎn)故障和分區(qū)容錯性可以通過使用 Paxos 或 Raft 共識算法來解決。本質(zhì)上,當(dāng)一個節(jié)點(diǎn)退出集群時,只要它有仲裁,集群就能繼續(xù)工作。此外,這種分區(qū)的思想在私有云內(nèi)部網(wǎng)絡(luò)中很少見,類似于云服務(wù)提供商提供的那種分布式架構(gòu)服務(wù),在本地?cái)?shù)據(jù)中心是通過光纖冗余來實(shí)現(xiàn),并且不通過公網(wǎng)傳輸占據(jù)內(nèi)部流量。

所以,總的來看,雖然沒有任何技術(shù)可以繞過CAP 定理,但好的云數(shù)據(jù)庫具有超過五個九 (99.999%) 的可用性,從一定程度上大大提高了數(shù)據(jù)庫的一致性和可用性水平。比如:針對多人游戲場景,讀寫能力和延遲性都很重要,這時分布式數(shù)據(jù)庫架構(gòu),可以很好地解決這一問題。如果不是強(qiáng)一致性業(yè)務(wù)以及關(guān)系型業(yè)務(wù),鍵值數(shù)據(jù)庫可能是理想選擇。如果是傳感器之類的數(shù)據(jù)輸入輸出,可以快速大量寫入的時序數(shù)據(jù)庫,表現(xiàn)會更好。

另外,任何云數(shù)據(jù)庫都可以處理少量以及大量數(shù)據(jù)。少的可以處理以千兆字節(jié)或更少單位的數(shù)據(jù)。而具有大數(shù)據(jù)處理能力的云數(shù)據(jù)庫,可以處理 TB級數(shù)據(jù)(數(shù)千 GB),包括少數(shù)數(shù)據(jù)庫可以容納 PB級(數(shù)百萬 GB)。

需要重點(diǎn)強(qiáng)調(diào)的是,大多數(shù)云數(shù)據(jù)庫會按月向您收取存儲費(fèi)用,SSD 存儲的費(fèi)用要高于磁盤存儲。另外,過高的數(shù)據(jù)處理速度也會給其他指標(biāo)帶來影響,例如數(shù)據(jù)庫寫入速度和網(wǎng)絡(luò)容量受到限制。 如果數(shù)據(jù)量突增,數(shù)據(jù)庫或前端程序可能需要在寫入永久存儲時將其緩沖在 RAM 中,以避免數(shù)據(jù)丟失。

無論你選擇什么樣的數(shù)據(jù)庫,都不要忘記在投入生產(chǎn)前進(jìn)行大量測試。另外,也并不是所有的云數(shù)據(jù)庫,都要需要你100%地把本地?cái)?shù)據(jù)庫遷移到云上。同時,一旦數(shù)據(jù)庫上云,就要做好監(jiān)控和防護(hù)措施,出現(xiàn)問題時要有預(yù)警機(jī)制,能夠快速遷移到備份方案中。