NoSql概述

一.能干嘛

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)勢。

image.png

4.圖形

image.png

四.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),通??赡軐σ恢滦砸蟮鸵恍?。

image.png

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.分布式+集群簡介

  1. 分布式:不同的多臺服務(wù)器上面部署不同的服務(wù)模塊(工程),他們之間通過Rpc/Rmi之間通信和調(diào)用,對外提供服務(wù)和組內(nèi)協(xié)作。

  2. 集群:不同的多臺服務(wù)器上面部署相同的服務(wù)模塊,通過分布式調(diào)度軟件進行統(tǒng)一的調(diào)度,對外提供服務(wù)和訪問。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容