NoSQL學習筆記(一)之概述

來源:互聯網
上載者:User

1.綜述     

NoSQL資料庫是一個對於傳統SQL資料庫的一種挑戰,由於現在企業和互連網應用資料量的膨脹,SQL已經不能支援這樣的海量資料的分布式儲存和高速讀寫,所以NoSQL應運而生。NoSQL通過key-value這樣一種簡單高效的資料存放區方式提高了資料庫效能。

2.理論

CAP,BASE和最終一致性是NoSQL資料庫存在的三大基石。下面詳細的說說這3個理論。

2.1CAP理論

C: Consistency 一致性(對於多使用者,讀寫的資料變動同步)

A: Availability 可用性(快速擷取資料)

P: Tolerance of network Partition 分區容錯性(分布式可靠性)

CAP理論是由Eric Brewer教授提出的,CAP理論的核心是:一個分布式系統不可能滿足一致性,可用性和分區容錯性這三個需求,最多隻能同時滿足兩個。

詳見:http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

 

2.2BASE理論

BasicallyAvailble 基本可用(支援分區失敗)

Soft-state 軟狀態/柔性事務(無狀態串連,支援非同步)

Eventual Consistency 最終一致性(不要求高一致性,只要求最終能夠一致)

BASE理論的核心是:犧牲高一致性,獲得可用性或可靠性

詳見:http://www.jdon.com/jivejdon/thread/37625

 

2.3最終一致性理論

(1)強一致性

強一致性(即時一致性)假如A先寫入了一個值到儲存系統,儲存系統保證後續A,B,C的讀取操作都將返回最新值

(2)弱一致性

假如A先寫入了一個值到儲存系統,儲存系統不能保證後續A,B,C的讀取操作能讀取到最新值。此種情況下有一個“不一致性視窗”的概念,它特指從A寫入值,到後續操作A,B,C讀取到最新值這一段時間。

(3)最終一致性

最終一致性是弱一致性的一種特例。假如A首先write了一個值到儲存系統,儲存系統保證如果在A,B,C後續讀取之前沒有其它寫操作更新同樣的值的話,最終所有的讀取操作都會讀取到最A寫入的最新值。此種情況下,如果沒有失敗發生的話,“不一致性視窗”的大小依賴於以下的幾個因素:互動延遲,系統的負載,以及複製技術中replica的個數(這個可以理解為master/salve模式中,salve的個數),最終一致性方面最出名的系統可以說是 DNS系統,當更新一個網域名稱的IP以後,根據配置策略以及緩衝控制策略的不同,最終所有的客戶都會看到最新的值。

詳見:http://www.allthingsdistributed.com/2008/12/eventually_consistent.html

 

3.技術

3.1分布式儲存

(1)Master/Slave

優點:成熟穩定

缺點:寫操作單點故障,slave延遲

(2)Multi-master

優點:多master解決單點故障

缺點:不易實現一致性

(3)Two phase commit

優點:簡單的一致性演算法

缺點:無容錯

(4)Three phase commit

優點:允許發生單點故障後達成一致。

詳見:http://sebug.net/paper/databases/nosql/Nosql.html#_08464202471077442_91161458194

 

3.2一致性hash

一致性hash是一種巧妙的hash演算法,在解決分布式系統負載平衡問題上很有效。

詳見:http://www.cnblogs.com/leoo2sk/archive/2011/08/11/consistent-hashing-intro.html

 

3.3Quorum NRW

N: 複製的節點數量

R: 成功讀操作的最小節點數

W: 成功寫操作的最小節點數

W + R > N,強一致性

W + R <=N,最終一致性

詳見:http://sebug.net/paper/databases/nosql/Nosql.html#NRW_012323816604251636_2127662_10272764961707637

 

 

3.4Vector Clock

對於W=1 R=N的情況,會出現複雜的合并問題。此時可以通過Vector Clock方式解決。如果系統不需要很大彈性,W=N可以簡化設計。

詳見:http://en.wikipedia.org/wiki/Vector_clock

 

3.5Gossip

病毒式傳播方式,每個節點保持一個Vector Clock和一個state version tree,目前正在被Cassandra使用。

詳見:

http://sebug.net/paper/databases/nosql/Nosql.html#gossip_34187653195112944_16061_08507828080528557

 

4.主流NoSQL產品

(1)Big Table(Google)

(2)Dyname(Amazon)

(3)HBase(Apache)

(4)Cassandra(Facebook)

(5)CouchDB(Apache)

(6)MongoDB

(7)Redis

(8)Riak

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.