成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

云計算背后的秘密(6)-NoSQL數據庫綜述

云計算
我本來一直覺得NoSQL其實很容易理解的,我本身也已經對NoSQL有了非常深入的研究,但是在最近準備YunTable的Chart的時候,發現NoSQL不僅非常博大精深,而且我個人對NoSQL的理解也只是皮毛而已,但我還算是一個“知恥而后勇”的人,所以經過一段時間的學習之后,從本系列第六篇開始,就將和大家聊聊NoSQL,而本篇將主要給大家做一下NoSQL數據庫的綜述。

我本來一直覺得NoSQL其實很容易理解的,我本身也已經對NoSQL有了非常深入的研究,但是在最近準備YunTable的Chart的時候,發現NoSQL不僅非常博大精深,而且我個人對NoSQL的理解也只是皮毛而已,但我還算是一個“知恥而后勇”的人,所以經過一段時間的學習之后,從本系列第六篇開始,就將和大家聊聊NoSQL,而本篇將主要給大家做一下NoSQL數據庫的綜述。

首先將和大家聊聊為什么NoSQL會在關系型數據庫已經非常普及的情況下異軍突起?

誕生的原因

隨著互聯網的不斷發展,各種類型的應用層出不窮,所以導致在這個云計算的時代,對技術提出了更多的需求,主要體現在下面這四個方面:

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

2. 支撐海量的數據和流量:對于搜索這樣大型應用而言,需要利用PB級別的數據和能應對百萬級的流量;

3. 大規模集群的管理:系統管理員希望分布式應用能更簡單的部署和管理;

4. 龐大運營成本的考量:IT經理們希望在硬件成本、軟件成本和人力成本能夠有大幅度地降低;

雖然關系型數據庫已經在業界的數據存儲方面占據不可動搖的地位,但是由于其天生的幾個限制,使其很難滿足上面這幾個需求:

1. 擴展困難:由于存在類似Join這樣多表查詢機制,使得數據庫在擴展方面很艱難;

2. 讀寫慢:這種情況主要發生在數據量達到一定規模時由于關系型數據庫的系統邏輯非常復雜,使得其非常容易發生死鎖等的并發問題,所以導致其讀寫速度下滑非常嚴重;

3. 成本高:企業級數據庫的License價格很驚人,并且隨著系統的規模,而不斷上升;

4. 有限的支撐容量:現有關系型解決方案還無法支撐Google這樣海量的數據存儲;

業界為了解決上面提到的幾個需求,推出了多款新類型的數據庫,并且由于它們在設計上和傳統的NoSQL數據庫相比有很大的不同,所以被統稱為“NoSQL”系列數據庫。總的來說,在設計上,它們非常關注對數據高并發地讀寫和對海量數據的存儲等,與關系型數據庫相比,它們在架構和數據模型方量面做了“減法”,而在擴展和并發等方面做了“加法”。現在主流的NoSQL數據庫有BigTable、HBase、Cassandra、SimpleDB、CouchDB、MongoDB和Redis等。接下來,將關注NoSQL數據庫到底存在哪些優缺點。

#p#

優缺點

在優勢方面,主要體現在下面這三點:

1. 簡單的擴展:典型例子是Cassandra,由于其架構是類似于經典的P2P,所以能通過輕松地添加新的節點來擴展這個集群;

2. 快速的讀寫:主要例子有Redis,由于其邏輯簡單,而且純內存操作,使得其性能非常出色,單節點每秒可以處理超過10萬次讀寫操作;

3. 低廉的成本:這是大多數分布式數據庫共有的特點,因為主要都是開源軟件,沒有昂貴的License成本;

但瑕不掩瑜,NoSQL數據庫還存在著很多的不足,常見主要有下面這幾個:

1. 不提供對SQL的支持:如果不支持SQL這樣的工業標準,將會對用戶產生一定的學習和應用遷移成本;

