NoSQL入門(mén)級(jí)整理(CAP原理、最終一致性) (3)_第1頁(yè)
NoSQL入門(mén)級(jí)整理(CAP原理、最終一致性) (3)_第2頁(yè)
NoSQL入門(mén)級(jí)整理(CAP原理、最終一致性) (3)_第3頁(yè)
NoSQL入門(mén)級(jí)整理(CAP原理、最終一致性) (3)_第4頁(yè)
NoSQL入門(mén)級(jí)整理(CAP原理、最終一致性) (3)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)面臨的挑戰(zhàn)l High Performance對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的需求l Huge Storage對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)的需求l High Scalability & High Availablity對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求。 對(duì)于當(dāng)前的很多網(wǎng)站來(lái)說(shuō),關(guān)系數(shù)據(jù)庫(kù)的很多主要特性往往無(wú)用武之地,例如:l 數(shù)據(jù)庫(kù)事務(wù)一致性需求很多系統(tǒng)并不要求嚴(yán)格的數(shù)據(jù)庫(kù)事務(wù),對(duì)讀一致性的要求很低,因此數(shù)據(jù)庫(kù)事務(wù)管理成了數(shù)據(jù)庫(kù)高負(fù)載下一個(gè)沉重的負(fù)擔(dān)。l 數(shù)據(jù)庫(kù)的實(shí)時(shí)性需求對(duì)關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō),插入一條數(shù)據(jù)后立刻查詢(xún),是肯定可以讀出來(lái)這條數(shù)據(jù)的,但是對(duì)于很多Web應(yīng)用而言,并

2、不要求這么高的實(shí)時(shí)性,比方說(shuō)我發(fā)一條微博之后,過(guò)幾秒乃至十幾秒后,別人才提示有新微博,這是完全可以的。l 對(duì)復(fù)雜的SQL查詢(xún),特別是多表關(guān)聯(lián)查詢(xún)的需求大數(shù)據(jù)量的Web系統(tǒng),非常忌諱多個(gè)大表的關(guān)聯(lián)查詢(xún),以及復(fù)雜的數(shù)據(jù)分析類(lèi)型的SQL報(bào)表查詢(xún),特別是SNS類(lèi)型的網(wǎng)站,從需求以及產(chǎn)品設(shè)計(jì)角度,就避免這種情況的產(chǎn)生。往往更多的只是單表的主鍵查詢(xún),以及單表的簡(jiǎn)單條件分布查詢(xún),SQL的功能被極大地弱化了。 什么是NoSQL現(xiàn)在一般認(rèn)為NoSQL全稱(chēng)是Not Only SQL,是一種不同于關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)設(shè)計(jì)方式。對(duì)NoSQL最普遍的解釋是“非關(guān)系型的”,強(qiáng)調(diào)Key-Value Sto

3、res和文檔數(shù)據(jù)庫(kù)的優(yōu)點(diǎn),而不是單純的反對(duì)RDBMS。  NoSQL的理論基礎(chǔ)CAP,BASE和最終一致性是NoSQL數(shù)據(jù)庫(kù)存在的三大基石。 ACID vs. BASEACID,指數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素的縮寫(xiě)。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。 (這張PPT是Brewer教授在PODC大會(huì)上用的PPT。) BASE內(nèi)容:l Basically Availble 基本可用l Soft-state 軟狀態(tài)/柔性事務(wù),狀態(tài)可以有一段時(shí)間不同步l Even

