NoSQL介紹:
NoSQL = Not Only SQL
關(guān)系型數(shù)據(jù)庫遵循ACID規(guī)則:
A:(Atomicity)原子性,事物要么做完,要么就不做,做到一半就只能回滾
C:(Consistency)一致性,數(shù)據(jù)庫一直處于一致狀態(tài),事物運行不會改變數(shù)據(jù)庫原本的一致性
I:(Isolation)獨立性,指的是并發(fā)事物之間不會互相影響
D:(Durability)持久性,一旦事物提交后,所做的修改將會永遠(yuǎn)保存在數(shù)據(jù)庫上
BASE:反ACID模型,犧牲高一致性,獲得可用性或者可靠性
Basically Available:基本可用,支持分區(qū)失敗
Soft state:軟狀態(tài),狀態(tài)可以存在有一段時間不同步,就是異步
Eventually consistent:最終一致,最終數(shù)據(jù)一致性即可,無需時時一致。
CAP定理:(布魯爾定理),分布式
一致性(Consistency):所有節(jié)點在同一時間具有相同的數(shù)據(jù)
可用性(Availability):保證每個請求,不管成功或者失敗都有響應(yīng)
分區(qū)容忍性(Partition tolerance):系統(tǒng)中任意信息的丟失或失敗不會影響系統(tǒng)的就運作
CA,CP,AP理論中,最優(yōu)是AP,一致性可以通過最終一致性
數(shù)據(jù)一致性模型:強(qiáng)一致性,弱一致性,最終一致性
Quorum系統(tǒng)NRW策略:投票半數(shù)以上
N:數(shù)據(jù)總副本數(shù)
R:完成讀操作所需讀取的最少副本數(shù)
W:完成寫操作所需寫入的最少副本數(shù)
強(qiáng)一致性:R+W>N
最終一致性:R+W<=N
兩段式提交:2PC(Two Phase Commint Protocol)
兩類節(jié)點:協(xié)調(diào)者,事物參與者
兩階段:請求階段(由協(xié)調(diào)者發(fā)出請求),事物參與者提交與確認(rèn)階段
時間戳策略:依據(jù)順序執(zhí)行命令的時間戳來保證一致性
Paxos:帕克索斯算法,多個過程,通過消息傳遞,達(dá)成某種一致性
向量時鐘:數(shù)據(jù)集多個副本,每個副本更新類似版本號機(jī)制,同步至其他節(jié)點相同副本
分布式計算的優(yōu)點:
可靠性(容錯),可擴(kuò)展性,資源共享,靈活性,更快的速度,開放系統(tǒng),更高的性能
分布式計算的缺點:
故障排除,軟件,網(wǎng)絡(luò),安全性
http://nosql-database.org/
NoSQL的數(shù)據(jù)存儲模型:
鍵值模型:Key-value存儲
優(yōu)點:O1類型,數(shù)據(jù)查找速度快
缺點:數(shù)據(jù)無結(jié)構(gòu),通過被當(dāng)作字符串或者二進(jìn)制數(shù)據(jù)
應(yīng)用場景:內(nèi)容緩存
實例:Redis,Dynamo
列式模型:
數(shù)據(jù)模型:數(shù)據(jù)按列式存儲,將同一列數(shù)據(jù)存在一起,(關(guān)系型數(shù)據(jù)庫以“行”為準(zhǔn))
優(yōu)點:查找迅速(只有被涉及到的列才會被讀取),可擴(kuò)展性強(qiáng),易于實現(xiàn)分布式
缺點:功能相對SQL很有限
應(yīng)用場景:分布式文件系統(tǒng)或分布式存儲
實例:Hadoop/HBase,Cassandra
文檔模型:
數(shù)據(jù)模型:與鍵值模型類型,value指向結(jié)構(gòu)化數(shù)據(jù),可以嵌套文檔
優(yōu)點:數(shù)據(jù)格式要求不嚴(yán)格,無需事先定義結(jié)構(gòu),自動分片
缺點:查詢性能不是特別高,缺乏同意查詢語法
應(yīng)用場景:web應(yīng)用(字段按需創(chuàng)建,比較靈活)
實例:MongoDB,CouchDB,Elastic
圖式模型:
數(shù)據(jù)模型:圖結(jié)構(gòu)模型
優(yōu)點:利用圖結(jié)構(gòu)相關(guān)算法提高性能,特殊場景應(yīng)用需求
缺點:難以實現(xiàn)分布式,功能在特別方向才合適
應(yīng)用場景:社交網(wǎng)絡(luò),推薦系統(tǒng),關(guān)系圖譜
實例:Neo4J