2. 支持的特性不夠豐富:現有產品所提供的功能都比較有限,大多數NoSQL數據庫都不支持事務,也不像MS SQL Server和Oracle那樣能提供各種附加功能,比如BI和報表等;

3. 現有產品的不夠成熟:大多數產品都還處于初創期,和關系型數據庫幾十年的完善不可同日而語;

上面NoSQL產品的優缺點都是些比較共通的,在實際情況下,每個產品都會根據自己所遵從的數據模型和CAP理念而有所不同,接下來,將給大家介紹NoSQL兩個最重要的概念:數據模型和CAP理念,并在本文最后,對主流的NoSQL數據庫進行分類。

#p#

數據模型

傳統的數據庫在數據模型方面,主要是關系型,它的特色是對Join類操作和ACID事務的支持。在NoSQL領域,主要有三種主流的數據模型:

Column-oriented(列式)

列式也主要使用Table這樣的模型,但是它并不支持類似Join這樣多表的操作,它的主要特點是在存儲數據時,主要圍繞著“列(Column)”,而不是像傳統的關系型數據庫那樣根據“行(Row)”進行存儲,也就是說,屬于同一列的數據會盡可能地存儲在硬盤同一個頁(Page)中,而不是將屬于同一個行的數據存放在一起,這樣做的好處是,對于很多類似數據倉庫(Data Warehouse)的應用,雖然每次查詢都會處理很多數據,但是每次所涉及的列并沒有很多,這樣如果使用列式數據庫的話,將會節省大量I/O,并且大多數列式數據庫都支持Column Family這個特性,通過這個特性能將多個Column并為一個小組,這樣做好處是能將相似Column放在一起存儲,這樣能提高這些Column的存儲和查詢效率。總體而言,這種數據模型的優點是比較適合匯總(Aggregation)和數據倉庫這類應用。.

Key-value

雖然Key-value這種模型和傳統的關系型相比較簡單,有點類似常見的HashTable,一個Key對應一個Value,但是其能提供非常快的查詢速度、大的數據存放量和高并發操作,并非常適合通過主鍵對數據進行查詢和修改等操作,雖然不支持復雜的操作,但是可以通過上層的開發來彌補這個缺陷。

Document(文檔)

在結構上,Document和Key-value是非常相似的,也是一個Key對應一個Value,但是這個Value主要以JSON或者XML等格式的文檔來進行存儲,是有語義的,并且Document DB一般可以對Value來創建Secondary Index來方便上層的應用,而這點是普通Key-Value DB所無法支持的。

#p#

CAP理論

這個理論是由美國著名科學家,同時也是著名互聯網企業Inktomi的創始人Eric Brewer在2000年PODC(Symposium on Principles of Distributed Computing)大會上提出的,后來Seth Gilbert 和 Nancy lynch兩人也證明了CAP理論的正確性,雖然在后來近十年的時間很多人對CAP理論提出了很多異議,但是在NoSQL的世界中,它還是非常有參考價值的。它的意思是,一個分布式系統不能同時滿足一致性,可用性和分區容錯性這三個需求,最多只能同時滿足兩個。

1. 一致性(Consistency):任何一個讀操作總是能讀取到之前完成的寫操作結果,也就是在分布式環境中,多點的數據是一致的;

2. 可用性(Availability):每一個操作總是能夠在確定的時間內返回,也就是系統隨時都是可用的。

3. 分區容忍性(Partition Tolerance): 在出現網絡分區(比如斷網)的情況下,分離的系統也能正常運行。

由于一致性、可用性和分區容忍性這三方面只能選擇兩個,所以大多數NoSQL系統都會根據自己的設計理念來進行相應的選擇,但由于許多NoSQL數據庫都以水平擴展著稱,所以在CAP的選擇上面,都傾向于堅持分區容忍性,而放棄一致性或者可用性,它們的做法主要是通過消減關系型和事務相關的功能。
 

#p#

具體分類

