常見的理解及分析
創(chuàng)新互聯(lián)專注于城步網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供城步營(yíng)銷型網(wǎng)站建設(shè),城步網(wǎng)站制作、城步網(wǎng)頁(yè)設(shè)計(jì)、城步網(wǎng)站官網(wǎng)定制、微信平臺(tái)小程序開發(fā)服務(wù),打造城步網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供城步網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
目前流行的、對(duì)CAP理論解釋的情形是從同一數(shù)據(jù)在網(wǎng)絡(luò)環(huán)境中的多個(gè)副本出發(fā)的。為了保證數(shù)據(jù)不會(huì)丟失,在企業(yè)級(jí)的數(shù)據(jù)管理方案中,一般必須考慮數(shù)據(jù)的冗余存儲(chǔ)問(wèn)題,而這應(yīng)該是通過(guò)在網(wǎng)絡(luò)上的其他獨(dú)立物理存儲(chǔ)節(jié)點(diǎn)上保留另一份、或多份數(shù)據(jù)副本來(lái)實(shí)現(xiàn)的(如附圖所示)。因?yàn)樵谕粋€(gè)存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)冗余明顯不能解決單點(diǎn)故障問(wèn)題,這與通過(guò)多節(jié)點(diǎn)集群來(lái)提供更好的計(jì)算可用性的道理是相同的。
附圖 CAP理論示意圖
其實(shí),不用做嚴(yán)格的證明也可以想見,如附圖的情況,數(shù)據(jù)在節(jié)點(diǎn)A、B、C上保留了三份,如果對(duì)節(jié)點(diǎn)A上的數(shù)據(jù)進(jìn)行了修改,然后再讓客戶端通過(guò)網(wǎng)絡(luò)對(duì)該數(shù)據(jù)進(jìn)行讀取。那么,客戶端的讀取操作什么時(shí)候返回呢?
有這樣兩種情況:一種情況是要求節(jié)點(diǎn)A、B、C的三份數(shù)據(jù)完全一致后返回。也就是說(shuō),這時(shí)從任何一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)讀取的數(shù)據(jù)都是一樣的,這就是所謂的強(qiáng)一致性讀。很明顯,這時(shí)數(shù)據(jù)讀取的Latency要高一些(因?yàn)橐葦?shù)據(jù)在網(wǎng)絡(luò)中的復(fù)制),同時(shí)A、B、C三個(gè)節(jié)點(diǎn)中任何一個(gè)宕機(jī),都會(huì)導(dǎo)致數(shù)據(jù)不可用。也就是說(shuō),要保證強(qiáng)一致性,網(wǎng)絡(luò)中的副本越多,數(shù)據(jù)的可用性就越差;
另一種情況是,允許讀操作立即返回,容忍B節(jié)點(diǎn)的讀取與A節(jié)點(diǎn)的讀取不一致的情況發(fā)生。這樣一來(lái),可用性顯然得到了提高,網(wǎng)絡(luò)中的副本也可以多一些,唯一得不到保證的是數(shù)據(jù)一致性。當(dāng)然,對(duì)寫操作同樣也有多個(gè)節(jié)點(diǎn)一致性的情況,在此不再贅述。
可以看出,上述對(duì)CAP理論的解釋主要是從網(wǎng)絡(luò)上多個(gè)節(jié)點(diǎn)之間的讀寫一致性出發(fā)考慮問(wèn)題的。而這一點(diǎn),對(duì)于關(guān)系型數(shù)據(jù)庫(kù)意味著什么呢?當(dāng)然主要是指通常所說(shuō)的Standby(關(guān)于分布式事務(wù),涉及到更多考慮,隨后討論)情況。對(duì)此,在實(shí)踐中我們大多已經(jīng)采取了弱一致性的異步延時(shí)同步方案,以提高可用性。這種情況并不存在關(guān)系型數(shù)據(jù)庫(kù)為保證C、A而放棄P的情況;而對(duì)海量數(shù)據(jù)管理的需求,關(guān)系型數(shù)據(jù)庫(kù)擴(kuò)展過(guò)程中所遇到的性能瓶頸,似乎也并不是CAP理論中所描述的那種原因造成的。那么,上述流行的說(shuō)法中所描述的關(guān)系型數(shù)據(jù)庫(kù)為保證C、A而犧牲P到底是在指什么呢?
因此,如果根據(jù)現(xiàn)有的大多數(shù)資料對(duì)CAP理論的如上解釋,即只將其當(dāng)作分布式系統(tǒng)中多個(gè)數(shù)據(jù)副本之間的讀寫一致性問(wèn)題的通用理論對(duì)待,那么就可以得出結(jié)論:CAP既適用于NoSQL數(shù)據(jù)庫(kù),也適用于關(guān)系型數(shù)據(jù)庫(kù)。它是NoSQL數(shù)據(jù)庫(kù)、關(guān)系型數(shù)據(jù)庫(kù),乃至一切分布式系統(tǒng)在設(shè)計(jì)數(shù)據(jù)多個(gè)副本之間讀寫一致性問(wèn)題時(shí)需要遵循的共同原則。
更深入的探究:兩種重要的分布式場(chǎng)景
在本文中我們要說(shuō)的重點(diǎn)與核心是:關(guān)于對(duì)CAP理論中一致性C的理解,除了上述數(shù)據(jù)副本之間的讀寫一致性以外,分布式環(huán)境中還有兩種非常重要的場(chǎng)景,如果不對(duì)它們進(jìn)行認(rèn)識(shí)與討論,就永遠(yuǎn)無(wú)法全面地理解CAP,當(dāng)然也就無(wú)法根據(jù)CAP做出正確的解釋。但可惜的是,目前為止卻很少有人提及這兩種場(chǎng)景:那就是事務(wù)與關(guān)聯(lián)。
先來(lái)看看分布式環(huán)境中的事務(wù)場(chǎng)景。我們知道,在關(guān)系型數(shù)據(jù)庫(kù)的事務(wù)操作遵循ACID原則,其中的一致性C,主要是指一個(gè)事務(wù)中相關(guān)聯(lián)的數(shù)據(jù)在事務(wù)操作結(jié)束后是一致的。所謂ACID原則,是指在寫入/異動(dòng)資料的過(guò)程中,為保證交易正確可靠所必須具備的四個(gè)特性:即原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨(dú)立性)和持久性(Durability)。
例如銀行的一個(gè)存款交易事務(wù),將導(dǎo)致交易流水表增加一條記錄。同時(shí),必須導(dǎo)致賬戶表余額發(fā)生變化,這兩個(gè)操作必須是一個(gè)事務(wù)中全部完成,保證相關(guān)數(shù)據(jù)的一致性。而前文解釋的CAP理論中的C是指對(duì)一個(gè)數(shù)據(jù)多個(gè)備份的讀寫一致性。表面上看,這兩者不是一回事,但實(shí)際上,卻是本質(zhì)基本相同的事物:數(shù)據(jù)請(qǐng)求會(huì)等待多個(gè)相關(guān)數(shù)據(jù)操作全部完成才返回。對(duì)分布式系統(tǒng)來(lái)講,這就是我們通常所說(shuō)的分布式事務(wù)問(wèn)題。
眾所周知,分布式事務(wù)一般采用兩階段提交策略來(lái)實(shí)現(xiàn),這是一個(gè)非常耗時(shí)的復(fù)雜過(guò)程,會(huì)嚴(yán)重影響系統(tǒng)效率,在實(shí)踐中我們盡量避免使用它。在實(shí)踐過(guò)程中,如果我們?yōu)榱藬U(kuò)展數(shù)據(jù)容量將數(shù)據(jù)分布式存儲(chǔ),而事務(wù)的要求又完全不能降低。那么,系統(tǒng)的可用性一定會(huì)大大降低,在現(xiàn)實(shí)中我們一般都采用對(duì)這些數(shù)據(jù)不分散存儲(chǔ)的策略。
當(dāng)然,我們也可以說(shuō),最常使用的關(guān)系型數(shù)據(jù)庫(kù),因?yàn)檫@個(gè)原因,擴(kuò)展性(分區(qū)可容忍性P)受到了限制,這是完全符合CAP理論的。但同時(shí)我們應(yīng)該意識(shí)到,這對(duì)NoSQL數(shù)據(jù)庫(kù)也是一樣的。如果NoSQL數(shù)據(jù)庫(kù)也要求嚴(yán)格的分布式事務(wù)功能,情況并不會(huì)比關(guān)系型數(shù)據(jù)庫(kù)好多少。只是在NoSQL的設(shè)計(jì)中,我們往往會(huì)弱化甚至去除事務(wù)的功能,該問(wèn)題才表現(xiàn)得不那么明顯而已。
因此,在擴(kuò)展性問(wèn)題上,如果要說(shuō)關(guān)系型數(shù)據(jù)庫(kù)是為了保證C、A而犧牲P,在盡量避免分布式事務(wù)這一點(diǎn)上來(lái)看,應(yīng)該是正確的。也就是說(shuō):關(guān)系型數(shù)據(jù)庫(kù)應(yīng)該具有強(qiáng)大的事務(wù)功能,如果分區(qū)擴(kuò)展,可用性就會(huì)降低;而NoSQL數(shù)據(jù)庫(kù)干脆弱化甚至去除了事務(wù)功能,因此,分區(qū)的可擴(kuò)展性就大大增加了。
再來(lái)看看分布式環(huán)境中的關(guān)聯(lián)場(chǎng)景。初看起來(lái),關(guān)系型數(shù)據(jù)庫(kù)中常用的多表關(guān)聯(lián)操作與CAP理論就更加不沾邊了。但仔細(xì)考慮,也可以用它來(lái)解釋數(shù)據(jù)庫(kù)分區(qū)擴(kuò)展對(duì)關(guān)聯(lián)所帶來(lái)的影響。對(duì)一個(gè)數(shù)據(jù)庫(kù)來(lái)講,采用了分區(qū)擴(kuò)展策略來(lái)擴(kuò)充容量,數(shù)據(jù)分散存儲(chǔ)了,很顯然多表關(guān)聯(lián)的性能就會(huì)下降,因?yàn)槲覀儽仨氃诰W(wǎng)絡(luò)上進(jìn)行大量的數(shù)據(jù)遷移操作,這與CAP理論中數(shù)據(jù)副本之間的同步操作本質(zhì)上也是相同的。
因此,如果要保證系統(tǒng)的高可用性,需要同時(shí)實(shí)現(xiàn)強(qiáng)大的多表關(guān)系操作的關(guān)系型數(shù)據(jù)庫(kù)在分區(qū)可擴(kuò)展性上就遇到了極大的限制(即使是那些采用了各種優(yōu)秀解決方案的MPP架構(gòu)的關(guān)系型數(shù)據(jù)庫(kù),如TeraData,Netezza等,其水平可擴(kuò)展性也是遠(yuǎn)遠(yuǎn)不如NoSQL數(shù)據(jù)庫(kù)的),而NoSQL數(shù)據(jù)庫(kù)則干脆在設(shè)計(jì)上弱化甚至去除了多表關(guān)聯(lián)操作。那么,從這一點(diǎn)上來(lái)理解“NoSQL數(shù)據(jù)庫(kù)是為了保證A與P,而犧牲C”的說(shuō)法,也是可以講得通的。當(dāng)然,我們應(yīng)該理解,關(guān)聯(lián)問(wèn)題在很多情況下不是并行處理的優(yōu)點(diǎn)所在,這在很大程度上與Amdahl定律相符合。
所以,從事務(wù)與關(guān)聯(lián)的角度來(lái)關(guān)系型數(shù)據(jù)庫(kù)的分區(qū)可擴(kuò)展性為什么受限的原因是最為清楚的。而NoSQL數(shù)據(jù)庫(kù)也正是因?yàn)槿趸?,甚至去除了像事?wù)與關(guān)聯(lián)(全面地講,其實(shí)還有索引等特性)等在分布式環(huán)境中會(huì)嚴(yán)重影響系統(tǒng)可用性的功能,才獲得了更好的水平可擴(kuò)展性。
那么,如果將事務(wù)與關(guān)聯(lián)也納入CAP理論中一致性C的范疇的話,問(wèn)題就很清楚了:關(guān)于“關(guān)系型數(shù)據(jù)庫(kù)為了保證一致性C與可用性A,而不得不犧牲分區(qū)可容忍性P”的說(shuō)法便是正確的了。但關(guān)于“NoSQL選擇了C與P,或者A與P”的說(shuō)法則是錯(cuò)誤的,所有的NoSQL數(shù)據(jù)庫(kù)在設(shè)計(jì)策略的大方向上都是選擇了A與P(雖然對(duì)同一數(shù)據(jù)多個(gè)副本的讀寫一致性問(wèn)題的設(shè)計(jì)各有不同),從來(lái)沒(méi)有完全選擇C與P的情況存在。
結(jié)論
現(xiàn)在看來(lái),如果理解CAP理論只是指多個(gè)數(shù)據(jù)副本之間讀寫一致性的問(wèn)題,那么它對(duì)關(guān)系型數(shù)據(jù)庫(kù)與NoSQL數(shù)據(jù)庫(kù)來(lái)講是完全一樣的,它只是運(yùn)行在分布式環(huán)境中的數(shù)據(jù)管理設(shè)施在設(shè)計(jì)讀寫一致性問(wèn)題時(shí)需要遵循的一個(gè)原則而已,卻并不是NoSQL數(shù)據(jù)庫(kù)具有優(yōu)秀的水平可擴(kuò)展性的真正原因。而如果將CAP理論中的一致性C理解為讀寫一致性、事務(wù)與關(guān)聯(lián)操作的綜合,則可以認(rèn)為關(guān)系型數(shù)據(jù)庫(kù)選擇了C與A,而NoSQL數(shù)據(jù)庫(kù)則全都是選擇了A與P,但并沒(méi)有選擇C與P的情況存在。這才是用CAP理論來(lái)支持NoSQL數(shù)據(jù)庫(kù)設(shè)計(jì)正確認(rèn)識(shí)。
其實(shí),這種認(rèn)識(shí)正好與被廣泛認(rèn)同的NoSQL的另一個(gè)理論基礎(chǔ)相吻合,即與ACID對(duì)著干的BASE(基本可用性、軟狀態(tài)與最終一致性)。因?yàn)锽ASE的含義正好是指“NoSQL數(shù)據(jù)庫(kù)設(shè)計(jì)可以通過(guò)犧牲一定的數(shù)據(jù)一致性和容錯(cuò)性來(lái)?yè)Q取高性能的保持甚至提高”,即NoSQL數(shù)據(jù)庫(kù)都應(yīng)該是犧牲C來(lái)?yè)Q取P,而不是犧牲A??捎眯訟正好是所有NoSQL數(shù)據(jù)庫(kù)都普遍追求的特性。
創(chuàng)建數(shù)據(jù)庫(kù)的五個(gè)屬性:比如學(xué)生表存學(xué)號(hào),姓名、年齡、性別、班級(jí)等。
選擇開始菜單中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打開【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份驗(yàn)證建立連接。
在【對(duì)象資源管理器】窗口中展開服務(wù)器,然后選擇【數(shù)據(jù)庫(kù)】節(jié)點(diǎn),右鍵單擊【數(shù)據(jù)庫(kù)】節(jié)點(diǎn),從彈出來(lái)的快捷菜單中選擇【新建數(shù)據(jù)庫(kù)】命令。
非關(guān)系型數(shù)據(jù)庫(kù):
隨著近些年技術(shù)方向的不斷拓展,大量的NoSql數(shù)據(jù)庫(kù)如MongoDB、Redis、Memcache出于簡(jiǎn)化數(shù)據(jù)庫(kù)結(jié)構(gòu)、避免冗余、影響性能的表連接、摒棄復(fù)雜分布式的目的被設(shè)計(jì)。
指的是分布式的、非關(guān)系型的、不保證遵循ACID原則的數(shù)據(jù)存儲(chǔ)系統(tǒng)。NoSQL數(shù)據(jù)庫(kù)技術(shù)與CAP理論、一致性哈希算法有密切關(guān)系。所謂CAP理論,簡(jiǎn)單來(lái)說(shuō)就是一個(gè)分布式系統(tǒng)不可能滿足可用性、一致性與分區(qū)容錯(cuò)性這三個(gè)要求。
以上內(nèi)容參考:百度百科-數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)主要分為關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)。
1、關(guān)系數(shù)據(jù)庫(kù)
關(guān)系型數(shù)據(jù)庫(kù),存儲(chǔ)的格式可以直觀地反映實(shí)體間的關(guān)系。關(guān)系型數(shù)據(jù)庫(kù)和常見的表格比較相似,關(guān)系型數(shù)據(jù)庫(kù)中表與表之間是有很多復(fù)雜的關(guān)聯(lián)關(guān)系的。
常見的關(guān)系型數(shù)據(jù)庫(kù)有Mysql,SqlServer等。在輕量或者小型的應(yīng)用中,使用不同的關(guān)系型數(shù)據(jù)庫(kù)對(duì)系統(tǒng)的性能影響不大,但是在構(gòu)建大型應(yīng)用時(shí),則需要根據(jù)應(yīng)用的業(yè)務(wù)需求和性能需求,選擇合適的關(guān)系型數(shù)據(jù)庫(kù)。
2、非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)
指分布式的、非關(guān)系型的、不保證遵循ACID原則的數(shù)據(jù)存儲(chǔ)系統(tǒng)。NoSQL數(shù)據(jù)庫(kù)技術(shù)與CAP理論、一致性哈希算法有密切關(guān)系。NoSQL數(shù)據(jù)庫(kù)適合追求速度和可擴(kuò)展性、業(yè)務(wù)多變的應(yīng)用場(chǎng)景。
擴(kuò)展資料
關(guān)系數(shù)據(jù)庫(kù)分為兩類:一類是桌面數(shù)據(jù)庫(kù),例如Access、FoxPro和dBase等;另一類是客戶/服務(wù)器數(shù)據(jù)庫(kù),例如SQL Server、Oracle和Sybase等。桌面數(shù)據(jù)庫(kù)用于小型的、單機(jī)的應(yīng)用程序,它不需要網(wǎng)絡(luò)和服務(wù)器,實(shí)現(xiàn)起來(lái)比較方便,但它只提供數(shù)據(jù)的存取功能。
客戶/服務(wù)器數(shù)據(jù)庫(kù)主要適用于大型的、多用戶的數(shù)據(jù)庫(kù)管理系統(tǒng),應(yīng)用程序包括兩部分:一部分駐留在客戶機(jī)上,用于向用戶顯示信息及實(shí)現(xiàn)與用戶的交互;另一部分駐留在服務(wù)器中,主要用來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作和對(duì)數(shù)據(jù)的計(jì)算處理。
參考資料來(lái)源:百度百科-關(guān)系數(shù)據(jù)庫(kù)
參考資料來(lái)源:百度百科-數(shù)據(jù)庫(kù)
作者 石默研
關(guān)于CAP的討論已經(jīng)很多,包括作者的另一篇文章“對(duì)CAP的初步解釋”,基本已經(jīng)即定思維的理解就是:分布式系統(tǒng)必須遵循CAP,一個(gè)分布式系統(tǒng)的設(shè)計(jì)只能同時(shí)滿足其中兩個(gè),不可能同時(shí)滿足;傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)選擇A與C,代表了互聯(lián)網(wǎng)新興技術(shù)的NoSQL數(shù)據(jù)庫(kù)則選擇A與P(或者C與P,雖然這種情況其實(shí)需要詳細(xì)討論)。
但是,近年來(lái),新興的NewSQL數(shù)據(jù)庫(kù)(TiDB或者OceanBase),則是一種在分布式環(huán)境下,保證的ACID強(qiáng)事務(wù)特征的強(qiáng)一致性數(shù)據(jù)庫(kù),并且很顯然,它同時(shí)也滿足了高可用性與優(yōu)秀的分區(qū)可容忍性(很好的可擴(kuò)展特性便是其一個(gè)層面的證明),似乎看起來(lái),C、A、P都同時(shí)保證了,這不是違反了已經(jīng)經(jīng)過(guò)嚴(yán)格證明的CAP理論嗎?
這個(gè)問(wèn)題初看起來(lái),似乎是比較神奇,但仔細(xì)分析,其實(shí)答案是很明顯的。
首先,需要讀者區(qū)分“分布式”與CAP中所提到的分區(qū)可容忍性Paritition Tolerance并不是一回事。分區(qū)可容忍性P是指以下兩種分布式的情況:
. 同一份數(shù)據(jù)的多個(gè)副本的可分布性
. 有相互關(guān)聯(lián)的數(shù)據(jù)的可分布性(操作中表現(xiàn)為保證ACID的強(qiáng)分布式事務(wù))
即使是分庫(kù)分表,如果不存在以上兩種情況,只是獨(dú)立數(shù)據(jù)在同一個(gè)節(jié)點(diǎn)上的情況,雖然也是分布式,但跟CAP中的P沒(méi)有半毛錢關(guān)系。
那么,還是回到上面的問(wèn)題,NewSQL數(shù)據(jù)庫(kù),確實(shí)也是在保證了同一份數(shù)據(jù)多副本的強(qiáng)讀寫一致性、以及強(qiáng)分布式事務(wù)特性這樣的C的情況下,同時(shí)保證了A與P呀!事實(shí)確實(shí)如此,但這還是要仔細(xì)分析:
無(wú)論是TiDB,還是OceanBase,其在保證數(shù)據(jù)多副本的強(qiáng)一致性時(shí),都采用了Paxos協(xié)議或者Raft,它們簡(jiǎn)單來(lái)講就是多數(shù)選舉的原則,即寫不需要全部副本都完成,就能保證讀的強(qiáng)一致性,反過(guò)來(lái)也是一樣。因此,其在分布式情況下,保證數(shù)據(jù)讀寫強(qiáng)一致性的效率還是很高的,就是說(shuō),在同一個(gè)數(shù)據(jù)中心的網(wǎng)絡(luò)環(huán)境下,雖然這種分布可容忍性的滿足理論上講也會(huì)比單節(jié)點(diǎn)多一點(diǎn)點(diǎn)效率損失,但實(shí)際上是可以忽略不計(jì)的。但需要指出的是,在跨數(shù)據(jù)中心、跨城市的分布式情況下,如果要保證數(shù)據(jù)多副本的強(qiáng)一致性,即保證分區(qū)可容忍性,對(duì)效率(實(shí)際上是可用性A)的影響那還是不可忽略的。因此,在這種情況下,CAP理論依然成立。
再來(lái)看相互關(guān)聯(lián)數(shù)據(jù)的可分布性,這就涉及到了分布式事務(wù)?,F(xiàn)有的NewSQL數(shù)據(jù)庫(kù),即使在同一數(shù)據(jù)中心,為了保證強(qiáng)的分布式事務(wù),對(duì)效率的折衷都是不可忽略的,所謂的樂(lè)觀事務(wù),只是因?yàn)榭陀^問(wèn)題本身沖突就少,并不改變沖突很多時(shí)效率明顯受影響的現(xiàn)實(shí)。因此,NewSQL數(shù)據(jù)庫(kù)雖然提供強(qiáng)分布式事務(wù)的能力,但在現(xiàn)實(shí)應(yīng)用中,都是提倡盡量避免大量的分布式事務(wù)出現(xiàn)。如果你所遇到的應(yīng)用場(chǎng)景是確實(shí)需要大量的分布式事務(wù)執(zhí)行,又不做應(yīng)用優(yōu)化全交給數(shù)據(jù)庫(kù)執(zhí)行,那么,現(xiàn)有的NewSQL分布式數(shù)據(jù)庫(kù),依然會(huì)遇到明顯的性能問(wèn)題,其實(shí)就是可用性A降低了。同學(xué)仔細(xì)去研究應(yīng)用中的實(shí)際情況就會(huì)發(fā)現(xiàn),很多互聯(lián)網(wǎng)應(yīng)用,當(dāng)其所需要的QPS很高很高,而對(duì)讀寫一致性與強(qiáng)分布式事務(wù)的要求又不那很高時(shí)候,其實(shí),NewSQL數(shù)據(jù)庫(kù)還是不能滿足他們的需求的,他們?nèi)匀恍枰鶕?jù)自己的情況改造或者選用NoSQL數(shù)據(jù)庫(kù),這也是CAP理論并沒(méi)有被NewSQL打破的現(xiàn)實(shí)證明。
因此,總結(jié)來(lái)講,NewSQL數(shù)據(jù)庫(kù),也是遵循CAP理論的,只不過(guò),在同中心數(shù)據(jù)多副本情況下,保證P的同時(shí)對(duì)A的影響微乎其微;而在分布式事務(wù)的情況下,又采用了與應(yīng)用特性相關(guān)的策略(其實(shí)樂(lè)觀、悲觀事務(wù)本質(zhì)上就有根本應(yīng)用特性區(qū)分的意思)來(lái)保證性能而已。當(dāng)然,隨著網(wǎng)絡(luò)與計(jì)算機(jī)性能的提高,CAP三個(gè)特征中,保證其中兩個(gè),折衷另外一個(gè),所帶來(lái)的影響也會(huì)逐漸變小,但其理論依然是正確的。
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)在功能支持上通常很寬泛,從簡(jiǎn)單的鍵值查詢,到復(fù)雜的多表聯(lián)合查詢?cè)俚绞聞?wù)機(jī)制的支持。而與之不同的是,NoSQL系統(tǒng)通常注重性能和擴(kuò)展性,而非事務(wù)機(jī)制(事務(wù)就是強(qiáng)一致性的體現(xiàn)) 。傳統(tǒng)的SQL數(shù)據(jù)庫(kù)的事務(wù)通常都是支持ACID的強(qiáng)事務(wù)機(jī)制。A代表原子性,即在事務(wù)中執(zhí)行多個(gè)操作是原子性的,要么事務(wù)中的操作全部執(zhí)行,要么一個(gè)都不執(zhí)行;C代表一致性,即保證進(jìn)行事務(wù)的過(guò)程中整個(gè)數(shù)據(jù)加的狀態(tài)是一致的,不會(huì)出現(xiàn)數(shù)據(jù)花掉的情況;I代表隔離性,即兩個(gè)事務(wù)不會(huì)相互影響,覆蓋彼此數(shù)據(jù)等;D表示持久化,即事務(wù)一量完成,那么數(shù)據(jù)應(yīng)該是被寫到安全的,持久化存儲(chǔ)的設(shè)備上(比如磁盤)。NoSQL系統(tǒng)僅提供對(duì)行級(jí)別的原子性保證,也就是說(shuō)同時(shí)對(duì)同一個(gè)Key下的數(shù)據(jù)進(jìn)行的兩個(gè)操作,在實(shí)際執(zhí)行的時(shí)候是會(huì)串行的執(zhí)行,保證了每一個(gè)Key-Value對(duì)不會(huì)被破壞。
分享標(biāo)題:nosql與cap的關(guān)系,簡(jiǎn)述nosql中cap的含義
URL標(biāo)題:http://m.rwnh.cn/article2/dscoiic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站設(shè)計(jì)、網(wǎng)站排名、全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站制作、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)