偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

RDBMS vs. NoSQL:反派為什么會(huì)得以存活并發(fā)展壯大

云計(jì)算
盡管數(shù)百NoSQL林立,盡管在不同的場(chǎng)景下NoSQL有著傳統(tǒng)數(shù)據(jù)庫(kù)無(wú)可匹敵的性能,然而在人氣上,NoSQL也只能望其項(xiàng)背。所謂存在既有道理,這里一覽如此強(qiáng)勢(shì)RDBMS籠罩下,這個(gè)反派存在的原因。

在學(xué)習(xí)不同NoSQL系統(tǒng)的特性之前,了解一下NoSQL的發(fā)展史總不會(huì)錯(cuò)的;用一句話來(lái)說(shuō),NoSQL是天生的反派!

天生的反派NoSQL

這里我們不妨把NoSQL比作No SQL,它必須站在RDBMS的對(duì)立面,這里不妨通過(guò)邏輯流來(lái)解釋一下這個(gè)觀點(diǎn):

 

 

RDBMS通過(guò)匹配關(guān)系數(shù)據(jù)(關(guān)系和表格)的數(shù)據(jù)操作方法定義SQL語(yǔ)言,并且支持ACID特性的事務(wù)。

橫向擴(kuò)展在數(shù)據(jù)處理前就會(huì)進(jìn)行分配,用以滿足網(wǎng)絡(luò)服務(wù)的高吞吐量需求。當(dāng)下RDBMS橫向擴(kuò)展的更趨向于維護(hù)關(guān)系模型的作業(yè)完整性,這和事務(wù)操作構(gòu)成了RDBMS的核心。

然而在維護(hù)完整性的同時(shí)進(jìn)行擴(kuò)展是非常難得的,而在分配和復(fù)制數(shù)據(jù)時(shí)會(huì)出現(xiàn)類(lèi)似的問(wèn)題。所以在進(jìn)行橫向擴(kuò)展之前,必須保證通過(guò)DBMS實(shí)現(xiàn)的基于ACID事務(wù)特性不那么嚴(yán)格,當(dāng)然還有復(fù)制完整性也不能那么嚴(yán)格。

RDBMS的橫向擴(kuò)展

對(duì)RDBMS進(jìn)行擴(kuò)展是很難的。如果只是擴(kuò)展到幾千規(guī)模是很輕松的,類(lèi)似Oracle 這樣領(lǐng)先的數(shù)據(jù)庫(kù)開(kāi)發(fā)機(jī)構(gòu)在很早之前就發(fā)布了一兩個(gè)這樣的產(chǎn)品。

這里不妨假設(shè)將RDBMS中的表格分配到幾臺(tái)主機(jī)上,而為了高可用性每份數(shù)據(jù)都會(huì)在存儲(chǔ)前都會(huì)被復(fù)制。首先,在保證ACID進(jìn)行擴(kuò)展時(shí)執(zhí)行分配操作就非常困難。

想實(shí)現(xiàn)ACID中的原子性,執(zhí)行某個(gè)事務(wù)時(shí),類(lèi)似2PC這樣的分布事務(wù)協(xié)議必須在所有系統(tǒng)中使用。

為了滿足ACID特性中的隔離級(jí)別,數(shù)據(jù)通常都會(huì)被加鎖。鎖的級(jí)別可以是一條記錄,一個(gè)表格或者是一個(gè)索引。

因此,為了在分布式環(huán)境中滿足原子性和隔離需求,因此在分布式事務(wù)協(xié)議的處理期間,每個(gè)系統(tǒng)都會(huì)加上所有相關(guān)的鎖;系統(tǒng)的負(fù)載越大,鎖的競(jìng)爭(zhēng)越繁重。這就是很難擴(kuò)展的原因。

另一個(gè)橫向擴(kuò)展中必須面臨的問(wèn)題就是數(shù)據(jù)的復(fù)制和分配。

事務(wù)性復(fù)制使用了2PC方法,這里存在的問(wèn)題就是:當(dāng)與某個(gè)復(fù)制事務(wù)相關(guān)的任何系統(tǒng)出故障時(shí),這個(gè)事務(wù)就會(huì)失敗并變得不可用。此外,當(dāng)復(fù)制事務(wù)同時(shí)涉及幾個(gè)系統(tǒng)時(shí),性能就會(huì)降低。

