NoSQL 中的 CAP
1、CAP概述
CAP理論 是由 EricBrewer 教授 提出的,在設(shè)計(jì)和部署分布式應(yīng)用的時(shí)候,存在三個(gè)核心的系統(tǒng)需求,這個(gè)三個(gè)需求之間存在一定的特殊關(guān)系。三個(gè)需求如下:
C: Consistency (一致性)
A: Availability (可用性)
P: Partition Tolerance (分區(qū)容錯(cuò)性)
CAP理論的核心是:一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿足 一致性,可用性和分區(qū)容錯(cuò)性這三個(gè)需求,最多只能同時(shí)較好的滿足兩個(gè)。
因此,根據(jù)CAP原理,將NoSQL數(shù)據(jù)庫分成滿足CA原則、CP原則和AP原則 三大類:
CA - 單點(diǎn)集群,滿足一致性,可用性的系統(tǒng),通常在可擴(kuò)展性上不太強(qiáng)大。 (傳統(tǒng)數(shù)據(jù)庫)
CP - 滿足一致性,分區(qū)容忍性的系統(tǒng),通常性能不是特別高。 (Redis、MongoDB)
AP - 滿足可用性,分區(qū)容忍性的系統(tǒng),通常可能對一致性要求低一些。 (大多數(shù)網(wǎng)站架構(gòu)的選擇)
2、CAP定義
(1)、Consistency 一致性
一致性又稱為原子性或者事務(wù)性。表示一個(gè)事務(wù)的操作是不可分割的,要不然這個(gè)事務(wù)完成,要不然這個(gè)事務(wù)不完成,不會出現(xiàn)這個(gè)事務(wù)完成了一半這樣的情況。這種事務(wù)的原子性使得數(shù)據(jù)具有一致性。
我們通常情況下在數(shù)據(jù)庫中存在的臟數(shù)據(jù)就屬于數(shù)據(jù)沒有具有一致性的表現(xiàn)。而在分布式系統(tǒng)中,經(jīng)常出現(xiàn)的一個(gè)數(shù)據(jù)不具有一致性的情況是讀寫數(shù)據(jù)時(shí)缺乏一致性。比如兩個(gè)節(jié)點(diǎn)數(shù)據(jù)冗余,第一個(gè)節(jié)點(diǎn)有一個(gè)寫操作,數(shù)據(jù)更新以后沒有有效的使得第二個(gè)節(jié)點(diǎn)更新數(shù)據(jù),在讀取第二個(gè)節(jié)點(diǎn)的時(shí)候就會出現(xiàn)不一致的問題出現(xiàn)。
傳統(tǒng)的ACID數(shù)據(jù)庫是很少存在一致性問題的,因?yàn)閿?shù)據(jù)的單點(diǎn)原因,數(shù)據(jù)的存取又具有良好的事務(wù)性,不會出現(xiàn)讀寫的不一致。
(2)、Availability 可用性
好的可用性主要是指系統(tǒng)能夠很好的為用戶服務(wù),不出現(xiàn)用戶操作失敗或者訪問超時(shí)等用戶體驗(yàn)不好的情況。可用性通常情況下可用性和分布式數(shù)據(jù)冗余,負(fù)載均衡等有著很大的關(guān)聯(lián)。
(3)、Partition Tolerance 分區(qū)容錯(cuò)性
分區(qū)容錯(cuò)性和擴(kuò)展性緊密相關(guān)。在分布式應(yīng)用中,可能因?yàn)橐恍┓植际降脑驅(qū)е孪到y(tǒng)無法正常運(yùn)轉(zhuǎn)。好的分區(qū)容錯(cuò)性要求能夠使應(yīng)用雖然是一個(gè)分布式系統(tǒng),而看上去卻好像是在一個(gè)可以運(yùn)轉(zhuǎn)正常的整體。比如現(xiàn)在的分布式系統(tǒng)中有某一個(gè)或者幾個(gè)機(jī)器宕掉了,其他剩下的機(jī)器還能夠正常運(yùn)轉(zhuǎn)滿足系統(tǒng)需求,這樣就具有好的分區(qū)容錯(cuò)性。
3、CAP理論的意義
隨著互聯(lián)網(wǎng)應(yīng)用的飛速發(fā)展,數(shù)據(jù)量與日俱增,傳統(tǒng)的ACID數(shù)據(jù)庫已經(jīng)不能滿足如此大的海量數(shù)據(jù)存儲了。這個(gè)時(shí)候需要設(shè)計(jì)出好的分布式數(shù)據(jù)存儲方式。而這些分布式數(shù)據(jù)存儲方式受到CAP理論的約束,不可能達(dá)到高一致性,高可用性,高分區(qū)容錯(cuò)性的完美設(shè)計(jì)。所以我們在設(shè)計(jì)的時(shí)候要懂得取舍,重點(diǎn)關(guān)注對應(yīng)用需求來說比較重要的,而放棄不重要的,在CAP這三者之間進(jìn)行取舍,設(shè)計(jì)出貼合應(yīng)用的存儲方案。
相關(guān)文章鏈接
鏈接1: link.
鏈接2: link.
總結(jié)
以上是生活随笔為你收集整理的NoSQL 中的 CAP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一支笔,一颗心
- 下一篇: SQL Server 2000查询分析器