數據庫選型繞不開“CAP定理”是什麼

這兩年,不管是傳統數據庫廠商,還是雲計算大廠,都在主推“雲數據庫”,對於雲數據庫概念,不同人有不同理解,可以說是衆說紛紜。那麼,到底什麼是雲數據庫?數據庫從本地遷移到雲上,就是雲數據庫嗎?

與80年代初期相比,今天的數據庫技術,可以說是取得了長足猛進的發展。不僅在硬件的選擇上,不再視大型機爲唯一,還可以根據具體的業務需求,選擇更貼近業務場景需求的數據庫產品。

數據庫選型繞不開“CAP定理”是什麼數據庫選型繞不開“CAP定理”是什麼

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

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

那麼,問題來啦,什麼是雲數據庫?

這兩年,不管是傳統數據庫廠商,還是雲計算大廠,都在主推“雲數據庫”,對於雲數據庫概念,不同人有不同理解,可以說是衆說紛紜。那麼,到底什麼是雲數據庫?數據庫從本地遷移到雲上,就是雲數據庫嗎?

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

不管大家如何看待雲數據庫,有一點可以確定,那就是數據庫不是一個簡單的軟件應用,而是涉及到應用程序的後端和存儲層。即數據從前端傳到後臺,後臺與數據庫直接關聯。同時,按照CAP定理,在一致性、可用性、分區容錯性三者之間,不可能三者兼顧,而是最多同時兼顧兩項。

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

隨着數據庫技術的不斷成熟,數據庫選型也在突破傳統技術架構的侷限。比如:在滿足現代化業務需求的分佈式數據庫架構中,節點故障和分區容錯性可以通過使用 Paxos 或 Raft 共識算法來解決。本質上,當一個節點退出集羣時,只要它有仲裁,集羣就能繼續工作。此外,這種分區的思想在私有云內部網絡中很少見,類似於雲服務提供商提供的那種分佈式架構服務,在本地數據中心是通過光纖冗餘來實現,並且不通過公網傳輸佔據內部流量。

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

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

需要重點強調的是,大多數雲數據庫會按月向您收取存儲費用,SSD 存儲的費用要高於磁盤存儲。另外,過高的數據處理速度也會給其他指標帶來影響,例如數據庫寫入速度和網絡容量受到限制。 如果數據量突增,數據庫或前端程序可能需要在寫入永久存儲時將其緩衝在 RAM 中,以避免數據丟失。

無論你選擇什麼樣的數據庫,都不要忘記在投入生產前進行大量測試。另外,也並不是所有的雲數據庫,都要需要你100%地把本地數據庫遷移到雲上。同時,一旦數據庫上雲,就要做好監控和防護措施,出現問題時要有預警機制,能夠快速遷移到備份方案中。

本文地址:https://www.linuxprobe.com/database-cap.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章