大数据技术原理与应用学习笔记(五)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(五)
- 本系列歷史文章
- NoSQL數(shù)據(jù)庫(kù)
- NoSQL概述(Not Only SQL)
- NoSQL特點(diǎn)
- MySQL集群方式的缺陷
- 傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)缺陷
- NoSQL興起的原因
- NoSQL與關(guān)系型數(shù)據(jù)庫(kù)的比較
- NoSQL的四大類型
- 鍵值數(shù)據(jù)庫(kù)——鍵值對(duì)
- 列族數(shù)據(jù)庫(kù)——列族
- 文檔數(shù)據(jù)庫(kù)——文檔
- 圖數(shù)據(jù)庫(kù)——圖
- NoSQL的理論基石
- CAP理論
- 從NoSQL到NewSQL數(shù)據(jù)庫(kù)
- MongoDB——(C++、分布式、開源)
- 補(bǔ)充
本系列歷史文章
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(一)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(二)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(三)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(四)
NoSQL數(shù)據(jù)庫(kù)
NoSQL概述(Not Only SQL)
NoSQL特點(diǎn)
- 靈活的擴(kuò)展性
- 靈活的數(shù)據(jù)模型
- 和云計(jì)算緊密結(jié)合
MySQL集群方式的缺陷
- 復(fù)雜性
- 延遲性
- 擴(kuò)容問題
傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)缺陷
- 無(wú)法滿足海量數(shù)據(jù)的管理要求
- 無(wú)法滿足數(shù)據(jù)高并發(fā)需求
- 無(wú)法滿足高擴(kuò)展性和高可用性要求
NoSQL興起的原因
- 關(guān)系型數(shù)據(jù)庫(kù)無(wú)法滿足Web 2.0需求
- 數(shù)據(jù)模型的局限性
- Web 2.0關(guān)系型數(shù)據(jù)庫(kù)中許多特性沒有發(fā)揮
NoSQL與關(guān)系型數(shù)據(jù)庫(kù)的比較
- 數(shù)據(jù)庫(kù)原理方面,關(guān)系數(shù)據(jù)庫(kù)有完備的關(guān)系代數(shù)理論作為基礎(chǔ),而NoSQL缺乏統(tǒng)一的理論基礎(chǔ);
- 數(shù)據(jù)規(guī)模方面,關(guān)系型數(shù)據(jù)庫(kù)很難實(shí)現(xiàn)橫向擴(kuò)展,縱向擴(kuò)展非常有限,而NoSQL具有非常好的水平可擴(kuò)展性;
- 數(shù)據(jù)庫(kù)模式方面,關(guān)系型數(shù)據(jù)庫(kù)定義了嚴(yán)格的數(shù)據(jù)庫(kù)模式,而且要嚴(yán)格遵守,而NoSQL的數(shù)據(jù)模型非常靈活;
- 在查詢效率方面,關(guān)系型數(shù)據(jù)庫(kù)適當(dāng)量級(jí)查詢效率較高,當(dāng)量級(jí)較大時(shí),效率會(huì)下降,而NoSQL在未構(gòu)建面向復(fù)雜查詢的索引查詢性能差;
- 在事務(wù)一致性方面,關(guān)系型數(shù)據(jù)庫(kù)遵循ACID事務(wù)模型可以保證事務(wù)強(qiáng)一致性;
- 在數(shù)據(jù)完整性方面,關(guān)系型數(shù)據(jù)庫(kù)具有保證完整性的完備機(jī)制,而NoSQL不能實(shí)現(xiàn)完整性約束;
- 在可用性方面,關(guān)系型數(shù)據(jù)庫(kù)保證了嚴(yán)格的一致性,所以其可用性就削弱,而NoSQL具有非常好的可用性,響應(yīng)快;
- 在標(biāo)準(zhǔn)化方面,關(guān)系型數(shù)據(jù)庫(kù)遵循SQL標(biāo)準(zhǔn),而NoSQL暫未形成通用的行業(yè)標(biāo)準(zhǔn);
- 在技術(shù)支持方面,關(guān)系型數(shù)據(jù)庫(kù)已有商業(yè)版關(guān)系數(shù)據(jù)庫(kù),擁有強(qiáng)大的技術(shù)支持,而NoSQL仍處于初期階段,大多為開源產(chǎn)品;
- 在可維護(hù)性方面,關(guān)系型數(shù)據(jù)庫(kù)需要管理員維護(hù),而NoSQL還沒有成熟的基礎(chǔ),且實(shí)踐維護(hù)較為復(fù)雜。
NoSQL的四大類型
NoSQL典型數(shù)據(jù)庫(kù)通常包括鍵值數(shù)據(jù)庫(kù)、列族數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)和圖數(shù)據(jù)庫(kù)。
鍵值數(shù)據(jù)庫(kù)——鍵值對(duì)
列族數(shù)據(jù)庫(kù)——列族
文檔數(shù)據(jù)庫(kù)——文檔
圖數(shù)據(jù)庫(kù)——圖
NoSQL的理論基石
CAP理論
C: 一致性(任意讀操作總能讀到之前寫操作的結(jié)果)
A: 可用性(快速獲取數(shù)據(jù),在確定時(shí)間內(nèi)返回結(jié)果)
P: 分區(qū)容忍性(當(dāng)出現(xiàn)網(wǎng)絡(luò)分區(qū)(一部分節(jié)點(diǎn)無(wú)法與其他節(jié)點(diǎn)通信時(shí))也能正常運(yùn)行)
(注:3個(gè)條件實(shí)現(xiàn)時(shí)最多實(shí)現(xiàn)2個(gè)。)
如:
CA(放棄P): 把所有與事務(wù)相關(guān)的放到同一臺(tái)機(jī)上。(如:MySQL)
CP(放棄A): 受影響服務(wù)器需等待數(shù)據(jù)一致。(如:Neo4j,HBase)
AP(放棄C): 允許系統(tǒng)返回不一致的數(shù)據(jù)。(如:CouchDB,Cassandra)
BASE與ACID
BASE的意義:
- Basically Available:基本可用(允許分區(qū)失敗)
- Soft-State: 軟狀態(tài)(可有一段時(shí)間不同步(滯后性))
- Eventual consistency:最終一致性(可有不一致,但最終一定一致)
與BASE對(duì)應(yīng)的ACID
ACID的意義: - Atomicity:原子性(事物必須是原子工作單元)
- Consistency: 一致性(所有數(shù)據(jù)保持一致)
- Isolation:隔離性(并發(fā)事務(wù)間修改隔離)
- Durability:持久性(事務(wù)完成后,對(duì)系統(tǒng)的影響是永久性的)
設(shè)數(shù)據(jù)冗余份數(shù)為N,更新數(shù)據(jù)時(shí)需保證寫完成的節(jié)點(diǎn)數(shù)W,讀取時(shí)要讀的節(jié)點(diǎn)數(shù)R,
滿足強(qiáng)一致性的要求:W + R > N;
滿足弱一致性的要求:W + R ≤ N;
從NoSQL到NewSQL數(shù)據(jù)庫(kù)
最主要的是了解應(yīng)用場(chǎng)景:
分析型應(yīng)用:NewSQL
事務(wù)型應(yīng)用:OldSQL
互聯(lián)網(wǎng)應(yīng)用:NoSQL
MongoDB——(C++、分布式、開源)
這部分請(qǐng)參考廈大數(shù)據(jù)庫(kù)博客:Ubuntu下MongoDB安裝與使用教程
補(bǔ)充
關(guān)系型數(shù)據(jù)庫(kù)與NoSQL數(shù)據(jù)庫(kù)都起著不同的作用,彼此不可互相取代
| 關(guān)系型數(shù)據(jù)庫(kù) | 以完善的關(guān)系代數(shù)理論作為基礎(chǔ),有嚴(yán)格標(biāo)準(zhǔn),支持事務(wù)ACID四性,借助索引機(jī)制可實(shí)現(xiàn)高效查詢,技術(shù)成熟,有專業(yè)公司的技術(shù)支持。 | 可擴(kuò)展性交差,無(wú)法較好支持海量數(shù)據(jù)存儲(chǔ),數(shù)據(jù)模型過于死板,事務(wù)機(jī)制影響了系統(tǒng)性能等。 |
| NoSQL數(shù)據(jù)庫(kù) | 支持超大規(guī)模數(shù)據(jù)存儲(chǔ),數(shù)據(jù)模型靈活,強(qiáng)大的橫向擴(kuò)展能力 | 缺乏數(shù)學(xué)理論基礎(chǔ),復(fù)雜查詢性能不高,大都不能實(shí)現(xiàn)事務(wù)一致性,很難實(shí)現(xiàn)數(shù)據(jù)完整性,技術(shù)尚不成熟,缺缺乏專業(yè)團(tuán)隊(duì)技術(shù)支持,維護(hù)較困難等。 |
總結(jié)
以上是生活随笔為你收集整理的大数据技术原理与应用学习笔记(五)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 透视校正
- 下一篇: 对象的释放Dispose和Close对比