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

云計(jì)算背后的秘密(6)-NoSQL數(shù)據(jù)庫(kù)綜述

云計(jì)算
我本來(lái)一直覺(jué)得NoSQL其實(shí)很容易理解的,我本身也已經(jīng)對(duì)NoSQL有了非常深入的研究,但是在最近準(zhǔn)備YunTable的Chart的時(shí)候,發(fā)現(xiàn)NoSQL不僅非常博大精深,而且我個(gè)人對(duì)NoSQL的理解也只是皮毛而已,但我還算是一個(gè)“知恥而后勇”的人,所以經(jīng)過(guò)一段時(shí)間的學(xué)習(xí)之后,從本系列第六篇開始,就將和大家聊聊NoSQL,而本篇將主要給大家做一下NoSQL數(shù)據(jù)庫(kù)的綜述。

我本來(lái)一直覺(jué)得NoSQL其實(shí)很容易理解的,我本身也已經(jīng)對(duì)NoSQL有了非常深入的研究,但是在最近準(zhǔn)備YunTable的Chart的時(shí)候,發(fā)現(xiàn)NoSQL不僅非常博大精深,而且我個(gè)人對(duì)NoSQL的理解也只是皮毛而已,但我還算是一個(gè)“知恥而后勇”的人,所以經(jīng)過(guò)一段時(shí)間的學(xué)習(xí)之后,從本系列第六篇開始,就將和大家聊聊NoSQL,而本篇將主要給大家做一下NoSQL數(shù)據(jù)庫(kù)的綜述。

首先將和大家聊聊為什么NoSQL會(huì)在關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)非常普及的情況下異軍突起?

誕生的原因

隨著互聯(lián)網(wǎng)的不斷發(fā)展,各種類型的應(yīng)用層出不窮,所以導(dǎo)致在這個(gè)云計(jì)算的時(shí)代,對(duì)技術(shù)提出了更多的需求,主要體現(xiàn)在下面這四個(gè)方面:

1. 低延遲的讀寫速度:應(yīng)用快速地反應(yīng)能極大地提升用戶的滿意度;

2. 支撐海量的數(shù)據(jù)和流量:對(duì)于搜索這樣大型應(yīng)用而言,需要利用PB級(jí)別的數(shù)據(jù)和能應(yīng)對(duì)百萬(wàn)級(jí)的流量;

3. 大規(guī)模集群的管理:系統(tǒng)管理員希望分布式應(yīng)用能更簡(jiǎn)單的部署和管理;

4. 龐大運(yùn)營(yíng)成本的考量:IT經(jīng)理們希望在硬件成本、軟件成本和人力成本能夠有大幅度地降低;

雖然關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)在業(yè)界的數(shù)據(jù)存儲(chǔ)方面占據(jù)不可動(dòng)搖的地位,但是由于其天生的幾個(gè)限制,使其很難滿足上面這幾個(gè)需求:

1. 擴(kuò)展困難:由于存在類似Join這樣多表查詢機(jī)制,使得數(shù)據(jù)庫(kù)在擴(kuò)展方面很艱難;

2. 讀寫慢:這種情況主要發(fā)生在數(shù)據(jù)量達(dá)到一定規(guī)模時(shí)由于關(guān)系型數(shù)據(jù)庫(kù)的系統(tǒng)邏輯非常復(fù)雜,使得其非常容易發(fā)生死鎖等的并發(fā)問(wèn)題,所以導(dǎo)致其讀寫速度下滑非常嚴(yán)重;

3. 成本高:企業(yè)級(jí)數(shù)據(jù)庫(kù)的License價(jià)格很驚人,并且隨著系統(tǒng)的規(guī)模,而不斷上升;

4. 有限的支撐容量:現(xiàn)有關(guān)系型解決方案還無(wú)法支撐Google這樣海量的數(shù)據(jù)存儲(chǔ);

業(yè)界為了解決上面提到的幾個(gè)需求,推出了多款新類型的數(shù)據(jù)庫(kù),并且由于它們?cè)谠O(shè)計(jì)上和傳統(tǒng)的NoSQL數(shù)據(jù)庫(kù)相比有很大的不同,所以被統(tǒng)稱為“NoSQL”系列數(shù)據(jù)庫(kù)??偟膩?lái)說(shuō),在設(shè)計(jì)上,它們非常關(guān)注對(duì)數(shù)據(jù)高并發(fā)地讀寫和對(duì)海量數(shù)據(jù)的存儲(chǔ)等,與關(guān)系型數(shù)據(jù)庫(kù)相比,它們?cè)诩軜?gòu)和數(shù)據(jù)模型方量面做了“減法”,而在擴(kuò)展和并發(fā)等方面做了“加法”?,F(xiàn)在主流的NoSQL數(shù)據(jù)庫(kù)有BigTable、HBase、Cassandra、SimpleDB、CouchDB、MongoDB和Redis等。接下來(lái),將關(guān)注NoSQL數(shù)據(jù)庫(kù)到底存在哪些優(yōu)缺點(diǎn)。

