一.能干嘛
1.易擴展
NoSQL數(shù)據(jù)庫種類繁多,但是一個共同的特點都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性。
數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴展。也無形之間,在架構(gòu)的層面上帶來了可擴展的能力。
2.大數(shù)據(jù)量高性能
NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。
這得益于它的無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡單。
一般MySQL使用Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,
在針對web2.0的交互頻繁的應(yīng)用,Cache性能不高。而NoSQL的Cache是記錄級的,
是一種細粒度的Cache,所以NoSQL在這個層面上來說就要性能高很多了
3.多樣靈活的數(shù)據(jù)模型
NoSQL無需事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫里,
增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡直就是一個噩夢
4.傳統(tǒng)RDBMS VS NOSQL
RDBMS
- 高度組織化結(jié)構(gòu)化數(shù)據(jù)
- 結(jié)構(gòu)化查詢語言(SQL)
- 數(shù)據(jù)和關(guān)系都存儲在單獨的表中。
- 數(shù)據(jù)操縱語言,數(shù)據(jù)定義語言
- 嚴格的一致性
- 基礎(chǔ)事務(wù)
NoSQL
- 代表著不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預(yù)定義的模式
-鍵 - 值對存儲,列存儲,文檔存儲,圖形數(shù)據(jù)庫 - 最終一致性,而非ACID屬性
- 非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)
- CAP定理
- 高性能,高可用性和可伸縮性
二.3V+3高
1.大數(shù)據(jù)時代的3V
海量Volume
多樣Variety
實時Velocity
2.互聯(lián)網(wǎng)需求的3高
高并發(fā)
高可擴
高性能
三.NoSQL數(shù)據(jù)模型簡介
1.KV鍵值
2.Bson(json)
3.列族
顧名思義,是按列存儲數(shù)據(jù)的。最大的特點是方便存儲結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),方便做數(shù)據(jù)壓縮,
對針對某一列或者某幾列的查詢有非常大的IO優(yōu)勢。

4.圖形

四.NoSQL數(shù)據(jù)庫的四大分類
1.傳統(tǒng)的ACID分別是什么
A (Atomicity) 原子性;
C (Consistency) 一致性;
I (Isolation) 獨立性;
D (Durability) 持久性;
2.CAP
C:Consistency(強一致性)
A:Availability(可用性)
P:Partition tolerance(分區(qū)容錯性)
CAP理論的核心是:一個分布式系統(tǒng)不可能同時很好的滿足一致性,可用性和分區(qū)容錯性這三個需求,最多只能同時較好的滿足兩個。
因此,根據(jù) CAP 原理將 NoSQL 數(shù)據(jù)庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:
CA - 單點集群,滿足一致性,可用性的系統(tǒng),通常在可擴展性上不太強大。
CP - 滿足一致性,分區(qū)容忍性的系統(tǒng),通常性能不是特別高。
AP - 滿足可用性,分區(qū)容忍性的系統(tǒng),通??赡軐σ恢滦砸蟮鸵恍?。

3.BASE
BASE就是為了解決關(guān)系數(shù)據(jù)庫強一致性引起的問題而引起的可用性降低而提出的解決方案。
BASE其實是下面三個術(shù)語的縮寫:
基本可用(Basically Available)
軟狀態(tài)(Soft state)
最終一致(Eventually consistent)
它的思想是通過讓系統(tǒng)放松對某一時刻數(shù)據(jù)一致性的要求來換取系統(tǒng)整體伸縮性和性能上改觀。為什么這么說呢,緣由就在于大型系統(tǒng)往往由于地域分布和極高性能的要求,不可能采用分布式事務(wù)來完成這些指標,要想獲得這些指標,我們必須采用另外一種方式來完成,這里BASE就是解決這個問題的辦法
4.分布式+集群簡介
分布式:不同的多臺服務(wù)器上面部署不同的服務(wù)模塊(工程),他們之間通過Rpc/Rmi之間通信和調(diào)用,對外提供服務(wù)和組內(nèi)協(xié)作。
集群:不同的多臺服務(wù)器上面部署相同的服務(wù)模塊,通過分布式調(diào)度軟件進行統(tǒng)一的調(diào)度,對外提供服務(wù)和訪問。