(一)NoSQL概念(Not Only SQL )
泛指非關系型的資料庫
這些類型的資料存儲不需要固定的模式, 無需多餘的操作可以橫向擴充
NoSQL資料庫的産生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題,包括超大規模資料的存儲。
(二)NoSQL資料庫特點
1.易擴充:
nosql資料庫種類繁多,但是一個共同的特點都是去掉關系資料庫的關系型特性
資料之間無關系 , 這樣非常容易擴充 無形之間,在架構的層面上到來了可擴充的能力
2.大資料量高性能:
nosql資料庫都具有非常高的讀寫性能,尤其在大資料量下,同樣表現優秀,得于它的無關系性,資料庫的結構簡單.
一般MySql使用Query Cache 每次表的更新Cache(高速緩沖存儲器)就失效, 是一種大力度的Cache(高速緩沖存儲器)
在針對web2.0互動頻繁的應用 , Cache性能不高 而nosql 的Cache是記錄級的
就是一種細粒度的Cache(高速緩沖存儲器) 是以nosql在這個層面上來說就要性能高很多了
3.多樣靈活的資料模型:
NoSQL無需事先為要存儲的資料建立字段,随時可以存儲自定義的資料格式。而在關系資料庫裡,增删字段是一件非常麻煩的事情。如果是非常大資料量的表,增加字段簡直就是一個噩夢。
(三)談談對redis的了解:
KV:鍵值對存儲
Cache:緩存
Persistence:持久化
(四)傳統RDBMS vs NOSQL
(1)RDBMS(關系型資料庫)
1、高度組織化結構化資料
2、結構化查詢語言 SQL
3、資料和關系都存儲在單獨的表中
4、資料操縱語言,資料定義語言
5、嚴格的一緻性
6、基礎事物
(2)NoSQL(非關系型資料庫)
1、代表着不僅僅是SQL
2、沒有聲明性查詢語言
3、沒有預定義的模式
4、鍵值對存儲,列存儲,文檔存儲,圖形資料庫
5、最終一緻性,而非ACID屬性
6、CAP定理
7、高性能,高可用和可伸縮性
(五)NoSQL的3V+3高
(1)資料時代的3V:
1.海量Volume
2.多樣Variety
3.實時Velocity
IDC的定義描述了大資料時代的三大特征,即俗稱的“3V”。
第一個是Volume(海量),資料容量越來越大;
第二個是Velocity(速度),資料量增長越來越快,需要處理的速度和響應越來越快;
第三個是Variety(多樣性),指各種各樣類型的資料出現,過去的資料更多的是結構化的,現在越來越多的資料是半結構,甚至是完全沒有結構的資料,如文本、郵件甚至于語音、視訊等。
“3V”是對大資料最基本特征的歸納,得到業界的共識。
(2)網際網路需求的3高:
高并發
高可擴
高性能
(六)NoSQL資料模型簡介
聚合模型
1.kv鍵值對
2.Bson(JSON串)
3.列族(列族-->列鍵)
4.圖形
(七)NoSQL資料庫的四大分類
1.鍵值(Key-Value)存儲資料庫
2.文檔型資料庫(bson格式比較多)
3.圖關系資料庫
4.列存儲資料庫
(八) 分布式資料庫中CAP原理CAP+BASE
(1)傳統的ACID是什麼(關系型資料庫遵循ACID規則)
事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性:
A (Atomicity) 原子性
C (Consistency) 一緻性
I (Isolation) 獨立性
D (Durability) 持久性
(2)NoSQL之CAP
C:Consistency(強一緻性)
A:Availability(可用性)
P:Partition tolerance(分區容錯性)
CAP理論就是說在分布式存儲系統中,最多隻能實作上面的兩點
分區容忍性是我們必須需要實作的.也是就P(分區容錯性)
(1).分布式架構的時候必須做出取舍。
(2).強一緻性( C )和可用性( A)之間取一個平衡 ! 如下:
CA: 傳統Oracle資料庫
AP: 大多數網站架構的選擇
CP: Redis、Mongodb
(3)BASE
BASE就是為了解決關系資料庫強一緻性引起的問題而引起的可用性降低而提出的解決方案。
BASE其實是下面三個術語的縮寫:
1.基本可用(Basically Available)
2.軟狀态(Soft state)
3.最終一緻(Eventually consistent)
它的思想是通過讓系統放松對某一時刻資料一緻性的要求來換取系統整體伸縮性和性能上改觀。為什麼這麼說呢,緣由就在于大型系統往往由于地域分布和極高性能的要求,不可能采用分布式事務來完成這些名額,要想獲得這些名額,我們必須采用另外一種方式來完成,這裡BASE就是解決這個問題的辦法
(九)分布式+叢集簡介
1.分布式:不同的多台伺服器上面部署不同的服務子產品(工程),他們之間通過Rpc/Rmi之間通信和調用,對外提供服務群組内協作。
2.叢集:不同的多台伺服器上面部署相同的服務子產品,通過分布式排程軟體進行統一的排程,對外提供服務和通路。