資料庫選型繞不開“CAP定理”是什麼
導讀 |
這兩年,不管是傳統資料庫廠商,還是雲端計算大廠,都在主推“雲資料庫”,對於雲資料庫概念,不同人有不同理解,可以說是眾說紛紜。那麼,到底什麼是雲資料庫?資料庫從本地遷移到雲上,就是雲資料庫嗎?
|
與80年代初期相比,今天的資料庫技術,可以說是取得了長足猛進的發展。不僅在硬體的選擇上,不再視大型機為唯一,還可以根據具體的業務需求,選擇更貼近業務場景需求的資料庫產品。
如今,軟、硬體技術在不斷進步,使得資料庫的種類發生了翻天覆地的變化。除了過去常用的關係型資料庫,我們還可以選擇時序資料庫、圖資料庫、文字資料庫等等。有的資料庫只支援單一資料處理,有的資料庫可支援多種資料共用同一個例項。一些專門用於線上事務處理的資料庫,叫做 OLTP;一些專門用於分析型業務的資料庫叫做 OLAP。而能夠把兩者結合起來的,叫做HTAP。
總之,你可以把資料庫放在任意地方,可隨時隨地訪問你的資料,或者隨意遷移資料。比如:你可以把智慧手機上的資料遷移到本地的資料中心伺服器,還可以從本地伺服器遷移到雲資料庫上。
那麼,問題來啦,什麼是雲資料庫?
這兩年,不管是傳統資料庫廠商,還是雲端計算大廠,都在主推“雲資料庫”,對於雲資料庫概念,不同人有不同理解,可以說是眾說紛紜。那麼,到底什麼是雲資料庫?資料庫從本地遷移到雲上,就是雲資料庫嗎?
從定義來看,雲資料庫是指被最佳化或部署到一個虛擬計算環境中的資料庫,最顯著的優勢是可以獲得按需付費、按需擴充套件、高可用性以及儲存整合等能力。所以,雲資料庫即可以在本地執行,也可以透過專有云的方式執行,同時與本地資料庫相容。另外,有些雲端計算大廠推崇的是雲原生資料庫,這意味著整個資料架構都需要使用公有云廠商提供的服務。
不管大家如何看待雲資料庫,有一點可以確定,那就是資料庫不是一個簡單的軟體應用,而是涉及到應用程式的後端和儲存層。即資料從前端傳到後臺,後臺與資料庫直接關聯。同時,按照CAP定理,在一致性、可用性、分割槽容錯性三者之間,不可能三者兼顧,而是最多同時兼顧兩項。
也就是說,如何選擇一個理想資料庫,取決於應用程式需求。如果只用於顯示應用程式的目錄,那麼資料庫的讀取速度和延遲時間很重要,這時文件資料庫可能是理想型選擇,當然很多關係型資料庫和寬列資料庫也能適用。如果是金融交易式應用程式處理,那麼如何滿足資料庫的 ACID 屬性(原子性、一致性、隔離性和永續性)就變得非常重要,這時關係型資料庫顯然是最佳選擇。
隨著資料庫技術的不斷成熟,資料庫選型也在突破傳統技術架構的侷限。比如:在滿足現代化業務需求的分散式資料庫架構中,節點故障和分割槽容錯性可以透過使用 Paxos 或 Raft 共識演算法來解決。本質上,當一個節點退出叢集時,只要它有仲裁,叢集就能繼續工作。此外,這種分割槽的思想在私有云內部網路中很少見,類似於雲服務提供商提供的那種分散式架構服務,在本地資料中心是透過光纖冗餘來實現,並且不透過公網傳輸佔據內部流量。
所以,總的來看,雖然沒有任何技術可以繞過CAP 定理,但好的雲資料庫具有超過五個九 (99.999%) 的可用性,從一定程度上大大提高了資料庫的一致性和可用性水平。比如:針對多人遊戲場景,讀寫能力和延遲性都很重要,這時分散式資料庫架構,可以很好地解決這一問題。如果不是強一致性業務以及關係型業務,鍵值資料庫可能是理想選擇。如果是感測器之類的資料輸入輸出,可以快速大量寫入的時序資料庫,表現會更好。
另外,任何雲資料庫都可以處理少量以及大量資料。少的可以處理以千兆位元組或更少單位的資料。而具有大資料處理能力的雲資料庫,可以處理 TB級資料(數千 GB),包括少數資料庫可以容納 PB級(數百萬 GB)。
需要重點強調的是,大多數雲資料庫會按月向您收取儲存費用,SSD 儲存的費用要高於磁碟儲存。另外,過高的資料處理速度也會給其他指標帶來影響,例如資料庫寫入速度和網路容量受到限制。 如果資料量突增,資料庫或前端程式可能需要在寫入永久儲存時將其緩衝在 RAM 中,以避免資料丟失。
無論你選擇什麼樣的資料庫,都不要忘記在投入生產前進行大量測試。另外,也並不是所有的雲資料庫,都要需要你100%地把本地資料庫遷移到雲上。同時,一旦資料庫上雲,就要做好監控和防護措施,出現問題時要有預警機制,能夠快速遷移到備份方案中。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2792086/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是CAP定理?
- 是什麼影響了資料庫索引選型?資料庫索引
- 不建議開發來做資料庫選型資料庫
- 資料庫是什麼意思?有什麼用?有哪些型別?資料庫型別
- CAP定理為什麼只能同時滿足兩個
- Chronicles 是什麼資料庫資料庫
- 什麼是皇帝資料庫?資料庫
- 什麼是Cassandra資料庫資料庫
- CAP 定理的含義
- CAP定理的缺點
- 【資料庫】雲資料庫rds是什麼意思?有什麼優勢?資料庫
- 什麼是資料庫檢視?資料庫
- MySQL資料庫是什麼?linux資料庫運維MySql資料庫Linux運維
- 雲資料庫RDS是什麼?雲資料庫RDS有什麼優勢?資料庫
- 什麼是大資料?大資料開發是做什麼的?大資料
- 資料型別是什麼?Python的資料型別又有哪些?資料型別Python
- 資料庫:外來鍵是什麼資料庫
- 到底什麼是雲原生資料庫?資料庫
- 什麼是真正的自治資料庫?資料庫
- 資料庫倉庫系列:(一)什麼是資料倉儲,為什麼要資料倉儲資料庫
- 資料量與資料庫選型資料庫
- 【TcaplusDB知識庫】什麼是TcaplusDB資料庫?資料庫
- 資料結構中抽象資料型別是什麼?資料結構抽象資料型別
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 資料庫審計是什麼意思?作用是什麼?資料庫
- 什麼是大資料開發?大資料
- 分散式理論(一) - CAP定理分散式
- 分散式系統CAP定理教程分散式
- 帝國cms配置資料庫是什麼資料庫
- flask資料庫遷移是什麼意思Flask資料庫
- MySQL資料庫的優勢是什麼?MySql資料庫
- 為什麼要選擇分散式資料庫?分散式資料庫
- 為什麼新的資料庫會議還在不斷早開?資料庫
- 帝國cms配置資料庫命令是什麼資料庫
- 前端技術分享:什麼是MongoDB資料庫?前端MongoDB資料庫
- 為什麼PostgreSQL是最成功的資料庫?SQL資料庫
- 一張圖完美解釋CAP定理
- 什麼是寫程式碼及基本資料型別資料型別