#p#

優(yōu)缺點(diǎn)

在優(yōu)勢(shì)方面,主要體現(xiàn)在下面這三點(diǎn):

1. 簡(jiǎn)單的擴(kuò)展:典型例子是Cassandra,由于其架構(gòu)是類似于經(jīng)典的P2P,所以能通過(guò)輕松地添加新的節(jié)點(diǎn)來(lái)擴(kuò)展這個(gè)集群;

2. 快速的讀寫:主要例子有Redis,由于其邏輯簡(jiǎn)單,而且純內(nèi)存操作,使得其性能非常出色,單節(jié)點(diǎn)每秒可以處理超過(guò)10萬(wàn)次讀寫操作;

3. 低廉的成本:這是大多數(shù)分布式數(shù)據(jù)庫(kù)共有的特點(diǎn),因?yàn)橹饕际情_源軟件,沒(méi)有昂貴的License成本;

但瑕不掩瑜,NoSQL數(shù)據(jù)庫(kù)還存在著很多的不足,常見(jiàn)主要有下面這幾個(gè):

1. 不提供對(duì)SQL的支持:如果不支持SQL這樣的工業(yè)標(biāo)準(zhǔn),將會(huì)對(duì)用戶產(chǎn)生一定的學(xué)習(xí)和應(yīng)用遷移成本;

2. 支持的特性不夠豐富:現(xiàn)有產(chǎn)品所提供的功能都比較有限,大多數(shù)NoSQL數(shù)據(jù)庫(kù)都不支持事務(wù),也不像MS SQL Server和Oracle那樣能提供各種附加功能,比如BI和報(bào)表等;

3. 現(xiàn)有產(chǎn)品的不夠成熟:大多數(shù)產(chǎn)品都還處于初創(chuàng)期,和關(guān)系型數(shù)據(jù)庫(kù)幾十年的完善不可同日而語(yǔ);

上面NoSQL產(chǎn)品的優(yōu)缺點(diǎn)都是些比較共通的,在實(shí)際情況下,每個(gè)產(chǎn)品都會(huì)根據(jù)自己所遵從的數(shù)據(jù)模型和CAP理念而有所不同,接下來(lái),將給大家介紹NoSQL兩個(gè)最重要的概念:數(shù)據(jù)模型和CAP理念,并在本文最后,對(duì)主流的NoSQL數(shù)據(jù)庫(kù)進(jìn)行分類。

#p#

數(shù)據(jù)模型

傳統(tǒng)的數(shù)據(jù)庫(kù)在數(shù)據(jù)模型方面,主要是關(guān)系型,它的特色是對(duì)Join類操作和ACID事務(wù)的支持。在NoSQL領(lǐng)域,主要有三種主流的數(shù)據(jù)模型:

Column-oriented(列式)

列式也主要使用Table這樣的模型,但是它并不支持類似Join這樣多表的操作,它的主要特點(diǎn)是在存儲(chǔ)數(shù)據(jù)時(shí),主要圍繞著“列(Column)”,而不是像傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)那樣根據(jù)“行(Row)”進(jìn)行存儲(chǔ),也就是說(shuō),屬于同一列的數(shù)據(jù)會(huì)盡可能地存儲(chǔ)在硬盤同一個(gè)頁(yè)(Page)中,而不是將屬于同一個(gè)行的數(shù)據(jù)存放在一起,這樣做的好處是,對(duì)于很多類似數(shù)據(jù)倉(cāng)庫(kù)(Data Warehouse)的應(yīng)用,雖然每次查詢都會(huì)處理很多數(shù)據(jù),但是每次所涉及的列并沒(méi)有很多,這樣如果使用列式數(shù)據(jù)庫(kù)的話,將會(huì)節(jié)省大量I/O,并且大多數(shù)列式數(shù)據(jù)庫(kù)都支持Column Family這個(gè)特性,通過(guò)這個(gè)特性能將多個(gè)Column并為一個(gè)小組,這樣做好處是能將相似Column放在一起存儲(chǔ),這樣能提高這些Column的存儲(chǔ)和查詢效率??傮w而言,這種數(shù)據(jù)模型的優(yōu)點(diǎn)是比較適合匯總(Aggregation)和數(shù)據(jù)倉(cāng)庫(kù)這類應(yīng)用。.

