NoSQL介紹:
NoSQL = Not Only SQL
關(guān)系型數(shù)據(jù)庫(kù)遵循ACID規(guī)則:
A:(Atomicity)原子性玫坛,事物要么做完秽晚,要么就不做罢杉,做到一半就只能回滾
C:(Consistency)一致性馆衔,數(shù)據(jù)庫(kù)一直處于一致狀態(tài)井誉,事物運(yùn)行不會(huì)改變數(shù)據(jù)庫(kù)原本的一致性
I:(Isolation)獨(dú)立性蕉扮,指的是并發(fā)事物之間不會(huì)互相影響
D:(Durability)持久性,一旦事物提交后颗圣,所做的修改將會(huì)永遠(yuǎn)保存在數(shù)據(jù)庫(kù)上
BASE:反ACID模型喳钟,犧牲高一致性,獲得可用性或者可靠性
Basically Available:基本可用在岂,支持分區(qū)失敗
Soft state:軟狀態(tài)奔则,狀態(tài)可以存在有一段時(shí)間不同步,就是異步
Eventually consistent:最終一致蔽午,最終數(shù)據(jù)一致性即可易茬,無(wú)需時(shí)時(shí)一致。
CAP定理:(布魯爾定理)及老,分布式
一致性(Consistency):所有節(jié)點(diǎn)在同一時(shí)間具有相同的數(shù)據(jù)
可用性(Availability):保證每個(gè)請(qǐng)求抽莱,不管成功或者失敗都有響應(yīng)
分區(qū)容忍性(Partition tolerance):系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的就運(yùn)作
CA,CP,AP理論中,最優(yōu)是AP骄恶,一致性可以通過(guò)最終一致性
數(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é)點(diǎn):協(xié)調(diào)者腹侣,事物參與者
兩階段:請(qǐng)求階段(由協(xié)調(diào)者發(fā)出請(qǐng)求)黔酥,事物參與者提交與確認(rèn)階段
時(shí)間戳策略:依據(jù)順序執(zhí)行命令的時(shí)間戳來(lái)保證一致性
Paxos:帕克索斯算法营勤,多個(gè)過(guò)程掠拳,通過(guò)消息傳遞搅幅,達(dá)成某種一致性
向量時(shí)鐘:數(shù)據(jù)集多個(gè)副本考抄,每個(gè)副本更新類似版本號(hào)機(jī)制展姐,同步至其他節(jié)點(diǎn)相同副本
分布式計(jì)算的優(yōu)點(diǎn):
可靠性(容錯(cuò))蜕该,可擴(kuò)展性犁柜,資源共享,靈活性堂淡,更快的速度馋缅,開放系統(tǒng)扒腕,更高的性能
分布式計(jì)算的缺點(diǎn):
故障排除,軟件萤悴,網(wǎng)絡(luò)瘾腰,安全性
http://nosql-database.org/
NoSQL的數(shù)據(jù)存儲(chǔ)模型:
鍵值模型:Key-value存儲(chǔ)
優(yōu)點(diǎn):O1類型,數(shù)據(jù)查找速度快
缺點(diǎn):數(shù)據(jù)無(wú)結(jié)構(gòu)覆履,通過(guò)被當(dāng)作字符串或者二進(jìn)制數(shù)據(jù)
應(yīng)用場(chǎng)景:內(nèi)容緩存
實(shí)例:Redis,Dynamo
列式模型:
數(shù)據(jù)模型:數(shù)據(jù)按列式存儲(chǔ)蹋盆,將同一列數(shù)據(jù)存在一起,(關(guān)系型數(shù)據(jù)庫(kù)以“行”為準(zhǔn))
優(yōu)點(diǎn):查找迅速(只有被涉及到的列才會(huì)被讀取)硝全,可擴(kuò)展性強(qiáng)栖雾,易于實(shí)現(xiàn)分布式
缺點(diǎn):功能相對(duì)SQL很有限
應(yīng)用場(chǎng)景:分布式文件系統(tǒng)或分布式存儲(chǔ)
實(shí)例:Hadoop/HBase,Cassandra
文檔模型:
數(shù)據(jù)模型:與鍵值模型類型,value指向結(jié)構(gòu)化數(shù)據(jù)伟众,可以嵌套文檔
優(yōu)點(diǎn):數(shù)據(jù)格式要求不嚴(yán)格析藕,無(wú)需事先定義結(jié)構(gòu),自動(dòng)分片
缺點(diǎn):查詢性能不是特別高凳厢,缺乏同意查詢語(yǔ)法
應(yīng)用場(chǎng)景:web應(yīng)用(字段按需創(chuàng)建噪径,比較靈活)
實(shí)例:MongoDB,CouchDB,Elastic
圖式模型:
數(shù)據(jù)模型:圖結(jié)構(gòu)模型
優(yōu)點(diǎn):利用圖結(jié)構(gòu)相關(guān)算法提高性能,特殊場(chǎng)景應(yīng)用需求
缺點(diǎn):難以實(shí)現(xiàn)分布式数初,功能在特別方向才合適
應(yīng)用場(chǎng)景:社交網(wǎng)絡(luò)找爱,推薦系統(tǒng),關(guān)系圖譜
實(shí)例:Neo4J