什么是NoSql?
NoSql是非關(guān)系型數(shù)據(jù)庫,是英文not only sql的縮寫,是對不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)的統(tǒng)稱用狱。NoSql用于超大規(guī)模數(shù)據(jù)的存儲(chǔ)(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數(shù)據(jù))笔呀。這些數(shù)據(jù)無需固定的存儲(chǔ)模式偶器,無需多余操作就可以橫向擴(kuò)展觉壶。
為什么需要NoSql?
今天我們可以通過第三方平臺(tái)(如:Google和Facebook)可以很容易的訪問和抓取數(shù)據(jù)脑题。用戶的個(gè)人信息,社交網(wǎng)絡(luò)铜靶,地理位置叔遂,用戶生成的數(shù)據(jù)和用戶操作日志已經(jīng)成倍的增加。我們?nèi)绻獙@些用戶數(shù)據(jù)進(jìn)行挖掘争剿,那SQL數(shù)據(jù)庫已經(jīng)不適合這些應(yīng)用了, NoSQL 數(shù)據(jù)庫的發(fā)展卻能很好的處理這些大的數(shù)據(jù)掏熬。
RDBMS vs NoSQL
RDBMS?
- 高度組織化結(jié)構(gòu)化數(shù)據(jù)?
- 結(jié)構(gòu)化查詢語言(SQL) (SQL)?
- 數(shù)據(jù)和關(guān)系都存儲(chǔ)在單獨(dú)的表中。?
- 數(shù)據(jù)操縱語言秒梅,數(shù)據(jù)定義語言?
- 嚴(yán)格的一致性
- 基礎(chǔ)事務(wù)
NoSQL?
- 代表著不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預(yù)定義的模式
-鍵 - 值對存儲(chǔ),列存儲(chǔ)舌胶,文檔存儲(chǔ)捆蜀,圖形數(shù)據(jù)庫
- 最終一致性,而非ACID屬性
- 非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)
- CAP定理?
- 高性能幔嫂,高可用性和可伸縮性
NoSQL 簡史
NoSQL一詞最早出現(xiàn)于1998年辆它,是Carlo Strozzi開發(fā)的一個(gè)輕量、開源履恩、不提供SQL功能的關(guān)系數(shù)據(jù)庫锰茉。
2009年,Last.fm的Johan Oskarsson發(fā)起了一次關(guān)于分布式開源數(shù)據(jù)庫的討論[2]切心,來自Rackspace的Eric Evans再次提出了NoSQL的概念飒筑,這時(shí)的NoSQL主要指非關(guān)系型、分布式绽昏、不提供ACID的數(shù)據(jù)庫設(shè)計(jì)模式协屡。
2009年在亞特蘭大舉行的"no:sql(east)"討論會(huì)是一個(gè)里程碑,其口號(hào)是"select fun, profit from real_world where relational=false;"全谤。因此肤晓,對NoSQL最普遍的解釋是"非關(guān)聯(lián)型的",強(qiáng)調(diào)Key-Value Stores和文檔數(shù)據(jù)庫的優(yōu)點(diǎn),而不是單純的反對RDBMS补憾。
CAP定理(CAP theorem)
在計(jì)算機(jī)科學(xué)中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer's theorem), 它指出對于一個(gè)分布式計(jì)算系統(tǒng)來說漫萄,不可能同時(shí)滿足以下三點(diǎn):
一致性(Consistency)?(所有節(jié)點(diǎn)在同一時(shí)間具有相同的數(shù)據(jù))
可用性(Availability)?(保證每個(gè)請求不管成功或者失敗都有響應(yīng))
分隔容忍(Partition tolerance)?(系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作)
CAP理論的核心是:一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿足一致性,可用性和分區(qū)容錯(cuò)性這三個(gè)需求盈匾,最多只能同時(shí)較好的滿足兩個(gè)腾务。
因此,根據(jù) CAP 原理將 NoSQL 數(shù)據(jù)庫分成了滿足 CA 原則威酒、滿足 CP 原則和滿足 AP 原則三 大類:
CA - 單點(diǎn)集群窑睁,滿足一致性,可用性的系統(tǒng)葵孤,通常在可擴(kuò)展性上不太強(qiáng)大担钮。
CP - 滿足一致性,分區(qū)容忍性的系統(tǒng)尤仍,通常性能不是特別高箫津。
AP - 滿足可用性,分區(qū)容忍性的系統(tǒng)宰啦,通乘找#可能對一致性要求低一些。
NoSQL的優(yōu)點(diǎn)/缺點(diǎn)
優(yōu)點(diǎn):
- 高可擴(kuò)展性
- 分布式計(jì)算
- 低成本
- 架構(gòu)的靈活性赡模,半結(jié)構(gòu)化數(shù)據(jù)
- 沒有復(fù)雜的關(guān)系
缺點(diǎn):
- 沒有標(biāo)準(zhǔn)化
- 有限的查詢功能(到目前為止)
- 最終一致是不直觀的程序
BASE
BASE:Basically Available, Soft-state, Eventually Consistent田炭。 由 Eric Brewer 定義。
CAP理論的核心是:一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿足一致性漓柑,可用性和分區(qū)容錯(cuò)性這三個(gè)需求教硫,最多只能同時(shí)較好的滿足兩個(gè)。
BASE是NoSQL數(shù)據(jù)庫通常對可用性及一致性的弱要求原則:
Basically Availble --基本可用
Soft-state --軟狀態(tài)/柔性事務(wù)辆布。 "Soft state" 可以理解為"無連接"的, 而 "Hard state" 是"面向連接"的
Eventual Consistency -- 最終一致性瞬矩, 也是是 ACID 的最終目的。
ACID vs BASE
NoSQL 數(shù)據(jù)庫分類
誰在使用
現(xiàn)在已經(jīng)有很多公司使用了 NoSQL:
Mozilla
Adobe
Foursquare
Digg
McGraw-Hill Education
Vermont Public Radio