Key-value

雖然Key-value這種模型和傳統(tǒng)的關(guān)系型相比較簡(jiǎn)單,有點(diǎn)類似常見(jiàn)的HashTable,一個(gè)Key對(duì)應(yīng)一個(gè)Value,但是其能提供非??斓牟樵兯俣?、大的數(shù)據(jù)存放量和高并發(fā)操作,并非常適合通過(guò)主鍵對(duì)數(shù)據(jù)進(jìn)行查詢和修改等操作,雖然不支持復(fù)雜的操作,但是可以通過(guò)上層的開發(fā)來(lái)彌補(bǔ)這個(gè)缺陷。

Document(文檔)

在結(jié)構(gòu)上,Document和Key-value是非常相似的,也是一個(gè)Key對(duì)應(yīng)一個(gè)Value,但是這個(gè)Value主要以JSON或者XML等格式的文檔來(lái)進(jìn)行存儲(chǔ),是有語(yǔ)義的,并且Document DB一般可以對(duì)Value來(lái)創(chuàng)建Secondary Index來(lái)方便上層的應(yīng)用,而這點(diǎn)是普通Key-Value DB所無(wú)法支持的。

#p#

CAP理論

這個(gè)理論是由美國(guó)著名科學(xué)家,同時(shí)也是著名互聯(lián)網(wǎng)企業(yè)Inktomi的創(chuàng)始人Eric Brewer在2000年P(guān)ODC(Symposium on Principles of Distributed Computing)大會(huì)上提出的,后來(lái)Seth Gilbert 和 Nancy lynch兩人也證明了CAP理論的正確性,雖然在后來(lái)近十年的時(shí)間很多人對(duì)CAP理論提出了很多異議,但是在NoSQL的世界中,它還是非常有參考價(jià)值的。它的意思是,一個(gè)分布式系統(tǒng)不能同時(shí)滿足一致性,可用性和分區(qū)容錯(cuò)性這三個(gè)需求,最多只能同時(shí)滿足兩個(gè)。

1. 一致性(Consistency):任何一個(gè)讀操作總是能讀取到之前完成的寫操作結(jié)果,也就是在分布式環(huán)境中,多點(diǎn)的數(shù)據(jù)是一致的;

2. 可用性(Availability):每一個(gè)操作總是能夠在確定的時(shí)間內(nèi)返回,也就是系統(tǒng)隨時(shí)都是可用的。

3. 分區(qū)容忍性(Partition Tolerance): 在出現(xiàn)網(wǎng)絡(luò)分區(qū)(比如斷網(wǎng))的情況下,分離的系統(tǒng)也能正常運(yùn)行。

由于一致性、可用性和分區(qū)容忍性這三方面只能選擇兩個(gè),所以大多數(shù)NoSQL系統(tǒng)都會(huì)根據(jù)自己的設(shè)計(jì)理念來(lái)進(jìn)行相應(yīng)的選擇,但由于許多NoSQL數(shù)據(jù)庫(kù)都以水平擴(kuò)展著稱,所以在CAP的選擇上面,都傾向于堅(jiān)持分區(qū)容忍性,而放棄一致性或者可用性,它們的做法主要是通過(guò)消減關(guān)系型和事務(wù)相關(guān)的功能。
 

#p#

具體分類

下面的具體分類是來(lái)自于Visual Guide to NoSQL Systems一文,雖然對(duì)于這塊分類我個(gè)人覺(jué)得還存在一些牽強(qiáng)的地方,比如將能支持多種CAP配置的Dynamo和其衍生產(chǎn)品Cassandra歸類為AP,但是總體而言,這個(gè)分類還是相當(dāng)不錯(cuò),在現(xiàn)階段非常具有參考價(jià)值,在每個(gè)相關(guān)的數(shù)據(jù)庫(kù)后面還會(huì)介紹對(duì)應(yīng)的數(shù)據(jù)模型。

 

▲圖1. NoSQL產(chǎn)品分類圖(參考1)

關(guān)注一致性和可用性的 (CA)