4、tual Consistency 最終一致性 CAP原理 分布式系統(tǒng)中,有三種重要的屬性,分別是:l 一致性(Consistency):任何一個(gè)讀操作總是能讀取到之前完成的寫(xiě)操作結(jié)果,也就是在分布式環(huán)境中,多點(diǎn)的數(shù)據(jù)是一致的。l 可用性(Availability):每一個(gè)操作總是能夠在確定的時(shí)間內(nèi)返回,也就是系統(tǒng)隨時(shí)都是可用的。l 分區(qū)容忍性(Tolerance of network Partition):在出現(xiàn)網(wǎng)絡(luò)分區(qū)(比如斷網(wǎng))的情況下,分離的系統(tǒng)也能正常運(yùn)行。CAP原理的意思是,一個(gè)分布式系統(tǒng)不能同時(shí)滿足一致性,可用性和分區(qū)容錯(cuò)性這三個(gè)需求,最多只能同時(shí)滿足兩個(gè)。&#

5、160;注意:可用性與分區(qū)容忍性在一些情況下很容易混淆。舉個(gè)例子,假設(shè)系統(tǒng)中有若干個(gè)節(jié)點(diǎn)宕機(jī)了,系統(tǒng)仍然能正常運(yùn)行,那么應(yīng)該說(shuō)是系統(tǒng)的可用性高還是分區(qū)容忍性高呢?個(gè)人的理解是,這種應(yīng)該理解為系統(tǒng)的分區(qū)容忍性高。因?yàn)槿舾蓚€(gè)節(jié)點(diǎn)宕機(jī),可以理解為這幾個(gè)節(jié)點(diǎn)與其它正常的節(jié)點(diǎn)失去聯(lián)系了,也就是出現(xiàn)了網(wǎng)絡(luò)分區(qū),按照定義,這屬于分區(qū)容忍性的范疇。那么可用性是什么?個(gè)人的理解可用性更多強(qiáng)調(diào)的是,系統(tǒng)對(duì)于讀寫(xiě)操作的反應(yīng)快慢,反應(yīng)越快,可用性越高。 CAP原理是由美國(guó)著名科學(xué)家,Berkerly大學(xué)Brewer教授提出的。后來(lái)麻省理工學(xué)院的兩位科學(xué)家證明了CAP原理的正確性。雖然在后來(lái)近十年的時(shí)間很多人

6、對(duì)CAP原理出了很多異議,但是在NoSQL的世界中,它還是非常有參考價(jià)值的。 一致性or可用性,魚(yú)和熊掌不可得兼下面是一個(gè)犧牲一致性換取可用性的小例子。假設(shè)N1和N2是分布式環(huán)境下的兩個(gè)節(jié)點(diǎn),它們有保存了共同的數(shù)據(jù)V,它們的值都是V0,A和B是兩個(gè)分別對(duì)數(shù)據(jù)進(jìn)行操作的進(jìn)程。我們看看這么一個(gè)過(guò)程:A向N1節(jié)點(diǎn)寫(xiě)入了新的V值V1,B讀取V的值。如果一切正常的話,這個(gè)過(guò)程看起來(lái)像是這樣的:(1) A寫(xiě)入V的新值V1。(2) N1向N2發(fā)送消息M以更新V值。(3) B讀取V的新值V2。  但是現(xiàn)實(shí)可能是這樣子的:  由于網(wǎng)絡(luò)分區(qū),N

7、1發(fā)向N2的消息很有可能沒(méi)送達(dá),那么,B節(jié)點(diǎn)將讀取到一個(gè)過(guò)時(shí)的V值,不一致性產(chǎn)生了。并且當(dāng)把節(jié)點(diǎn)的規(guī)模不斷擴(kuò)大的時(shí)候,不一致性問(wèn)題也會(huì)更加嚴(yán)重。所以如果我們希望A B都是高可用的(也就是低延遲),那么一致性通常就不能得到很好的保證,我們必須要容忍一定的不一致性以換取高可用性。 從客戶(hù)端角度看一致性有很多種客戶(hù)端一致性模型:強(qiáng)一致性:讀取到的數(shù)據(jù)總是最新的。弱一致性:讀取到的數(shù)據(jù)不一定是最新的。最終一致性:屬于弱一致性,不同的是,最終一致性的系統(tǒng)會(huì)在后臺(tái)異步地更新所有的備份,所以最終所有的備份都會(huì)是最新的數(shù)據(jù)。最終一致性有一些比較重要的變種,例如:因果一致性:如果進(jìn)程A更新了某數(shù)據(jù),并