作為替代,將一個(gè)DBMS的WAL(Write Ahead Logging,預(yù)寫(xiě)式日志)數(shù)據(jù)傳送給備份系統(tǒng)并讓它使用。節(jié)點(diǎn)可以配置為master-slave或multi-master方式。

當(dāng)使用master-slave類(lèi)型時(shí):這也是最常見(jiàn)的復(fù)制方法。復(fù)制過(guò)程的速度與系統(tǒng)中的從節(jié)點(diǎn)數(shù)量成反比。

當(dāng)使用multi-master配置時(shí):當(dāng)同時(shí)存在幾個(gè)主節(jié)點(diǎn)時(shí),處理數(shù)據(jù)寫(xiě)入進(jìn)程間的沖突是非常困難的,并且很難阻止這個(gè)情況發(fā)生。在《The Danagers of Replication and a Solution》一書(shū)中(曾獲1998年圖靈獎(jiǎng)),Jim Gray對(duì)這個(gè)問(wèn)題進(jìn)入了深入研究。

通過(guò)開(kāi)發(fā)者分片

通常來(lái)說(shuō),在滿足ACID特性的數(shù)據(jù)庫(kù)中進(jìn)行擴(kuò)展是非常難的?;谶@個(gè)原因,對(duì)數(shù)據(jù)進(jìn)行擴(kuò)展,這個(gè)數(shù)據(jù)庫(kù)本身就必須擁有簡(jiǎn)單的模型,將數(shù)據(jù)分割為N片,然后在單獨(dú)的片中執(zhí)行查詢。

數(shù)據(jù)分割的單元被稱為“shard”。將N片數(shù)據(jù)分配個(gè)M個(gè)DBMS進(jìn)行操作。DBMS并不會(huì)去管理數(shù)據(jù)片,這需由服務(wù)開(kāi)發(fā)者自行完成。

分片的方法由開(kāi)發(fā)者決定,這里同樣會(huì)有幾個(gè)問(wèn)題:

首先,分片必須被定義。

其次,分片映射:

RDBMS的基本儲(chǔ)存單元是表格。鑒于一個(gè)表格可能會(huì)包含一個(gè)或多個(gè)分片,這里需要明白分片需要被映射到的數(shù)據(jù)庫(kù)實(shí)例。應(yīng)用程序也必須知道分片表格對(duì)應(yīng)的位置。

***,分片的分配和重分配:

鑒于吞吐量需求和數(shù)據(jù)體積,每個(gè)分片都不同。所以開(kāi)發(fā)者必須從數(shù)據(jù)庫(kù)中增加或者刪除一個(gè)實(shí)例,并且手動(dòng)重分配分片。這個(gè)過(guò)程非常繁瑣。同時(shí)在這個(gè)過(guò)程中,修改的映射信息必須告知應(yīng)用程序。數(shù)據(jù)修改后,還必須做相應(yīng)的管理(比如,針對(duì)復(fù)制的配置)。

責(zé)任編輯:王程程 來(lái)源: Dzone
相關(guān)推薦

2015-06-16 13:12:49

綜合布線布線技術(shù)

2016-07-14 10:41:33

SDN網(wǎng)絡(luò)基礎(chǔ)設(shè)施

2021-01-13 16:04:07

網(wǎng)絡(luò)On-Prem托管

2018-06-06 08:50:49

LinuxUnixWindows

2023-05-22 19:49:30

命令Linux

2020-08-25 09:14:17

對(duì)象存儲(chǔ)文件存儲(chǔ)塊存儲(chǔ)

2024-09-12 22:45:47

2014-09-28 10:29:43

喬布斯施密特Android

2021-12-23 15:36:21

NASSANDAS

2015-04-16 15:42:21

關(guān)系型數(shù)據(jù)庫(kù)NoSQL

2019-04-02 15:07:51

API NginxZuul

2025-02-18 16:00:00

代碼Python架構(gòu)

2019-08-27 11:18:37

云計(jì)算云存儲(chǔ)云備份

2021-03-10 17:22:18

數(shù)據(jù)虛擬化

2020-04-15 10:21:43

云計(jì)算AWSAzure

2020-09-21 06:53:41

NoSQL高并發(fā)面試

2013-04-27 09:16:35

數(shù)據(jù)庫(kù)安全NoSQL安全NoSQL

2015-03-19 11:03:49

Linuxwin10

2022-08-04 14:54:50

APTDNFYUM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)