這些數(shù)據(jù)庫(kù)對(duì)于分區(qū)容忍性方面比較不感冒,主要采用復(fù)制(Replication)這種方式來(lái)保證數(shù)據(jù)的安全性,常見(jiàn)的CA系統(tǒng)有:

1. 傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),比如Postgres和MySQL等(Relational) ;

2. Vertica (Column-oriented) ;

3. Aster Data (Relational) ;

4. Greenplum (Relational) ;

關(guān)注一致性和分區(qū)容忍性的(CP)

這種系統(tǒng)將數(shù)據(jù)分布在多個(gè)網(wǎng)絡(luò)分區(qū)的節(jié)點(diǎn)上,并保證這些數(shù)據(jù)的一致性,但是對(duì)于可用性的支持方面有問(wèn)題,比如當(dāng)集群出現(xiàn)問(wèn)題的話,節(jié)點(diǎn)有可能因無(wú)法確保數(shù)據(jù)是一致性的而拒絕提供服務(wù),主要的CP系統(tǒng)有:

1. BigTable (Column-oriented) ;

2. Hypertable (Column-oriented);

3. HBase (Column-oriented) ;

4. MongoDB (Document) ;

5. Terrastore (Document) ;

6. Redis (Key-value) ;

7. Scalaris (Key-value) ;

8. MemcacheDB (Key-value) ;

9. Berkeley DB (Key-value) ;

關(guān)于可用性和分區(qū)容忍性的(AP)

這類系統(tǒng)主要以實(shí)現(xiàn)"最終一致性(Eventual Consistency)"來(lái)確保可用性和分區(qū)容忍性,AP的系統(tǒng)有:

1. Dynamo (Key-value);

2. Voldemort (Key-value) ;

3. Tokyo Cabinet (Key-value) ;

4. KAI (Key-value) ;

5. Cassandra (Column-oriented) ;

6. CouchDB (Document-oriented) ;

7. SimpleDB (Document-oriented) ;

8. Riak (Document-oriented) ;

在下一期云計(jì)算背后的秘密中,將重點(diǎn)給大家介紹我個(gè)人設(shè)計(jì)一款的NoSQL數(shù)據(jù)庫(kù),名為YunTable。

參考資料

1. Visual Guide to NoSQL Systems

2. NoSQL數(shù)據(jù)庫(kù)筆談

3. NoSQL數(shù)據(jù)庫(kù)探討之一 - 為什么要用非關(guān)系數(shù)據(jù)庫(kù)?

作者簡(jiǎn)介

吳朱華,之前在IBM中國(guó)研究院參與過(guò)多個(gè)云計(jì)算產(chǎn)品的開發(fā)工作,現(xiàn)在專注于YunTable【http://code.google.com/p/yuntable/】和YunEngine【http://yunengine.com/】的研發(fā),并即將發(fā)表《剖析云計(jì)算》一書,敬請(qǐng)期待。
 

【編輯推薦】

  1. 云計(jì)算背后的秘密(3)-BigTable
  2. 云計(jì)算背后的秘密(2)-GFS
  3. 云計(jì)算背后的秘密(1)-MapReduce
  4. 云計(jì)算背后的秘密(4)-Chubby

 

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

2010-11-25 09:54:14

云計(jì)算MapReduce

2010-11-25 10:05:51

云計(jì)算GFS

2010-11-29 10:28:32

云計(jì)算BigTable

2010-12-06 14:28:56

云計(jì)算Chubby

2010-10-12 10:58:13

NoSQL

2011-02-17 09:45:40

云計(jì)算RPC框架

2010-02-23 16:00:21

Oracle數(shù)據(jù)庫(kù)機(jī)

2011-01-04 10:00:41

云計(jì)算YunTable

2011-01-06 16:36:05

云計(jì)算Google

2010-03-23 09:16:34

NoSQL

2024-02-02 10:51:53

2016-06-27 16:29:04

戴爾閃存

2013-03-01 10:45:36

Nike大數(shù)據(jù)

2021-09-28 09:25:05

NoSQL數(shù)據(jù)庫(kù)列式數(shù)據(jù)庫(kù)

2010-03-25 15:46:18

云計(jì)算

2023-03-02 12:35:31

2011-10-09 09:38:03

OracleNoSQL

2020-10-31 22:01:40

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

2017-05-25 10:11:46

數(shù)據(jù)庫(kù)令牌節(jié)點(diǎn)

2021-04-02 11:23:01

云計(jì)算數(shù)據(jù)庫(kù)云應(yīng)用
點(diǎn)贊
收藏

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