下面的具體分類是來自于Visual Guide to NoSQL Systems一文,雖然對于這塊分類我個人覺得還存在一些牽強的地方,比如將能支持多種CAP配置的Dynamo和其衍生產品Cassandra歸類為AP,但是總體而言,這個分類還是相當不錯,在現階段非常具有參考價值,在每個相關的數據庫后面還會介紹對應的數據模型。

 

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

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

這些數據庫對于分區容忍性方面比較不感冒,主要采用復制(Replication)這種方式來保證數據的安全性,常見的CA系統有:

1. 傳統關系型數據庫,比如Postgres和MySQL等(Relational) ;

2. Vertica (Column-oriented) ;

3. Aster Data (Relational) ;

4. Greenplum (Relational) ;

關注一致性和分區容忍性的(CP)

這種系統將數據分布在多個網絡分區的節點上,并保證這些數據的一致性,但是對于可用性的支持方面有問題,比如當集群出現問題的話,節點有可能因無法確保數據是一致性的而拒絕提供服務,主要的CP系統有:

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) ;

關于可用性和分區容忍性的(AP)

這類系統主要以實現"最終一致性(Eventual Consistency)"來確保可用性和分區容忍性,AP的系統有:

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) ;

在下一期云計算背后的秘密中,將重點給大家介紹我個人設計一款的NoSQL數據庫,名為YunTable。

參考資料

1. Visual Guide to NoSQL Systems

2. NoSQL數據庫筆談

3. NoSQL數據庫探討之一 - 為什么要用非關系數據庫?

作者簡介

吳朱華,之前在IBM中國研究院參與過多個云計算產品的開發工作,現在專注于YunTable【http://code.google.com/p/yuntable/】和YunEngine【http://yunengine.com/】的研發,并即將發表《剖析云計算》一書,敬請期待。
 

【編輯推薦】

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

 

責任編輯:王勇 來源: it168
相關推薦

2010-11-25 09:54:14

云計算MapReduce

2010-11-29 10:28:32

云計算BigTable

2010-11-25 10:05:51

云計算GFS

2010-12-06 14:28:56

云計算Chubby

2010-10-12 10:58:13

NoSQL

2011-02-17 09:45:40

云計算RPC框架

2011-01-04 10:00:41

云計算YunTable

2010-02-23 16:00:21

Oracle數據庫機

2011-01-06 16:36:05

云計算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大數據

2021-09-28 09:25:05

NoSQL數據庫列式數據庫

2010-03-25 15:46:18

云計算

2023-03-02 12:35:31

2011-10-09 09:38:03

OracleNoSQL

2020-04-15 13:55:28

Kubernetes容器

2020-10-31 22:01:40

NoSQL數據庫

2017-05-25 10:11:46

數據庫令牌節點
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲性视频 | 久久久久久久久99 | 婷婷久久精品一区二区 | 视频一区二区三区四区五区 | 久草.com| 国产精品久久久久一区二区三区 | 天天久久 | 久久久精品 | 91精品久久久久久久久99蜜臂 | 中文字幕 视频一区 | 亚洲一区视频在线播放 | 视频在线观看一区 | 天天天操天天天干 | 99色播| 国产精品久久久久久久久久妇女 | 97伦理电影网| 一级免费毛片 | 男女羞羞视频在线免费观看 | 91精品国产综合久久久亚洲 | 91在线精品视频 | 国产精品成人久久久久 | 一区二区视频免费观看 | 国产美女特级嫩嫩嫩bbb片 | av国产精品 | 亚洲字幕在线观看 | 亚洲国产精品激情在线观看 | 日韩av一区二区在线观看 | 久久久欧洲 | www.av在线 | 中文一区 | 久久精品亚洲国产奇米99 | av中文在线观看 | 久久国产精品视频观看 | 欧美二区在线 | 亚洲高清在线观看 | 精品视频在线免费观看 | 国产精品夜色一区二区三区 | 美人の美乳で授乳プレイ | 午夜精品久久久久久久99黑人 | 网站黄色在线免费观看 | 国产99久久精品一区二区永久免费 |