8、通知進(jìn)程B,那么進(jìn)程B接下來(lái)的讀操作將一定會(huì)讀取到最新的數(shù)據(jù),寫(xiě)操作一定能覆蓋之前的數(shù)據(jù)。而另一與進(jìn)程A無(wú)關(guān)的進(jìn)程C則服從最終一致性的情況?!白x己之所寫(xiě)”一致性:客戶(hù)端可以立即看到自己所作的更新,但不能立即看到其他客戶(hù)端的更新。會(huì)話一致性:對(duì)于客戶(hù)端在一同會(huì)話作用域中發(fā)起的請(qǐng)求,提供“讀己之所寫(xiě)”一致性。單調(diào)讀一致性:保證時(shí)間上的單調(diào)性,保證客戶(hù)端在未來(lái)的請(qǐng)求中,只會(huì)讀到比當(dāng)前更為新的數(shù)據(jù)。  從服務(wù)器端角度看一致性我們利用一個(gè)數(shù)學(xué)模型來(lái)分析一下服務(wù)器端對(duì)于一致性的實(shí)現(xiàn)。了解完這個(gè)部分,對(duì)于具體NoSQL數(shù)據(jù)庫(kù)的理解和分析就能事半功倍了。 Quorum NRW 模

9、型先看下面這個(gè)圖,并定義一些變量。 l N:存儲(chǔ)備份的節(jié)點(diǎn)數(shù)目,可以理解為備份的數(shù)目。l W:更新(寫(xiě))操作成功之前所必須更新的最少備份數(shù)目。假設(shè)W=3,表示至少等到3個(gè)備份的數(shù)據(jù)得到更新時(shí),更新操作才算完成。l R:讀操作所需要連接的最少備份數(shù)目。假設(shè)R=3,表示讀取一個(gè)數(shù)據(jù)時(shí),至少要讀取到這個(gè)數(shù)據(jù)的3個(gè)備份,然后選其中最新的備份。 調(diào)整N、W、R的取值,數(shù)據(jù)庫(kù)系統(tǒng)的性質(zhì)就會(huì)發(fā)生改變。l N越大,同一個(gè)數(shù)據(jù)的備份越多,系統(tǒng)相對(duì)也就越不容易丟失數(shù)據(jù)。l W越大,系統(tǒng)的一致性會(huì)越高,但更新操作也就越慢。l R越大,系統(tǒng)的一致性會(huì)越高,但讀操作也就越慢。l W+R>N,系

10、統(tǒng)是強(qiáng)一致性的。為什么?舉例來(lái)說(shuō),假設(shè)N=6,W=R=3,當(dāng)一個(gè)更新操作完成的時(shí)候,它至少更新了6個(gè)備份中的3個(gè)備份,那么當(dāng)我們?nèi)プx取這個(gè)數(shù)據(jù)的時(shí)候,因?yàn)镽=3,所以我們至少得讀3個(gè)數(shù)據(jù),并從中選擇最新的數(shù)據(jù),而W+R>N就意味著讀取的3個(gè)數(shù)據(jù)跟更新的3個(gè)數(shù)據(jù)至少有一個(gè)是重疊的,所以讀取的3個(gè)數(shù)據(jù)中一定存在最新的數(shù)據(jù),因而就能保證系統(tǒng)是強(qiáng)一致性的。l W+R<=N,系統(tǒng)是弱一致性的。 幾種特殊情況:l W = 1,R = N,對(duì)寫(xiě)操作要求高性能高可用。l R = 1,W = N,對(duì)讀操作要求高性能高可用,比如類(lèi)似cache之類(lèi)業(yè)務(wù)。l W = R = N / 2 + 1 一般應(yīng)用適用,讀寫(xiě)性能之間取得平衡。如N=3,W=2,R=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論