當前位置:首頁 » NoSQL教學

NoSQL介紹

什麼是NoSQL?本章主要介紹了一些目前的NoSql的一些主要技術,算法和思想。同時列舉了大量的現有的數據庫實例。讀完全篇,相信讀者會對NoSQL數據庫了解個大概。

本章主要介紹了一些目前的NoSql的一些主要技術,算法和思想。同時列舉了大量的現有的數據庫實例。讀完全篇,相信讀者會對NoSQL數據庫了解個大概。
另外我還準備開發一個開源內存數據庫galaxydb.本書也是為這個數據庫提供一些架構資料。

CAPBASE和最終一致性是NoSQL數據庫存在的三大基石。而五分鐘法則是內存數據存儲了理論依據。這個是一切的源頭。

CAP


· C: Consistency 一致性

· A: Availability 可用性(指的是快速獲取數據)

· P: Tolerance of network Partition 分區容忍性(分布式)


10年前,Eric Brewer教授指出了著名的CAP理論,後來Seth Gilbert 和 Nancy lynch兩人證明了CAP理論的正確性。CAP理論告訴我們,一個分布式係統不可能滿足一致性,可用性和分區容錯性這三個需求,最多隻能同時滿足兩個。

熊掌與魚不可兼得也。關注的是一致性,那麼您就需要處理因為係統不可用而導致的寫操作失敗的情況,而如果您關注的是可用性,那麼您應該知道係統的read操作可能不能精確的讀取到write操作寫入的最新值。因此係統的關注點不同,相應的采用的策略也是不一樣的,隻有真正的理解了係統的需求,才有可能利用好CAP理論。

作為架構師,一般有兩個方向來利用CAP理論

1 key-value存儲,如Amaze Dynamo等,可根據CAP三原則靈活選擇不同傾向的數據庫產品。

2 領域模型 分布式緩存 存儲 (Qi4jNoSql運動),可根據CAP三原則結合自己項目定製靈活的分布式方案,難度高。

我準備提供第三種方案:實現可以配置CAP的數據庫,動態調配CAP

· CA:傳統關係數據庫

· APkey-value數據庫

而對大型網站,可用性與分區容忍性優先級要高於數據一致性,一般會儘量朝著 A的方向設計,然後通過其它手段保證對於一致性的商務需求。架構設計師不要精力浪費在如何設計能滿足三者的完美分布式係統,而是應該進行取舍。

不同數據對於一致性的要求是不同的。舉例來講,用戶評論對不一致是不敏感的,可以容忍相對較長時間的不一致,這種不一致並不會影響交易和用戶體驗。而產品價格數據則是非常敏感的,通常不能容忍超過10秒的價格不一致。
 

CAP理論的證明:Brewer's CAP Theorem