版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
NoSQL數(shù)據(jù)庫原理
第1章緒論NoSQL數(shù)據(jù)庫原理1第一章緒論v1.0NoSQL數(shù)據(jù)庫原理1第一章緒論(4:3)v1.0NoSQL數(shù)據(jù)庫原理第2二章NoSQL數(shù)據(jù)庫的基本原理v1.0NoSQL數(shù)據(jù)庫原理第2二章NoSQL數(shù)據(jù)庫的基本原理(4:3)v1.0NoSQL數(shù)據(jù)庫原理第3三章HDFS基本原理v1.0NoSQL數(shù)據(jù)庫原理第3三章HDFS基本原理(4:3)v1.0NoSQL數(shù)據(jù)庫原理第4四章HBase基本原理與使用v1.0NoSQL數(shù)據(jù)庫原理第5五章HBase深入解析v1.0NoSQL數(shù)據(jù)庫原理第6六章Cassandra原理和使用v1.0NoSQL數(shù)據(jù)庫原理第7七章MongoDB原理和使用v1.0NoSQL數(shù)據(jù)庫原理第8八章其他NoSQL數(shù)據(jù)庫簡介v1.02009,(淘寶商城),銷售額是5200萬,27個品牌參與了活動。2010年,“雙11”平均每秒超過2萬元交易,181家店鋪銷售過百萬,總成交額9.36億,這個數(shù)字已經(jīng)超過了香港一天的零售額。2011年,“雙11”總成交額達(dá)到了33.6億。直到12月下旬,“雙11”的包裹才徹底發(fā)完。2012年,淘寶商城正式更名為天貓,天貓“雙11”線上總成交額達(dá)到191億,“雙11”熱潮從線上覆蓋到線下。2013年天貓“雙11”的菜鳥物流第一次亮相,這一年的交易總額達(dá)到362億元。2014年9月,阿里巴巴在美國紐交所上市。天貓“雙11”開始后74秒交易額突破1個億,7小時17分突破200億,全天交易額達(dá)571億元。
2015年,天貓“雙11”最終的交易額達(dá)到912.17億元,移動端占比68.67%,11日當(dāng)天系統(tǒng)交易創(chuàng)建峰值達(dá)到每秒鐘14萬筆,支付寶最高峰值每秒8.59萬筆交易。2016年,天貓“雙11”24小時總成交額達(dá)到1207億元,其中,線上占比為82%,交易峰值達(dá)到了每秒17.5萬筆。、2017年,1687億,七分鐘支付數(shù)破一億,13小時交易額超16年課程介紹互聯(lián)網(wǎng)上的數(shù)據(jù)量(“雙11”的交易量)關(guān)系型數(shù)據(jù)庫事務(wù)一致性非關(guān)系型數(shù)據(jù)庫分布式可擴(kuò)展種類多課程介紹SQLvs.
NoSQL橫向擴(kuò)展能力弱事務(wù)能力弱怎么選擇?第1章緒論目錄1.1數(shù)據(jù)庫的相關(guān)概念1.2大數(shù)據(jù)的技術(shù)體系數(shù)據(jù)庫(Database,DB):數(shù)據(jù)信息的集合,也可以看作按照數(shù)據(jù)結(jié)構(gòu)來存儲和組織信息數(shù)據(jù)的軟件容器或倉庫。數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS):數(shù)據(jù)庫及其管理軟件構(gòu)成了數(shù)據(jù)庫管理系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)的管理和使用等功能。數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,DBS):數(shù)據(jù)庫管理系統(tǒng)及其運(yùn)行的軟硬件環(huán)境、操作人員乃至手冊文檔等內(nèi)容,構(gòu)成一個完整體系,稱為數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫應(yīng)用系統(tǒng)(DatabaseApplicationSystem,DBAS):指在數(shù)據(jù)庫管理系統(tǒng)的支撐下建立的計算機(jī)應(yīng)用系統(tǒng)。第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.1.1關(guān)系型數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的作用數(shù)據(jù)定義數(shù)據(jù)操作數(shù)據(jù)存儲和管理保護(hù)和控制通信和交互第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念人工管理數(shù)據(jù)文件方式管理數(shù)據(jù)層次模型/網(wǎng)絡(luò)模型關(guān)系模型替代品?補(bǔ)充品?數(shù)據(jù)管理方式的變遷1.1.1關(guān)系型數(shù)據(jù)庫管理系統(tǒng)1970年的論文:“大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型”(ARelationalModelofDataforLargeSharedDataBanks),首次提出數(shù)據(jù)庫的關(guān)系模型。所謂第二代數(shù)據(jù)庫系統(tǒng)關(guān)系型數(shù)據(jù)庫的特點(diǎn)數(shù)據(jù)的存儲將獨(dú)立于硬件呈獻(xiàn)給用戶的則是被稱為“關(guān)系”的二維表結(jié)構(gòu)可以通過SQL語句實(shí)現(xiàn)數(shù)據(jù)定義和操作支持事務(wù)和ACID一致性等特性……第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念一個典型的關(guān)系型數(shù)據(jù)表結(jié)構(gòu)描述1.1.2關(guān)系型數(shù)據(jù)庫的瓶頸典型互聯(lián)網(wǎng)業(yè)務(wù)的數(shù)據(jù)總量巨大,且保持持續(xù)增長,數(shù)據(jù)庫系統(tǒng)如何應(yīng)對?縱向擴(kuò)展(Scaleup)?橫向擴(kuò)展(Scaleout)?思考:為什么縱向擴(kuò)展會遇到瓶頸?橫向擴(kuò)展需要解決何種問題?第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.1.2關(guān)系型數(shù)據(jù)庫的瓶頸橫向擴(kuò)展(計算機(jī)集群)需要解決的問題如何管理集群?統(tǒng)一監(jiān)控、管理,還是到每臺計算機(jī)上進(jìn)行監(jiān)管?數(shù)據(jù)如何存儲?使用者如何簡單告訴每臺計算機(jī)存儲哪些數(shù)據(jù)?如何簡單的指揮整個集群共同完成某個數(shù)據(jù)處理任務(wù)?如何提高查詢效率?如有有一臺計算機(jī)出現(xiàn)(臨時或永久)故障,數(shù)據(jù)會不會丟失?數(shù)據(jù)處理任務(wù)會不會失敗或不完整?——即提高容錯性?如何快速發(fā)現(xiàn)并排除故障?……關(guān)系型數(shù)據(jù)庫能否解決上述問題?第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.1.2關(guān)系型數(shù)據(jù)庫的瓶頸關(guān)系型數(shù)據(jù)庫由于數(shù)據(jù)模型、完整性約束和事務(wù)的強(qiáng)一致性等特點(diǎn),導(dǎo)致其難以實(shí)現(xiàn)高效率、易橫向擴(kuò)展的分布式部署架構(gòu),而關(guān)系模型、完整性約束和事務(wù)特性等在典型互聯(lián)網(wǎng)業(yè)務(wù)中(可能)并不能體現(xiàn)出優(yōu)勢。搜索引擎是否需要強(qiáng)事務(wù)特性?日志分析是否需要嚴(yán)格的一致性?第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.1.3NoSQL的特點(diǎn)什么是NoSQL?——一些分布式非關(guān)系型數(shù)據(jù)庫的統(tǒng)稱可以看作基于慣例的歸類,甚至宣傳口號,但并非一種嚴(yán)格定義NoSQL不是反對“SQL”語言,只是簡單表示和RDBMS的不同NoSQL不能替代RDBMS大多起源于互聯(lián)網(wǎng)企業(yè),更適應(yīng)互聯(lián)網(wǎng)業(yè)務(wù)(特定領(lǐng)域下、大數(shù)據(jù)量下的數(shù)據(jù)管理、存儲和簡單查詢)第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念大多是開源免費(fèi)的,但可能缺乏完善的文檔和服務(wù)對比關(guān)系型數(shù)據(jù)庫:NoSQL數(shù)據(jù)庫會采用非關(guān)系的數(shù)據(jù)模型弱化模式或表結(jié)構(gòu)、弱化完整性約束、弱化甚至取消事務(wù)機(jī)制可能無法支持,或不能完整的支持SQL語句目的是實(shí)現(xiàn)強(qiáng)大的分布式部署能力——一般包括分區(qū)容錯性、伸縮性和訪問效率(可用性)等不同類型的關(guān)系型或NoSQL數(shù)據(jù)庫側(cè)重點(diǎn)不同,不能簡單地說誰更優(yōu)秀1.1.3NoSQL的特點(diǎn)第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念2018年9月數(shù)據(jù)庫流行度參考阿里云上的數(shù)據(jù)庫服務(wù)騰訊云上的數(shù)據(jù)庫服務(wù)1.1.4NewSQL的概念NewSQL是一個新的探索方向:融合RDBMS和NoSQL的優(yōu)點(diǎn),構(gòu)造新型數(shù)據(jù)庫1.1.5NoSQL的典型應(yīng)用場景海量日志數(shù)據(jù)、業(yè)務(wù)數(shù)據(jù)或監(jiān)控數(shù)據(jù)的管理和查詢電商購買記錄簡化特殊的或復(fù)雜的數(shù)據(jù)模型處理存儲海量的購物車作為數(shù)據(jù)倉庫、數(shù)據(jù)挖掘系統(tǒng)或OLAP系統(tǒng)的后臺數(shù)據(jù)支撐第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.2.1大數(shù)據(jù)的特征(4V)大容量(Volume):數(shù)據(jù)總量大、利用全集數(shù)據(jù),而非抽樣數(shù)據(jù)多樣化(Variety):強(qiáng)調(diào)不同來源、不同領(lǐng)域的數(shù)據(jù)融合使用有價值(Value):通過查詢、分析數(shù)據(jù)獲取價值,但可能價值密度低,挖掘過程可能較為困難高速率(Velocity):數(shù)據(jù)增長快、需要持續(xù)采集第1章緒論1.2大數(shù)據(jù)的技術(shù)體系VolumeVarietyValueVelocity大數(shù)據(jù)的特征(4V)1.2.2大數(shù)據(jù)的采集在線采集實(shí)時獲取數(shù)據(jù),并進(jìn)行存儲,或進(jìn)行轉(zhuǎn)換、加載等預(yù)處理操作可能對產(chǎn)生數(shù)據(jù)的所謂“生產(chǎn)系統(tǒng)”有一定影響離線采集定期將積累的數(shù)據(jù)上傳到大數(shù)據(jù)系統(tǒng)中技術(shù)上相對簡單難以實(shí)現(xiàn)實(shí)時數(shù)據(jù)分析常見的數(shù)據(jù)采集搜索引擎采集的網(wǎng)頁信息網(wǎng)站采集的用戶訪問記錄電子商務(wù)系統(tǒng)中的用戶瀏覽和購買記錄社交網(wǎng)絡(luò)中的微博、評論和關(guān)注等信息物聯(lián)網(wǎng)系統(tǒng)中采集的設(shè)備信息和傳感器信息銀行、證券系統(tǒng)中的交易記錄設(shè)想一下“共享單車”應(yīng)用中,廠商可能會采集什么樣的數(shù)據(jù)?期中哪些數(shù)據(jù)需要持續(xù)采集?第1章緒論1.2大數(shù)據(jù)的技術(shù)體系1.2.3大數(shù)據(jù)的存儲(1)網(wǎng)絡(luò)存儲提供利用TCP/IP等網(wǎng)絡(luò)協(xié)議訪問數(shù)據(jù)的途徑提供整合多個存儲設(shè)備,進(jìn)行統(tǒng)一管理和使用的途徑DAS提供了一種服務(wù)器直接管理存儲介質(zhì)(比如硬盤)的方法NAS中,每臺設(shè)備(可能包含多塊硬盤),都有自己的文件系統(tǒng),多個存儲設(shè)備之間一般是獨(dú)立的SAN中,多臺存儲設(shè)備共享一套文件系統(tǒng),每臺存儲設(shè)備只處理數(shù)據(jù)“塊”。類比:NAS相當(dāng)于車隊,SAN相當(dāng)于火車第1章緒論1.2大數(shù)據(jù)的技術(shù)體系DAS、NAS和SAN1.2.3大數(shù)據(jù)的存儲(2)云存儲服務(wù)對象存儲文件存儲塊存儲數(shù)據(jù)庫存儲云備份數(shù)據(jù)傳輸、數(shù)據(jù)網(wǎng)關(guān)……第1章緒論1.2大數(shù)據(jù)的技術(shù)體系亞馬遜云計算平臺上的云存儲服務(wù)阿里云平臺上的云存儲服務(wù)1.2.3大數(shù)據(jù)的存儲(3)大數(shù)據(jù)中的數(shù)據(jù)存儲存儲數(shù)據(jù)的目的是查詢和應(yīng)用“計算本地化”策略不是將數(shù)據(jù)匯總到一處進(jìn)行計算,而是將計算邏輯放到各個存儲節(jié)點(diǎn)上執(zhí)行大數(shù)據(jù)場景下,移動計算邏輯(程序)顯然開銷更小大多數(shù)NoSQL系統(tǒng)都采用該策略進(jìn)行數(shù)據(jù)存儲需要解決數(shù)據(jù)分片、多副本等情況產(chǎn)生的一系列技術(shù)問題第1章緒論1.2大數(shù)據(jù)的技術(shù)體系分布式存儲和計算本地化1.2.4大數(shù)據(jù)的管理和使用大數(shù)據(jù)的處理需求數(shù)據(jù)進(jìn)入大數(shù)據(jù)系統(tǒng)時,可能需要對數(shù)據(jù)進(jìn)行切分例如將GB或TB級原始文件分割為多個256MB大小的數(shù)據(jù)塊數(shù)據(jù)進(jìn)入大數(shù)據(jù)系統(tǒng)時可能需要進(jìn)行存儲模式的轉(zhuǎn)換例如將文本數(shù)據(jù)轉(zhuǎn)換為鍵值對格式存儲的數(shù)據(jù)原始數(shù)據(jù)可能需要進(jìn)行預(yù)處理例如統(tǒng)一數(shù)據(jù)單位、填充空白數(shù)據(jù)等數(shù)據(jù)需要通過統(tǒng)計分析、數(shù)據(jù)挖掘等過程來獲得結(jié)論和價值例如分析購買某件商品的客戶還可能會購買哪些其他商品第1章緒論1.2大數(shù)據(jù)的技術(shù)體系1.2.5數(shù)據(jù)可視化有觀點(diǎn)認(rèn)為:“人們接受的信息中約80%來自視覺”有實(shí)驗顯示:對三組經(jīng)濟(jì)學(xué)家就同一個數(shù)據(jù)集詢問了同樣的問題,第一組專家看到的是數(shù)據(jù)和標(biāo)準(zhǔn)數(shù)據(jù)統(tǒng)計分析,72%的受訪者得出錯誤結(jié)論;第二組專家看到的是數(shù)據(jù),統(tǒng)計分析和圖表,61%的受訪者得出錯誤結(jié)論;第三組專家看到的只有圖表,只有3%的受訪者得出錯誤結(jié)論。大數(shù)據(jù)可視化的目的展示數(shù)據(jù)(結(jié)論)的特征展示數(shù)據(jù)呈現(xiàn)的態(tài)勢第1章緒論1.2大數(shù)據(jù)的技術(shù)體系1.2.5數(shù)據(jù)可視化第1章緒論1.2大數(shù)據(jù)的技術(shù)體系“十三五”規(guī)劃中出現(xiàn)最頻繁詞語在“十二五”規(guī)劃中出現(xiàn)的次數(shù)“十三五”規(guī)劃綱要詞云圖1.2.5數(shù)據(jù)可視化在線可視化工具(演示):/examples/第1章緒論1.2大數(shù)據(jù)的技術(shù)體系數(shù)據(jù)分析與可視化工具舉例——網(wǎng)站數(shù)據(jù)統(tǒng)計服務(wù)GoogleAnalytics百度統(tǒng)計()主要功能幫助中小型網(wǎng)站或App對訪問信息進(jìn)行統(tǒng)計分析,幫助運(yùn)營者改進(jìn)內(nèi)容或性能網(wǎng)站或App在網(wǎng)頁中嵌入特定代碼,每次有用戶點(diǎn)擊網(wǎng)頁時會觸發(fā)代碼,向谷歌或百度發(fā)送一條統(tǒng)計信息,從而完成數(shù)據(jù)采集谷歌或百度將數(shù)據(jù)進(jìn)行統(tǒng)計分析、形成可視化報表,供網(wǎng)站或App的運(yùn)營者查看谷歌或百度可能會向成百上千的網(wǎng)站提供服務(wù),需要根據(jù)網(wǎng)站、統(tǒng)計指標(biāo)進(jìn)行數(shù)據(jù)檢索和處理,并且要保證結(jié)果的實(shí)時性和準(zhǔn)確性第1章緒論1.2大數(shù)據(jù)的技術(shù)體系第1章緒論1.2大數(shù)據(jù)的技術(shù)體系百度統(tǒng)計()GoogleAnalytics1.2.6大數(shù)據(jù)安全與治理如何對大數(shù)據(jù)進(jìn)行訪問控制?如何有效的對客戶端進(jìn)行訪問控制集群中各個節(jié)點(diǎn)之間的訪問控制如何對大數(shù)據(jù)進(jìn)行加密?客戶端到集群之間的數(shù)據(jù)加密數(shù)據(jù)加密存儲數(shù)據(jù)整體加密,全部下載后解密?如何保護(hù)用戶隱私?鏈接攻擊與K-匿名第1章緒論1.2大數(shù)據(jù)的技術(shù)體系2006年美國在線(AOL)的一個實(shí)驗室發(fā)布了一個供學(xué)術(shù)界研究的搜索日志數(shù)據(jù)集:該數(shù)據(jù)集包含了65萬個AOL用戶的2千萬個查詢,是這些用戶在2006年3個月中的搜索記錄,包括提交了什么查詢,點(diǎn)擊了哪些頁面等。通過分析搜索日志可以發(fā)現(xiàn)用戶的搜索意圖,進(jìn)行搜索推薦、準(zhǔn)確的廣告投放等。數(shù)據(jù)集公布不久,就爆出了一個編號為4417749的用戶的真實(shí)身份被發(fā)現(xiàn)的事件。該用戶在3個月期間提交了許多有關(guān)自身患病癥狀以及所養(yǎng)寵物的查詢。通過這些查詢定位出了她的居住地,找出她的真實(shí)身份,從而泄露了她的個人隱私。1.2.6大數(shù)據(jù)安全與治理(舉例)Quasi-identifier:準(zhǔn)標(biāo)識符與其他外部數(shù)據(jù)進(jìn)行鏈接,以標(biāo)識個體身份的屬性或?qū)傩越M合,例如性別、生日、郵政編碼等。其具體內(nèi)容和外部數(shù)據(jù)的選擇(獲取能力)有關(guān)鏈接攻擊通過多種外部數(shù)據(jù)進(jìn)行鏈接操作,推理出隱私數(shù)據(jù)的攻擊方法。k-anonymization:通過概括和隱匿技術(shù)、發(fā)布精度較低的數(shù)據(jù),使每條記錄和其他數(shù)據(jù)表中的k-1條記錄具有完全相同的準(zhǔn)標(biāo)識符屬性,以增大鏈接攻擊的難度。由Samarati和Sweeney于1998年提出,是一種被廣泛認(rèn)可的一種保護(hù)隱私的方法。第1章緒論1.2大數(shù)據(jù)的技術(shù)體系隱私信息通過連接操作被泄露(準(zhǔn)標(biāo)識符)
姓名性別生日郵編Tony男72.2.711001John男72.8.1011002Peter男68.1.211002Emily女68.10.321021Lily女65.6.821032Laura女65.9.661801Connie女72.2.761802性別生日郵編收入男72.2.711001高男72.8.1011002中女68.1.221021中女68.10.321032中女65.6.861801高女65.9.661802低姓名性別生日郵編收入Tony男72.2.711001高John男72.8.1011002中Emily女68.1.261021中Lily女68.10.361032中Laura女65.6.861801高Connie女65.9.661802低病人客戶信息(隱私表)選民信息(公開表)病人和選民信息連接后的表k-匿名處理示例性別生日郵編收入男72.2.711001高男72.8.1011002中女68.1.221021中女68.10.321032中女65.6.861801高女65.9.661802低性別生日郵編收入男72.*110*高男72.*110*中女68.*610*中女68.*610*中女65.*618*高女65.*618*低K-匿名客戶表NoSQL的主要特點(diǎn)非關(guān)系型存儲模式通過犧牲事務(wù)、一致性、SQL語句等RDBMS中重要的機(jī)制,換取更好的分布式部署特性和RDBMS有不同的側(cè)重點(diǎn)(大數(shù)據(jù)量、簡單查詢)習(xí)慣統(tǒng)稱,并非嚴(yán)謹(jǐn)定義大數(shù)據(jù)技術(shù)體系4V采集、存儲、使用、管理、可視化和安全NoSQL在大數(shù)據(jù)體系中的作用是什么?第1章緒論小結(jié)NoSQL在大數(shù)據(jù)體系中的作用數(shù)據(jù)存儲工具把數(shù)據(jù)存儲或映射為表格形式,形成便于理解的“行”、“列”、“點(diǎn)”或“線”等概念把數(shù)據(jù)存儲成適于使用的模式(鍵值對、列存儲、圖存儲等)在大部分NoSQL的典型應(yīng)用場景中,實(shí)現(xiàn)分布式存儲數(shù)據(jù)管理工具對數(shù)據(jù)“庫”、“表”或類似的概念進(jìn)行管理對存儲的數(shù)據(jù)進(jìn)行管理,對數(shù)據(jù)的性能和可靠性等進(jìn)行管理對分布式系統(tǒng)進(jìn)行管理,對系統(tǒng)的配置方式、運(yùn)行狀態(tài)等進(jìn)行管理數(shù)據(jù)查詢工具快速查詢海量數(shù)據(jù)提供易用的客戶訪問接口一般無法進(jìn)行過于復(fù)雜的查詢,或查詢性能極低NoSQL一般不會提供實(shí)時數(shù)據(jù)采集功能(需要借助其他工具寫入數(shù)據(jù)庫)提供復(fù)雜的數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析、數(shù)據(jù)挖掘等功能(對比MapReduce、Spark等工具)提供完整的數(shù)據(jù)可視化等功能第1章緒論小結(jié)NoSQL數(shù)據(jù)庫原理
第1章緒論2009,(淘寶商城),銷售額是5200萬,27個品牌參與了活動。2010年,“雙11”平均每秒超過2萬元交易,181家店鋪銷售過百萬,總成交額9.36億,這個數(shù)字已經(jīng)超過了香港一天的零售額。2011年,“雙11”總成交額達(dá)到了33.6億。直到12月下旬,“雙11”的包裹才徹底發(fā)完。2012年,淘寶商城正式更名為天貓,天貓“雙11”線上總成交額達(dá)到191億,“雙11”熱潮從線上覆蓋到線下。2013年天貓“雙11”的菜鳥物流第一次亮相,這一年的交易總額達(dá)到362億元。2014年9月,阿里巴巴在美國紐交所上市。天貓“雙11”開始后74秒交易額突破1個億,7小時17分突破200億,全天交易額達(dá)571億元。
2015年,天貓“雙11”最終的交易額達(dá)到912.17億元,移動端占比68.67%,11日當(dāng)天系統(tǒng)交易創(chuàng)建峰值達(dá)到每秒鐘14萬筆,支付寶最高峰值每秒8.59萬筆交易。2016年,天貓“雙11”24小時總成交額達(dá)到1207億元,其中,線上占比為82%,交易峰值達(dá)到了每秒17.5萬筆。2017年,1687億,七分鐘支付數(shù)破一億,13小時交易額超16年課程介紹互聯(lián)網(wǎng)上的數(shù)據(jù)量(“雙11”的交易量)關(guān)系型數(shù)據(jù)庫事務(wù)一致性非關(guān)系型數(shù)據(jù)庫分布式可擴(kuò)展種類多課程介紹SQLvs.
NoSQL橫向擴(kuò)展能力弱事務(wù)能力弱怎么選擇?第1章緒論目錄1.1數(shù)據(jù)庫的相關(guān)概念1.2大數(shù)據(jù)的技術(shù)體系數(shù)據(jù)庫(Database,DB):數(shù)據(jù)信息的集合,也可以看作按照數(shù)據(jù)結(jié)構(gòu)來存儲和組織信息數(shù)據(jù)的軟件容器或倉庫。數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS):數(shù)據(jù)庫及其管理軟件構(gòu)成了數(shù)據(jù)庫管理系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)的管理和使用等功能。數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,DBS):數(shù)據(jù)庫管理系統(tǒng)及其運(yùn)行的軟硬件環(huán)境、操作人員乃至手冊文檔等內(nèi)容,構(gòu)成一個完整體系,稱為數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫應(yīng)用系統(tǒng)(DatabaseApplicationSystem,DBAS):指在數(shù)據(jù)庫管理系統(tǒng)的支撐下建立的計算機(jī)應(yīng)用系統(tǒng)。第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.1.1關(guān)系型數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的作用數(shù)據(jù)定義數(shù)據(jù)操作數(shù)據(jù)存儲和管理保護(hù)和控制通信和交互第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念人工管理數(shù)據(jù)文件方式管理數(shù)據(jù)層次模型/網(wǎng)絡(luò)模型關(guān)系模型替代品?補(bǔ)充品?數(shù)據(jù)管理方式的變遷1.1.1關(guān)系型數(shù)據(jù)庫管理系統(tǒng)1970年的論文:“大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型”(ARelationalModelofDataforLargeSharedDataBanks),首次提出數(shù)據(jù)庫的關(guān)系模型。關(guān)系型數(shù)據(jù)庫的特點(diǎn)數(shù)據(jù)的存儲將獨(dú)立于硬件呈獻(xiàn)給用戶的則是二維表結(jié)構(gòu)可以通過SQL語句實(shí)現(xiàn)數(shù)據(jù)定義和操作支持事務(wù)和ACID一致性等特性……第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念一個典型的關(guān)系型數(shù)據(jù)表結(jié)構(gòu)描述1.1.2關(guān)系型數(shù)據(jù)庫的瓶頸典型互聯(lián)網(wǎng)業(yè)務(wù)的數(shù)據(jù)總量巨大,且保持持續(xù)增長,數(shù)據(jù)庫系統(tǒng)如何應(yīng)對?縱向擴(kuò)展(Scaleup)?橫向擴(kuò)展(Scaleout)?思考:為什么縱向擴(kuò)展會遇到瓶頸?橫向擴(kuò)展需要解決何種問題?第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.1.2關(guān)系型數(shù)據(jù)庫的瓶頸橫向擴(kuò)展(計算機(jī)集群)需要解決的問題如何管理集群?統(tǒng)一監(jiān)控、管理,還是到每臺計算機(jī)上進(jìn)行監(jiān)管?數(shù)據(jù)如何存儲?使用者如何簡單告訴每臺計算機(jī)存儲哪些數(shù)據(jù)?如何簡單的指揮整個集群共同完成某個數(shù)據(jù)處理任務(wù)?如何提高查詢效率?如有有一臺計算機(jī)出現(xiàn)(臨時或永久)故障,數(shù)據(jù)會不會丟失?數(shù)據(jù)處理任務(wù)會不會失敗或不完整?——即提高容錯性?如何快速發(fā)現(xiàn)并排除故障?……關(guān)系型數(shù)據(jù)庫能否解決上述問題?第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.1.2關(guān)系型數(shù)據(jù)庫的瓶頸關(guān)系型數(shù)據(jù)庫由于數(shù)據(jù)模型、完整性約束和事務(wù)的強(qiáng)一致性等特點(diǎn),導(dǎo)致其難以實(shí)現(xiàn)高效率、易橫向擴(kuò)展的分布式部署架構(gòu),而關(guān)系模型、完整性約束和事務(wù)特性等在典型互聯(lián)網(wǎng)業(yè)務(wù)中(可能)并不能體現(xiàn)出優(yōu)勢。搜索引擎是否需要強(qiáng)事務(wù)特性?日志分析是否需要嚴(yán)格的一致性?第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.1.3NoSQL的特點(diǎn)什么是NoSQL?——一些分布式非關(guān)系型數(shù)據(jù)庫的統(tǒng)稱可以看作基于慣例的歸類,甚至宣傳口號,但并非一種嚴(yán)格定義NoSQL不是反對“SQL”語言,只是簡單表示和RDBMS的不同NoSQL不能替代RDBMS大多起源于互聯(lián)網(wǎng)企業(yè),更適應(yīng)互聯(lián)網(wǎng)業(yè)務(wù)(特定領(lǐng)域下、大數(shù)據(jù)量下的數(shù)據(jù)管理、存儲和簡單查詢)第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念大多是開源免費(fèi)的,但可能缺乏完善的文檔和服務(wù)對比關(guān)系型數(shù)據(jù)庫:NoSQL數(shù)據(jù)庫會采用非關(guān)系的數(shù)據(jù)模型弱化模式或表結(jié)構(gòu)、弱化完整性約束、弱化甚至取消事務(wù)機(jī)制可能無法支持,或不能完整的支持SQL語句目的是實(shí)現(xiàn)強(qiáng)大的分布式部署能力——一般包括分區(qū)容錯性、伸縮性和訪問效率(可用性)等不同類型的關(guān)系型或NoSQL數(shù)據(jù)庫側(cè)重點(diǎn)不同,不能簡單地說誰更優(yōu)秀1.1.3NoSQL的特點(diǎn)第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念2018年9月數(shù)據(jù)庫流行度參考阿里云上的數(shù)據(jù)庫服務(wù)騰訊云上的數(shù)據(jù)庫服務(wù)1.1.4NewSQL的概念NewSQL是一個新的探索方向:融合RDBMS和NoSQL的優(yōu)點(diǎn),構(gòu)造新型數(shù)據(jù)庫1.1.5NoSQL的典型應(yīng)用場景海量日志數(shù)據(jù)、業(yè)務(wù)數(shù)據(jù)或監(jiān)控數(shù)據(jù)的管理和查詢電商購買記錄簡化特殊的或復(fù)雜的數(shù)據(jù)模型處理存儲海量的購物車作為數(shù)據(jù)倉庫、數(shù)據(jù)挖掘系統(tǒng)或OLAP系統(tǒng)的后臺數(shù)據(jù)支撐第1章緒論1.1數(shù)據(jù)庫的相關(guān)概念1.2.1大數(shù)據(jù)的特征(4V)大容量(Volume):數(shù)據(jù)總量大、利用全集數(shù)據(jù),而非抽樣數(shù)據(jù)多樣化(Variety):強(qiáng)調(diào)不同來源、不同領(lǐng)域的數(shù)據(jù)融合使用有價值(Value):通過查詢、分析數(shù)據(jù)獲取價值,但可能價值密度低,挖掘過程可能較為困難高速率(Velocity):數(shù)據(jù)增長快、需要持續(xù)采集第1章緒論1.2大數(shù)據(jù)的技術(shù)體系VolumeVarietyValueVelocity大數(shù)據(jù)的特征(4V)1.2.2大數(shù)據(jù)的采集在線采集實(shí)時獲取數(shù)據(jù),并進(jìn)行存儲,或進(jìn)行轉(zhuǎn)換、加載等預(yù)處理操作可能對產(chǎn)生數(shù)據(jù)的所謂“生產(chǎn)系統(tǒng)”有一定影響離線采集定期將積累的數(shù)據(jù)上傳到大數(shù)據(jù)系統(tǒng)中技術(shù)上相對簡單難以實(shí)現(xiàn)實(shí)時數(shù)據(jù)分析常見的數(shù)據(jù)采集搜索引擎采集的網(wǎng)頁信息網(wǎng)站采集的用戶訪問記錄電子商務(wù)系統(tǒng)中的用戶瀏覽和購買記錄社交網(wǎng)絡(luò)中的微博、評論和關(guān)注等信息物聯(lián)網(wǎng)系統(tǒng)中采集的設(shè)備信息和傳感器信息銀行、證券系統(tǒng)中的交易記錄設(shè)想一下“共享單車”應(yīng)用中,廠商可能會采集什么樣的數(shù)據(jù)?期中哪些數(shù)據(jù)需要持續(xù)采集?第1章緒論1.2大數(shù)據(jù)的技術(shù)體系1.2.3大數(shù)據(jù)的存儲(1)網(wǎng)絡(luò)存儲提供利用TCP/IP等網(wǎng)絡(luò)協(xié)議訪問數(shù)據(jù)的途徑提供整合多個存儲設(shè)備,進(jìn)行統(tǒng)一管理和使用的途徑DAS提供了一種服務(wù)器直接管理存儲介質(zhì)(比如硬盤)的方法NAS中,每臺設(shè)備(可能包含多塊硬盤),都有自己的文件系統(tǒng),多個存儲設(shè)備之間一般是獨(dú)立的SAN中,多臺存儲設(shè)備共享一套文件系統(tǒng),每臺存儲設(shè)備只處理數(shù)據(jù)“塊”。類比:NAS相當(dāng)于車隊,SAN相當(dāng)于火車第1章緒論1.2大數(shù)據(jù)的技術(shù)體系DAS、NAS和SAN1.2.3大數(shù)據(jù)的存儲(2)云存儲服務(wù)對象存儲文件存儲塊存儲數(shù)據(jù)庫存儲云備份數(shù)據(jù)傳輸、數(shù)據(jù)網(wǎng)關(guān)……第1章緒論1.2大數(shù)據(jù)的技術(shù)體系亞馬遜云計算平臺上的云存儲服務(wù)阿里云平臺上的云存儲服務(wù)1.2.3大數(shù)據(jù)的存儲(3)大數(shù)據(jù)中的數(shù)據(jù)存儲存儲數(shù)據(jù)的目的是查詢和應(yīng)用“計算本地化”策略不是將數(shù)據(jù)匯總到一處進(jìn)行計算,而是將計算邏輯放到各個存儲節(jié)點(diǎn)上執(zhí)行大數(shù)據(jù)場景下,移動計算邏輯(程序)顯然開銷更小大多數(shù)NoSQL系統(tǒng)都采用該策略進(jìn)行數(shù)據(jù)存儲需要解決數(shù)據(jù)分片、多副本等情況產(chǎn)生的一系列技術(shù)問題第1章緒論1.2大數(shù)據(jù)的技術(shù)體系分布式存儲和計算本地化1.2.4大數(shù)據(jù)的管理和使用大數(shù)據(jù)的處理需求數(shù)據(jù)進(jìn)入大數(shù)據(jù)系統(tǒng)時,可能需要對數(shù)據(jù)進(jìn)行切分例如將GB或TB級原始文件分割為多個256MB大小的數(shù)據(jù)塊數(shù)據(jù)進(jìn)入大數(shù)據(jù)系統(tǒng)時可能需要進(jìn)行存儲模式的轉(zhuǎn)換例如將文本數(shù)據(jù)轉(zhuǎn)換為鍵值對格式存儲的數(shù)據(jù)原始數(shù)據(jù)可能需要進(jìn)行預(yù)處理例如統(tǒng)一數(shù)據(jù)單位、填充空白數(shù)據(jù)等數(shù)據(jù)需要通過統(tǒng)計分析、數(shù)據(jù)挖掘等過程來獲得結(jié)論和價值例如分析購買某件商品的客戶還可能會購買哪些其他商品第1章緒論1.2大數(shù)據(jù)的技術(shù)體系1.2.5數(shù)據(jù)可視化有觀點(diǎn)認(rèn)為:“人們接受的信息中約80%來自視覺”有實(shí)驗顯示:對三組經(jīng)濟(jì)學(xué)家就同一個數(shù)據(jù)集詢問了同樣的問題,第一組專家看到的是數(shù)據(jù)和標(biāo)準(zhǔn)數(shù)據(jù)統(tǒng)計分析,72%的受訪者得出錯誤結(jié)論;第二組專家看到的是數(shù)據(jù),統(tǒng)計分析和圖表,61%的受訪者得出錯誤結(jié)論;第三組專家看到的只有圖表,只有3%的受訪者得出錯誤結(jié)論。大數(shù)據(jù)可視化的目的展示數(shù)據(jù)(結(jié)論)的特征展示數(shù)據(jù)呈現(xiàn)的態(tài)勢第1章緒論1.2大數(shù)據(jù)的技術(shù)體系1.2.5數(shù)據(jù)可視化第1章緒論1.2大數(shù)據(jù)的技術(shù)體系“十三五”規(guī)劃中出現(xiàn)最頻繁詞語在“十二五”規(guī)劃中出現(xiàn)的次數(shù)“十三五”規(guī)劃綱要詞云圖1.2.5數(shù)據(jù)可視化在線可視化工具(演示):/examples/第1章緒論1.2大數(shù)據(jù)的技術(shù)體系數(shù)據(jù)分析與可視化工具舉例——網(wǎng)站數(shù)據(jù)統(tǒng)計服務(wù)GoogleAnalytics百度統(tǒng)計()主要功能幫助中小型網(wǎng)站或App對訪問信息進(jìn)行統(tǒng)計分析,幫助運(yùn)營者改進(jìn)內(nèi)容或性能網(wǎng)站或App在網(wǎng)頁中嵌入特定代碼,每次有用戶點(diǎn)擊網(wǎng)頁時會觸發(fā)代碼,向谷歌或百度發(fā)送一條統(tǒng)計信息,從而完成數(shù)據(jù)采集谷歌或百度將數(shù)據(jù)進(jìn)行統(tǒng)計分析、形成可視化報表,供網(wǎng)站或App的運(yùn)營者查看谷歌或百度可能會向成百上千的網(wǎng)站提供服務(wù),需要根據(jù)網(wǎng)站、統(tǒng)計指標(biāo)進(jìn)行數(shù)據(jù)檢索和處理,并且要保證結(jié)果的實(shí)時性和準(zhǔn)確性第1章緒論1.2大數(shù)據(jù)的技術(shù)體系第1章緒論1.2大數(shù)據(jù)的技術(shù)體系百度統(tǒng)計()GoogleAnalytics1.2.6大數(shù)據(jù)安全與治理如何對大數(shù)據(jù)進(jìn)行訪問控制?如何有效的對客戶端進(jìn)行訪問控制集群中各個節(jié)點(diǎn)之間的訪問控制如何對大數(shù)據(jù)進(jìn)行加密?客戶端到集群之間的數(shù)據(jù)加密數(shù)據(jù)加密存儲數(shù)據(jù)整體加密,全部下載后解密?如何保護(hù)用戶隱私?鏈接攻擊與K-匿名第1章緒論1.2大數(shù)據(jù)的技術(shù)體系2006年美國在線(AOL)的一個實(shí)驗室發(fā)布了一個供學(xué)術(shù)界研究的搜索日志數(shù)據(jù)集:該數(shù)據(jù)集包含了65萬個AOL用戶的2千萬個查詢,是這些用戶在2006年3個月中的搜索記錄,包括提交了什么查詢,點(diǎn)擊了哪些頁面等。通過分析搜索日志可以發(fā)現(xiàn)用戶的搜索意圖,進(jìn)行搜索推薦、準(zhǔn)確的廣告投放等。數(shù)據(jù)集公布不久,就爆出了一個編號為4417749的用戶的真實(shí)身份被發(fā)現(xiàn)的事件。該用戶在3個月期間提交了許多有關(guān)自身患病癥狀以及所養(yǎng)寵物的查詢。通過這些查詢定位出了她的居住地,找出她的真實(shí)身份,從而泄露了她的個人隱私。1.2.6大數(shù)據(jù)安全與治理(舉例)Quasi-identifier:準(zhǔn)標(biāo)識符與其他外部數(shù)據(jù)進(jìn)行鏈接,以標(biāo)識個體身份的屬性或?qū)傩越M合,例如性別、生日、郵政編碼等。其具體內(nèi)容和外部數(shù)據(jù)的選擇(獲取能力)有關(guān)鏈接攻擊通過多種外部數(shù)據(jù)進(jìn)行鏈接操作,推理出隱私數(shù)據(jù)的攻擊方法。k-anonymization:通過概括和隱匿技術(shù)、發(fā)布精度較低的數(shù)據(jù),使每條記錄和其他數(shù)據(jù)表中的k-1條記錄具有完全相同的準(zhǔn)標(biāo)識符屬性,以增大鏈接攻擊的難度。Samarati和Sweeney于1998年提出,一種被廣泛認(rèn)可的一種保護(hù)隱私的方法。第1章緒論1.2大數(shù)據(jù)的技術(shù)體系隱私信息通過連接操作被泄露(準(zhǔn)標(biāo)識符)
姓名性別生日郵編Tony男72.2.711001John男72.8.1011002Peter男68.1.211002Emily女68.10.321021Lily女65.6.821032Laura女65.9.661801Connie女72.2.761802性別生日郵編收入男72.2.711001高男72.8.1011002中女68.1.221021中女68.10.321032中女65.6.861801高女65.9.661802低姓名性別生日郵編收入Tony男72.2.711001高John男72.8.1011002中Emily女68.1.261021中Lily女68.10.361032中Laura女65.6.861801高Connie女65.9.661802低病人客戶信息(隱私表)選民信息(公開表)病人和選民信息連接后的表k-匿名處理示例性別生日郵編收入男72.2.711001高男72.8.1011002中女68.1.221021中女68.10.321032中女65.6.861801高女65.9.661802低性別生日郵編收入男72.*110*高男72.*110*中女68.*610*中女68.*610*中女65.*618*高女65.*618*低K-匿名客戶表NoSQL的主要特點(diǎn)非關(guān)系型存儲模式通過犧牲事務(wù)、一致性、SQL語句等RDBMS中重要的機(jī)制,換取更好的分布式部署特性和RDBMS有不同的側(cè)重點(diǎn)(大數(shù)據(jù)量、簡單查詢)習(xí)慣統(tǒng)稱,并非嚴(yán)謹(jǐn)定義大數(shù)據(jù)技術(shù)體系4V采集、存儲、使用、管理、可視化和安全NoSQL在大數(shù)據(jù)體系中的作用是什么?第1章緒論小結(jié)NoSQL在大數(shù)據(jù)體系中的作用數(shù)據(jù)存儲工具把數(shù)據(jù)存儲或映射為表格形式,形成便于理解的“行”、“列”、“點(diǎn)”或“線”等概念把數(shù)據(jù)存儲成適于使用的模式(鍵值對、列存儲、圖存儲等)在大部分NoSQL的典型應(yīng)用場景中,實(shí)現(xiàn)分布式存儲數(shù)據(jù)管理工具對數(shù)據(jù)“庫”、“表”或類似的概念進(jìn)行管理對存儲的數(shù)據(jù)進(jìn)行管理,對數(shù)據(jù)的性能和可靠性等進(jìn)行管理對分布式系統(tǒng)進(jìn)行管理,對系統(tǒng)的配置方式、運(yùn)行狀態(tài)等進(jìn)行管理數(shù)據(jù)查詢工具快速查詢海量數(shù)據(jù)提供易用的客戶訪問接口一般無法進(jìn)行過于復(fù)雜的查詢,或查詢性能極低NoSQL一般不會提供實(shí)時數(shù)據(jù)采集功能(需要借助其他工具寫入數(shù)據(jù)庫)提供復(fù)雜的數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析、數(shù)據(jù)挖掘等功能(對比MapReduce、Spark等工具)提供完整的數(shù)據(jù)可視化等功能第1章緒論小結(jié)NoSQL數(shù)據(jù)庫原理
第2章NoSQL數(shù)據(jù)庫的基本原理2.1.1關(guān)系模型(1)實(shí)體(Entity):是指現(xiàn)實(shí)世界中的具體或抽象的事物。例如:一個學(xué)生、一個教師、一門課程等。(2)屬性(Attribute):對實(shí)體的特性進(jìn)行描述,例如學(xué)生的學(xué)號、班級、姓名等。屬性一般要求具有原子性,即不可再分割。屬性具有值域和數(shù)據(jù)類型兩種特性。(3)實(shí)體標(biāo)識符:能夠唯一標(biāo)識一個實(shí)體的屬性稱為實(shí)體標(biāo)識符,例如學(xué)生的學(xué)號,即數(shù)據(jù)庫實(shí)現(xiàn)中的鍵(key)的概念。(4)聯(lián)系(Relation):實(shí)體之間的關(guān)系,以及實(shí)體內(nèi)部屬性之間的關(guān)系。第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧2.1.1關(guān)系模型關(guān)系模型中的常見特征關(guān)系模型中具有明確的表結(jié)構(gòu)列具有原子性,不可再分割列的值域和類型時固定的如果某字段出現(xiàn)空值,一般會保留存儲空間(NULL),以便今后插入數(shù)值NoSQL可能打破這些特征NoSQL中可能沒有明確的結(jié)構(gòu)列可能是復(fù)合型的列中的內(nèi)容和類型可能是隨意的、無定義的不會為空值流出存儲空間,可能很難直接插入數(shù)值第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧2.1.2關(guān)系型數(shù)據(jù)庫的完整性約束關(guān)系模型中的完整性約束域完整性:是指對列的值域、類型等進(jìn)行約束。實(shí)體完整性:實(shí)體集中的每個實(shí)體都具有唯一性標(biāo)識,或者說數(shù)據(jù)表中的每個元組是可區(qū)分的。這意味著數(shù)據(jù)表中存在不能為空的主屬性(即主鍵)。參照完整性:表明表1中的一列A依賴于表2中被參照列的情況。用戶定義的完整性:用戶根據(jù)業(yè)務(wù)邏輯定義的完整性約束。NoSQL中的完整性約束域完整性一般較弱,或不支持可能存在主鍵相同的行,或內(nèi)容相同但時間戳不同的行等情況,一般不會出現(xiàn)空的主屬性一般不提供參照完整性,或者外鍵,因此一般也不支持跨表的關(guān)聯(lián)查詢(Join)用戶定義完整性靠應(yīng)用程序支持第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧2.1.3關(guān)系型數(shù)據(jù)庫的事務(wù)機(jī)制事務(wù)是關(guān)系型數(shù)據(jù)庫最重要的機(jī)制之一關(guān)系型數(shù)據(jù)庫會對并發(fā)操作進(jìn)行控制,防止用戶在存取數(shù)據(jù)時破壞數(shù)據(jù)的完整性,造成數(shù)據(jù)錯誤。事務(wù)機(jī)制可以保障用戶定義的一組操作序列作為一個不可分割的整體提交執(zhí)行,這一組操作要么都執(zhí)行,要么都不執(zhí)行,當(dāng)事務(wù)執(zhí)行成功,我們認(rèn)為事務(wù)被整體“提交”,則所有數(shù)據(jù)改變均被持久化保存,而當(dāng)事務(wù)在執(zhí)行中發(fā)生錯誤時,事務(wù)會進(jìn)行“回滾”,返回到事務(wù)尚未開始執(zhí)行的狀態(tài)。ACID:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。ACID是典型的強(qiáng)一致性要求ACID是大多數(shù)NoSQL拋棄的機(jī)制,因為無法在分布式環(huán)境中保證效率第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧2.1.3關(guān)系型數(shù)據(jù)庫的事務(wù)機(jī)制并發(fā)控制和封鎖機(jī)制并發(fā)調(diào)度指將多個事務(wù)串行化,并發(fā)控制則強(qiáng)調(diào)解決共享資源并發(fā)存取過程中產(chǎn)生的各類問題丟失更新、幻讀、臟讀……封鎖是數(shù)據(jù)庫中所采用的常見并發(fā)控制。封鎖是一種軟件機(jī)制,使得當(dāng)某個事務(wù)訪問某數(shù)據(jù)對象時,其他事務(wù)不能對該數(shù)據(jù)進(jìn)行特定的訪問。共享鎖、排它鎖……死鎖和預(yù)防死鎖順序加鎖、超時法、等待圖法……分布式環(huán)境下實(shí)現(xiàn)事務(wù)和鎖,可能出現(xiàn)什么問題?第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧2.1.4關(guān)系型數(shù)據(jù)庫的分布式部署關(guān)系型數(shù)據(jù)庫一般部署在單機(jī)上,并通過垂直擴(kuò)展(scaleup)方式提升性能一些關(guān)系型數(shù)據(jù)庫也可以實(shí)現(xiàn)水平擴(kuò)展,一般需要通過外部軟件、或用戶編程等方式實(shí)現(xiàn)。(1)將不同的表存儲在不同節(jié)點(diǎn)。如果某個表體積過大、或頻繁被訪問,則其他節(jié)點(diǎn)無法提供幫助。(2)水平分割數(shù)據(jù),將表中不同的行存儲在不同節(jié)點(diǎn)上。在RDBMS中需要保持?jǐn)?shù)據(jù)的完整性,插入數(shù)據(jù)時需要檢查所有節(jié)點(diǎn)上的數(shù)據(jù)。索引、鎖等機(jī)制的維護(hù)也較為繁瑣。(3)垂直分割數(shù)據(jù),將表中不同的列存儲在不同節(jié)點(diǎn)上。在大數(shù)據(jù)場景下,表中的行數(shù)可能仍然過多,熱點(diǎn)數(shù)據(jù)可能無法做到負(fù)載均衡。也可能遇到和水平分割數(shù)據(jù)類似的問題。分布式環(huán)境下,數(shù)據(jù)存儲存儲在不同節(jié)點(diǎn),此時必須通過網(wǎng)絡(luò)傳遞相關(guān)消息,如果出現(xiàn)網(wǎng)絡(luò)故障或部分節(jié)點(diǎn)失效,則有可能導(dǎo)致整個系統(tǒng)變得低效或死鎖,因此在分布式環(huán)境下實(shí)現(xiàn)高效率的事務(wù)機(jī)制、以及強(qiáng)一致性等特性較為困難。關(guān)系型數(shù)據(jù)庫目前也存在多種橫向擴(kuò)展方案橫向擴(kuò)展可以提供負(fù)載均衡能力,例如:將數(shù)據(jù)進(jìn)行垂直節(jié)分或水平切分。橫向擴(kuò)展可以提供一定的容錯能力,例如:采用讀寫分離機(jī)制。靈活運(yùn)用上述方案,可以在很多應(yīng)用場景中解決問題,但是當(dāng)數(shù)據(jù)量持續(xù)增大時,則可能無法應(yīng)對。運(yùn)用上述方案時,用戶可能仍需要進(jìn)行較多的第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧2.1.4關(guān)系型數(shù)據(jù)庫的分布式部署主從集群(讀寫分離)無法解決寫數(shù)據(jù)的瓶頸,但保持了對單機(jī)事務(wù)的支持讀數(shù)據(jù)時,可以實(shí)現(xiàn)一定的負(fù)載均衡,提高并發(fā)性能,并且可以提供一定的容錯機(jī)制一般來說從服務(wù)之間是不共享數(shù)據(jù)的,每臺從服務(wù)器都保存全集數(shù)據(jù),一般不會進(jìn)行數(shù)據(jù)分割主從服務(wù)器之間可能存在數(shù)據(jù)不一致的隱患第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧利用分發(fā)服務(wù)器實(shí)現(xiàn)主從數(shù)據(jù)同步例如:MicrosoftSQLServer提供了“DatabaseMirroring”、“l(fā)ogshipping”、發(fā)布訂閱、“alwayson”等多種讀寫分離策略第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧分布式中間件實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫的分布式2.1.4關(guān)系型數(shù)據(jù)庫的分布式部署分布式中間件例如:MySQLFabric、MySQLCluster、阿里的Cobar(疑似已停止更新)一般可以實(shí)現(xiàn)數(shù)據(jù)水平拆分、容錯、數(shù)據(jù)路由等功能,中間件實(shí)現(xiàn)難度較大,中間件實(shí)際上承擔(dān)了NoSQL數(shù)據(jù)庫的大部分功能,關(guān)系型數(shù)據(jù)庫只用來實(shí)現(xiàn)數(shù)據(jù)分片的存儲,用戶配置、使用均較為復(fù)雜系統(tǒng)功能受到一定限制(和單機(jī)部署的RDBMS相比)2.1.4關(guān)系型數(shù)據(jù)庫的分布式部署MySQLFabric方案MySQL官方方案支持水平分片(Shardx)支持主從數(shù)據(jù)庫(Primary/Secondary)第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧MySQLFabric的架構(gòu)圖2.1.4關(guān)系型數(shù)據(jù)庫的分布式部署MySQLCluster方案數(shù)據(jù)保存在“NDB
Cluster”,并盡量將數(shù)據(jù)寫入內(nèi)存表結(jié)構(gòu)保存在“MySQL
Server”應(yīng)用程序通過“MySQL
Server”訪問數(shù)據(jù)表管理客戶端通過管理工具(ndb_mgmd)管理“NDB存儲服務(wù)器”。管理配置較為復(fù)雜,功能受到一定限制第2章NoSQL數(shù)據(jù)庫的基本原理2.1關(guān)系型數(shù)據(jù)庫的重要機(jī)制回顧MySQLClusterNoSQL中的數(shù)據(jù):結(jié)構(gòu)復(fù)雜、數(shù)據(jù)量大NoSQL一般采用分布式部署,為保證效率、可靠性等,一方面弱化RDBMS中的部分特性,另一方面哈需要接入分布式部署中遇到的各種難題:數(shù)據(jù)均勻、分布式存儲,統(tǒng)一使用、管理數(shù)據(jù)系統(tǒng)可伸縮(橫向增加節(jié)點(diǎn)或替換故障節(jié)點(diǎn))存儲和查詢?nèi)蝿?wù)的容錯性錄入、查詢數(shù)據(jù)時的高性能提高系統(tǒng)的易用性第2章NoSQL數(shù)據(jù)庫的基本原理2.2分布式數(shù)據(jù)管理的特點(diǎn)假設(shè)某個NoSQL數(shù)據(jù)庫將數(shù)據(jù)均勻存儲在n個節(jié)點(diǎn)上,此時可能出現(xiàn)各種難題或故障:如何查看整個集群還有多少存儲空間?如何在整個集群不停止工作下,快速、方便的增加節(jié)點(diǎn)?或者如何盡量減少增加、刪除節(jié)點(diǎn)所需的時間和工作量?某個節(jié)點(diǎn)出現(xiàn)硬盤故障,如何保證數(shù)據(jù)不缺失?執(zhí)行查詢?nèi)蝿?wù)時,某個節(jié)點(diǎn)沒有回應(yīng),如何保證查詢結(jié)果沒有缺失?……2.2.1數(shù)據(jù)分片目的使數(shù)據(jù)均勻分布到多個節(jié)點(diǎn)上,執(zhí)行查詢或處理任務(wù)時,各個節(jié)點(diǎn)只查詢自身數(shù)據(jù),實(shí)現(xiàn)并行處理跨表聯(lián)合查詢性能?由于需要在多個節(jié)點(diǎn)之間計算笛卡兒積,因此性能很差,大部分NoSQL并不支持。當(dāng)運(yùn)行分布式查詢或處理任務(wù)時,可以每次處理一個分片,將一個分片一次性讀入內(nèi)存例如HBASE(借助于HDFS),將數(shù)據(jù)分片為64MB-256MB大小。架構(gòu)主從架構(gòu):主節(jié)點(diǎn)負(fù)責(zé)存儲元數(shù)據(jù),和客戶端訪問接口,從節(jié)點(diǎn)負(fù)責(zé)存儲數(shù)據(jù)分片,如:HBase對等結(jié)構(gòu):無主節(jié)點(diǎn),各個節(jié)點(diǎn)都可以接受客戶端訪問請求,如果自身沒有存儲相關(guān)分片,則去該節(jié)點(diǎn)回去向其他節(jié)點(diǎn)查詢數(shù)據(jù),如:Cassandra第2章NoSQL數(shù)據(jù)庫的基本原理2.2分布式數(shù)據(jù)管理的特點(diǎn)2.2.1數(shù)據(jù)分片重要機(jī)制如果原始數(shù)據(jù)是一個大型文件(比如TXT換格式的100GB的網(wǎng)站日志文件),則需要將數(shù)據(jù)切分大數(shù)據(jù)工具存儲日志類數(shù)據(jù)時,可以根據(jù)自然的行進(jìn)行切分?jǐn)?shù)據(jù)導(dǎo)入NoSQL之后,可以根據(jù)記錄的行進(jìn)行切分當(dāng)節(jié)點(diǎn)數(shù)量變化時,分片的存儲位置等應(yīng)該可以調(diào)整(到其他節(jié)點(diǎn))節(jié)點(diǎn)對自身存儲的分片負(fù)責(zé),循環(huán)檢查數(shù)據(jù)分片是否健康,節(jié)點(diǎn)一般不關(guān)心其他節(jié)點(diǎn)上分片存儲切分過程、分片的調(diào)整過程等應(yīng)當(dāng)是自動的,用戶不需要手動處理分片用戶訪問一個接口,即可訪問所有數(shù)據(jù),用戶不需要知道數(shù)據(jù)屬于哪個分片,存儲在哪個節(jié)點(diǎn)上。問題:如果部分節(jié)點(diǎn)出現(xiàn)故障,數(shù)據(jù)或查詢?nèi)蝿?wù)是否會出現(xiàn)缺失?如何解決?當(dāng)數(shù)據(jù)庫為單機(jī)部署時,不存在系統(tǒng)部分故障的問題,系統(tǒng)要么100%正常,要么100%失效,此時可以通過主備服務(wù)器等方式提高系統(tǒng)的可靠性第2章NoSQL數(shù)據(jù)庫的基本原理2.2分布式數(shù)據(jù)管理的特點(diǎn)2.2.2數(shù)據(jù)多副本背景:在大規(guī)模分布式系統(tǒng)中,要將部分節(jié)點(diǎn)失效視為“常態(tài)”,而非異常。此時必須考慮集群系統(tǒng)在局部故障的情況下,也能夠正常運(yùn)行。故障可能是臨時的,也可能時永久的,例如:節(jié)點(diǎn)死機(jī)、節(jié)點(diǎn)硬盤故障、網(wǎng)絡(luò)雍塞、交換機(jī)故障等解決:將數(shù)據(jù)存儲為多個副本,不同的副本存儲在不同節(jié)點(diǎn)上,通常是以數(shù)據(jù)分片為單位實(shí)現(xiàn)多副本。相對于原始文件或整個表格,分片的體積較小,容易被檢測、拷貝理論上n個副本都可以被讀取,但n個副本是否可以被更新,則要視系統(tǒng)實(shí)現(xiàn)和用戶策略而定例如:HDFS中,基于“機(jī)架感知”的三副本機(jī)制。進(jìn)一步的問題:假設(shè)分片被復(fù)制了n份,存儲在不同節(jié)點(diǎn)上,當(dāng)一個副本被更新時,其他副本如何同步?如果在更新同步時出現(xiàn)臨時或永久故障,如何解決?用戶是否需要了解,或如何了解副本的同步情況?第2章NoSQL數(shù)據(jù)庫的基本原理2.2分布式數(shù)據(jù)管理的特點(diǎn)2.2.2數(shù)據(jù)多副本進(jìn)一步的問題:假設(shè)分片被復(fù)制了n份,存儲在不同節(jié)點(diǎn)上,當(dāng)一個副本被更新時,其他副本如何同步?如果在更新同步時出現(xiàn)臨時或永久故障,如何解決?用戶是否需要了解,或如何了解副本的同步情況?如果n個副本只有一個能被更新,則該機(jī)制就是“讀寫分離”,此時,如果“讀”副本出現(xiàn)臨時故障,則在故障恢復(fù)后可以再向主節(jié)點(diǎn)查詢并同步數(shù)據(jù)。如果“讀”副本出現(xiàn)永久故障,則系統(tǒng)一般會在其他節(jié)點(diǎn)上建立新的副本。如果“寫”副本出現(xiàn)故障,則系統(tǒng)無法繼續(xù)更新數(shù)據(jù),此時需要通過“選舉”等機(jī)制,建立一個新的“寫”副本。如果n個副本都可以被更新,則可能多個副本之間可能存在數(shù)據(jù)版本”分叉“(沖突),此時需要額外機(jī)制檢測到分叉,并消除。(參見第六章的Dynamo機(jī)制)用戶是否需要了解副本同步情況,不同的NoSQL系統(tǒng)有不同的策略。第2章NoSQL數(shù)據(jù)庫的基本原理2.2分布式數(shù)據(jù)管理的特點(diǎn)2.2.3一次寫入多次讀?。╓ORM)背景:典型的大數(shù)據(jù)場景,如:搜索引擎抓取網(wǎng)頁并抽取正文、鏈接,并不需要修改抓取的原始網(wǎng)頁。網(wǎng)站或物聯(lián)網(wǎng)應(yīng)用抓取到日志或監(jiān)控數(shù)據(jù),一般只會進(jìn)行查詢、統(tǒng)計、挖掘,也不需要修改原始數(shù)據(jù)。從系統(tǒng)層面,如果數(shù)據(jù)不需要修改(update、insert或delete),數(shù)據(jù)的存儲、分片和多副本機(jī)制可以大為簡化。此外可以實(shí)現(xiàn)將分片內(nèi)數(shù)據(jù)排序等機(jī)制,以加快掃描速度。應(yīng)用一次寫入多次讀取機(jī)制,意味著在系統(tǒng)底層只支持新建和追加(append)。此時系統(tǒng)具有更好的順序存儲特性,對于機(jī)械硬盤,順序讀寫比隨機(jī)讀寫的開銷更小,硬件損耗更小,出現(xiàn)碎片的可能性較?。ㄐ枰浜掀渌麢C(jī)制,詳情可以參考第五章描述的HBASE寫入機(jī)制)。如何在一個只支持append的存儲系統(tǒng)上實(shí)現(xiàn)數(shù)據(jù)更新、插入和刪除?可以采用時間戳機(jī)制。從WORM設(shè)計,也可以看出NoSQL應(yīng)用場景和RDBMS存在差異,相互不可替代。第2章NoSQL數(shù)據(jù)庫的基本原理2.2分布式數(shù)據(jù)管理的特點(diǎn)2.2.4分布式系統(tǒng)的可伸縮性背景:分布式系統(tǒng)中可能存在節(jié)點(diǎn)故障、以及持續(xù)采集數(shù)據(jù)導(dǎo)致系統(tǒng)容量或處理能力出現(xiàn)瓶頸。目標(biāo):分布式系統(tǒng)需要提供一種易于操作的增加、移去或替換節(jié)點(diǎn)的方法節(jié)點(diǎn)變動時,數(shù)據(jù)分片和副本可以自動平衡,空白的新節(jié)點(diǎn)會被存入適當(dāng)?shù)姆制北?,移走的?jié)點(diǎn)所負(fù)責(zé)的數(shù)據(jù)會被指派給別的節(jié)點(diǎn)個別節(jié)點(diǎn)變動和數(shù)據(jù)平衡時,對系統(tǒng)服務(wù)的影響較小,即節(jié)點(diǎn)變化可以動態(tài)進(jìn)行,數(shù)據(jù)平衡在后臺進(jìn)行(例如:限制數(shù)據(jù)平衡時使用的帶寬,以防止對系統(tǒng)正常服務(wù)產(chǎn)生過大影響等)節(jié)點(diǎn)變化后,用戶可以方便的查看當(dāng)前節(jié)點(diǎn)的列表和運(yùn)行情況第2章NoSQL數(shù)據(jù)庫的基本原理2.2分布式數(shù)據(jù)管理的特點(diǎn)小結(jié):在分布式數(shù)據(jù)管理中,需要保持集群的高性能、高可靠性和易用性進(jìn)行分布式數(shù)據(jù)管理的主要目的是通過橫向擴(kuò)展提升數(shù)據(jù)存儲、管理、查詢和處理性能負(fù)載均衡:數(shù)據(jù)分片,并均勻分布在各個節(jié)點(diǎn)上;計算本地化,節(jié)點(diǎn)只查詢自身的數(shù)據(jù)集群可伸縮:集群規(guī)??梢噪S著數(shù)據(jù)增長進(jìn)行橫向擴(kuò)展將底層存儲設(shè)置為“一次寫入多次讀取”,簡化大數(shù)據(jù)場景下的軟件設(shè)計難度由于分布式環(huán)境中存在部分節(jié)點(diǎn)不可達(dá)的可能,因此需要保證部分節(jié)點(diǎn)出現(xiàn)故障時,系統(tǒng)的其他部分仍可以正常工作;此外故障最終可以被發(fā)現(xiàn)和消除容錯性:數(shù)據(jù)多副本,副本存儲在不同節(jié)點(diǎn)上,多副本之間具有同步更新、沖突檢測等機(jī)制集群可伸縮:可以移除故障節(jié)點(diǎn),替換新節(jié)點(diǎn),并實(shí)現(xiàn)數(shù)據(jù)的再平衡不能要求用戶精通分布式系統(tǒng)原理,或者事先了解集群中的大量細(xì)節(jié)信息才能使用,系統(tǒng)必須易用自動管理副本:自動分片、自動檢測副本狀態(tài)、節(jié)點(diǎn)的變化,并平衡數(shù)據(jù)統(tǒng)一訪問接口:用戶通過統(tǒng)一接口即可訪問數(shù)據(jù),不必預(yù)先知道各個節(jié)點(diǎn)的信息或集群拓?fù)涞?。?章NoSQL數(shù)據(jù)庫的基本原理2.2分布式數(shù)據(jù)管理的特點(diǎn)目標(biāo)分布式系統(tǒng)中(特別是NoSQL數(shù)據(jù)庫),數(shù)據(jù)多副本產(chǎn)生的一致性問題進(jìn)一步的目標(biāo):各個節(jié)點(diǎn)之間對某一主題達(dá)成共識(例如:配置信息更新)概念上的差別(CAP和BASE的概念將在隨后解釋)ACID中的一致性:強(qiáng)調(diào)(一個或多個)事務(wù)前后,數(shù)據(jù)的狀態(tài)(約束、完整性等)都是有效的。CAP中的一致性:強(qiáng)調(diào)多個副本是狀態(tài)一致、同步更新的BASE中的一致性:和ACID中的一致性相近,但強(qiáng)調(diào)弱一致性第2章NoSQL數(shù)據(jù)庫的基本原理2.3分布式系統(tǒng)的一致性問題2.3.1CAP理論CAP是指分布式系統(tǒng)中的Consistency(一致性)、Availability(可用性)、Partitiontolerance(分區(qū)容錯性)。CAP理論是指在分布式系統(tǒng)中,CAP三個特性不可兼得,只能同時滿足兩個。和RDBMS中的ACID相比較的原因是,理論上分布式系統(tǒng)中多副本的更新應(yīng)該是一個“事務(wù)”,要么都成功,要么都失敗,并且性能很好,但實(shí)際上存在難題。一些分布式系統(tǒng)可以實(shí)現(xiàn)分布式事務(wù)(當(dāng)前大多數(shù)NoSQL系統(tǒng)不支持,或不能良好支持),即可以提供跨節(jié)點(diǎn)的ACID。CAP則是強(qiáng)調(diào)集群環(huán)境下,數(shù)據(jù)多副本帶來的問題,此時二者討論的主題不同。第2章NoSQL數(shù)據(jù)庫的基本原理2.3分布式系統(tǒng)的一致性問題CAP理論可參考:《Brewer’sConjectureandtheFeasibilityofConsistent,Available,Partition-TolerantWebServices》2.3.1CAP理論Consistency(一致性),是指分布式系統(tǒng)中所有節(jié)點(diǎn)都能對某個數(shù)據(jù)達(dá)成共識,例如:多個副本內(nèi)容是否相同,當(dāng)出現(xiàn)不一致時,以哪個副本為準(zhǔn)。Availability(可用性),這里可以理解為分布式系統(tǒng)的響應(yīng)速度,或響應(yīng)能力。Partitiontolerance(分區(qū)容錯性),指在部分節(jié)點(diǎn)故障、以及出現(xiàn)消息丟包的情況下,集群系統(tǒng)(的剩余部分)仍然可以提供服務(wù),完成數(shù)據(jù)訪問,這一般需要通過合理的數(shù)據(jù)多副本機(jī)制實(shí)現(xiàn)。CAP不能兼顧,但并非絕對對立。在實(shí)際NoSQL系統(tǒng)中,
一般通過設(shè)計上的取舍和使用過程中的配置,在A和C之間進(jìn)行權(quán)衡對于大多數(shù)分布式系統(tǒng),P是必須的在系統(tǒng)設(shè)計層面,或系統(tǒng)的模塊設(shè)計層面,以及在不同的業(yè)務(wù)場景下,都可能采用不同取舍策略或配置策略第2章NoSQL數(shù)據(jù)庫的基本原理2.3分布式系統(tǒng)的一致性問題2.3.1CAP理論假設(shè)系統(tǒng)中,數(shù)據(jù)只有一個副本。則一致性(C)可以得到絕對的保障,由于在讀寫時不需要通過網(wǎng)絡(luò)查詢其他副本的情況,因此讀寫性能較高(A),但如果存儲數(shù)據(jù)的節(jié)點(diǎn)故障則無法容錯,即該設(shè)計兼顧C(jī)A。假設(shè)系統(tǒng)中,數(shù)據(jù)存在n個副本,但采用“讀寫分離”機(jī)制,只有一個副本可以接受寫請求。此時:對于寫操作,一致性和可用性較好,因為只要寫完一個副本,操作即為成功,但此時該寫入節(jié)點(diǎn)無法實(shí)現(xiàn)分區(qū)可用性,即兼顧C(jī)A。對于讀操作,假設(shè)數(shù)據(jù)存在多個“只讀”副本,客戶端每次只讀取其中一個,則該設(shè)計實(shí)現(xiàn)了讀操作的分區(qū)可用性(多副本),可用性較好,但客戶端無法判斷該副本是否為最新的(考慮網(wǎng)絡(luò)通信的不確定性),即只兼顧了PA。對于讀操作,假設(shè)客戶端需要同時讀取多個副本,并對比這些副本,以檢查是否存在版本差異或版本沖突。則此時兼顧了PC,由于需要讀取多個副本,因此客戶端響應(yīng)時間變長,可用性(A)變?nèi)?。?章NoSQL數(shù)據(jù)庫的基本原理2.3分布式系統(tǒng)的一致性問題2.3.1CAP理論思考:假設(shè)在分布式系統(tǒng)中,數(shù)據(jù)存儲為3個副本,每個副本都可以接受讀寫請求。如果強(qiáng)調(diào)讀操作的PA,應(yīng)采用何種策略?如果強(qiáng)調(diào)讀操作的PC,應(yīng)采用何種策略?如果強(qiáng)調(diào)寫操作的PA,應(yīng)采用何種策略?如果強(qiáng)調(diào)寫操作的PC,應(yīng)采用何種策略?如何在保證P的情況下,希望能夠兼顧AC,可以采用何種妥協(xié)策略?在“一次寫入多次讀取”機(jī)制下,是否可以討論寫操作的CAP?數(shù)據(jù)分片可能支持Append數(shù)據(jù)分片可能被整體刪除數(shù)據(jù)分片可能在批量更新沒有完成時出現(xiàn)網(wǎng)絡(luò)故障針對一條記錄,可以通過時間戳+append等機(jī)制實(shí)現(xiàn)數(shù)據(jù)改寫,從而在多副本之間產(chǎn)生版本差異第2章NoSQL數(shù)據(jù)庫的基本原理2.3分布式系統(tǒng)的一致性問題2.3.2
BASE和最終一致性《BASE:AnAcidAlternative》BASE是一個和ACID相對比的概念,強(qiáng)調(diào)弱一致性ACID指事務(wù)的強(qiáng)一致性。在分布式環(huán)境下,涉及到網(wǎng)絡(luò)通信的不可靠性,性能較差,且技術(shù)實(shí)現(xiàn)復(fù)雜。ACID認(rèn)為事務(wù)執(zhí)行時不應(yīng)存在中間狀態(tài),只有“成功”、“回滾”等最終狀態(tài)。BASE強(qiáng)調(diào),在互聯(lián)網(wǎng)等場景中,用戶響應(yīng)(即可用性)很重要,必須首先滿足。最終一致性(EventualConsistency),即事務(wù)存在中間狀態(tài),但經(jīng)歷一段時間之后,最終會一致。最終一致性(在一些應(yīng)用場景下)也可以看作NoSQL允許多個副本可以存在暫時的不同步(即異步更新),結(jié)合CAP理論,這種設(shè)計強(qiáng)調(diào)PA,可以提高響應(yīng)速度。第2章NoSQL數(shù)據(jù)庫的基本原理2.3分布式系統(tǒng)的一致性問題2.3.2
BASE和最終一致性BASE所強(qiáng)調(diào)的軟狀態(tài)、弱一致性等,在一些互聯(lián)網(wǎng)業(yè)務(wù)中,并不會帶來大的問題。例如:一位歐洲用戶在社交軟件上短時間內(nèi)更新了多次頭像,但他在亞洲的好友即便正在刷新,可能也只能在一段時間后才看到更新的情況,并且只看到了最終的頭像,中間的更新結(jié)果在服務(wù)器同步信息的過程中被覆蓋了。弱一致性場景中,經(jīng)常會使用“異步消息機(jī)制”在網(wǎng)絡(luò)節(jié)點(diǎn)之間的進(jìn)行通信。異步消息意味著消息的發(fā)送和接受之間存在時間差。消息的發(fā)送者在消息發(fā)出后立刻退出發(fā)送流程,不會阻塞等待接受者的反饋,因此不會受到網(wǎng)絡(luò)延遲等影響,因此系統(tǒng)的響應(yīng)時間較少。這也可以看作是一種軟狀態(tài)機(jī)制。NoSQL中也會使用異步消息機(jī)制進(jìn)行事件通知等,但最終用戶一般不需要關(guān)心其具體過程。第2章NoSQL數(shù)據(jù)庫的基本原理2.3分布式系統(tǒng)的一致性問題2.3.2
BASE和最終一致性BASE所強(qiáng)調(diào)的軟狀態(tài)、弱一致性等,在一些互聯(lián)網(wǎng)業(yè)務(wù)中,并不會帶來大的問題。例如:一位歐洲用戶在社交軟件上短時間內(nèi)更新了多次頭像,但他在亞洲的好友即便正在刷新,可能也只能在一段時間后才看到更新的情況,并且只看到了最終的頭像,中間的更新結(jié)果在服務(wù)器同步信息的過程中被覆蓋了。弱一致性場景中,經(jīng)常會使用“異步消息機(jī)制”在網(wǎng)絡(luò)節(jié)點(diǎn)之間的進(jìn)行通信。異步消息意味著消息的發(fā)送和接受之間存在時間差。消息的發(fā)送者在消息發(fā)出后立刻退出發(fā)送流程,不會阻塞等待接受者的反饋,因此不會受到網(wǎng)絡(luò)延遲等影響,因此系統(tǒng)的響應(yīng)時間較少。這也可以看作是一種軟狀態(tài)機(jī)制。NoSQL中也會使用異步消息機(jī)制進(jìn)行事件通知等,但最終用戶一般不需要關(guān)心其具體過程。第2章NoSQL數(shù)據(jù)庫的基本原理2.3分布式系統(tǒng)的一致性問題假設(shè)在讀寫分離場景下,有一個寫節(jié)點(diǎn)(稱為主節(jié)點(diǎn)),和若干個讀節(jié)點(diǎn)(稱為從節(jié)點(diǎn))。當(dāng)主節(jié)點(diǎn)出現(xiàn)故障時,集群如何實(shí)現(xiàn)自動的故障恢復(fù)?可以在從節(jié)點(diǎn)中“選舉”出一個新的主節(jié)點(diǎn)??梢杂蓮墓?jié)點(diǎn)(或若干外部節(jié)點(diǎn))進(jìn)行自動選舉。此時需要一個算法(或網(wǎng)絡(luò)協(xié)議),來協(xié)調(diào)選舉者的行為。假設(shè)在一個集群環(huán)境中,所有節(jié)點(diǎn)都需要更新一個配置項,如何自動發(fā)現(xiàn)該配置項的更新?需要所有節(jié)點(diǎn)對“xx配置項更新為xx”,(發(fā)現(xiàn)并)達(dá)成共識第2章NoSQL數(shù)據(jù)庫的基本原理2.3.4. Paxos算法簡介Paxos是一種基于異步消息的一致性算法(共識算法),主要解決了如下問題:如何發(fā)起投票,特別是當(dāng)多個節(jié)點(diǎn)希望發(fā)起投票時,如何決定投票主題?具有投票權(quán)的節(jié)點(diǎn)如何投票?出現(xiàn)網(wǎng)絡(luò)故障、延遲或部分節(jié)點(diǎn)失效時,投票過程和結(jié)果是否還有效?如何讓“吃瓜群眾”(learner)獲知投票結(jié)果Paxos“被認(rèn)為是同類算法中最有效的”,具有多種改進(jìn)算法(例如:FastPaxos等)?,F(xiàn)有的分布式一致性軟件,如:Zookeeper、chubby軟件,以及諸如MongoDB等NoSQL數(shù)據(jù)庫中的主節(jié)點(diǎn)選舉模塊,大多使用或借鑒了Paxos(至少是相似的)。第2章NoSQL數(shù)據(jù)庫的基本原理2.3.4. Paxos算法簡介基本角色若干proposer(提議者):proposer負(fù)責(zé)提出投票提議(proposal),以及給出建議的決議(或稱為值,value)。若干(一般三個以上的奇數(shù)個)acceptor(投票者):acceptor收到提議后進(jìn)行投票,以少數(shù)服從多數(shù)的原則決定是否接受提議,以及是否批準(zhǔn)該值??赡苓€存在下列角色client客戶端:提議的產(chǎn)生者,client將提議提交給任意proposer,由其提交投票。learner(學(xué)習(xí)者,有時稱observer):learner只能觀察投票結(jié)果,并更新自己的認(rèn)識(值)。leader:在改進(jìn)后的Paxos機(jī)制中負(fù)責(zé)。在實(shí)際系統(tǒng)中,通常只有客戶端和服務(wù)器的概念??蛻舳艘话惆缪輈lient、proposer和learner的角色,而服務(wù)端扮演accepter、coordinator和leader的角色。此外,一個節(jié)點(diǎn)也可能承擔(dān)多個角色。第2章NoSQL數(shù)據(jù)庫的基本原理2.3.4. Paxos算法簡介第一階段為發(fā)起提議階段反饋的acceptor為半數(shù)以上原則,少部分節(jié)點(diǎn)失效時,投票仍可以進(jìn)行接受提議的編號為最新原則,確保當(dāng)前只為一個提議投票,確保當(dāng)前提議是最新的。反饋決議為歷史決議或空值原則第二階段為決議的批準(zhǔn)階段proposer決定決議(值)反饋的acceptor為半數(shù)以上原則學(xué)習(xí)者或客戶端只能學(xué)習(xí)到投票通過的決議(或值)進(jìn)一步需要解決如何防止提升編號搶占提議權(quán)?引入leader機(jī)制,在第一階段由leader決定提議。如何加快投票過程。(fastPaxos協(xié)議)授予leader在第二階段發(fā)生沖突時的決策權(quán)。第2章NoSQL數(shù)據(jù)庫的基本原理2.3.4. Paxos算法簡介投票流程:第2章NoSQL數(shù)據(jù)庫的基本原理2.3.4. Paxos算法簡介相當(dāng)于實(shí)現(xiàn)了分布式環(huán)境下的ACID,必須全部節(jié)點(diǎn)都成功提交更新,整個事務(wù)才算成功存在協(xié)調(diào)者(左)和參與者(右)兩個角色在不同階段,不同的角色或通信出現(xiàn)故障,所產(chǎn)生的影響是不同的大部分NoSQL數(shù)據(jù)庫軟件并不直接支持分布式事務(wù)提交。因為其阻塞過程對系統(tǒng)的整體性能影響較大第2章NoSQL數(shù)據(jù)庫的基本原理補(bǔ)充:分布式事務(wù)、二階段提交和三階段提交兩階段提交過程三階段提交過程兩階段提交的簡要過程如下:1.協(xié)調(diào)者和參與者準(zhǔn)備就緒,參與者等待消息。2.第一階段開始:協(xié)調(diào)者進(jìn)入PREPARE狀態(tài),發(fā)送PREPARE消息,
協(xié)調(diào)者等待消息
3.參與者收到消息,能夠繼續(xù)執(zhí)行,則進(jìn)入READY狀態(tài)并發(fā)送READY指令
,否則發(fā)送ABORT。消息發(fā)送后,將日志寫入磁盤,參與者進(jìn)入阻塞狀態(tài)等待后續(xù)消息。4.第二階段開始:協(xié)調(diào)者收到所有消息,從PREPARE變更為COMMIT或ABORT狀態(tài),相應(yīng)的發(fā)送global_commit或者global_abort指令給所有的參與者
。5.參與者收到global_commit或者global_abort消息,執(zhí)行本地事務(wù)操作或回滾,同時解除阻塞狀態(tài)。兩階段提交可以在大多數(shù)情況保障分布式事務(wù)的原子性,即事務(wù)的相關(guān)操作要么都成功,要么都失敗。分析如下:1.兩階段提交中所有的消息等待過程,都可以設(shè)置超時。在步驟3、4接收消息時,如果出現(xiàn)超時,則參與者或協(xié)調(diào)者可以認(rèn)為對方故障,因而事務(wù)失敗,并執(zhí)行相應(yīng)指令。2.在步驟5處,如果參與者一直沒有收到global_commit或者global_abort消息,則無法直接判斷是否應(yīng)該中止事務(wù),因為有可能commit消息已經(jīng)發(fā)出,但由于網(wǎng)絡(luò)問題沒有收到,此時有可能其他節(jié)點(diǎn)已經(jīng)進(jìn)行了commit,也有可能時協(xié)調(diào)者故障。同理,如果在執(zhí)行步驟4之后,參與者出現(xiàn)故障,當(dāng)故障恢復(fù)之后,參與者無法判斷事務(wù)處在何種狀態(tài)。3.如果認(rèn)為參與者之間可以相互通信,則參與者一直沒有收到global_commit或者global_abort消息時,可以向其他參與者發(fā)出詢問。如果參與者在此過程中出現(xiàn)故障,也可以在故障恢復(fù)后,通過向協(xié)調(diào)者或其他參與者詢問的方式恢復(fù)事務(wù)應(yīng)有的狀態(tài)。如果協(xié)調(diào)者在步驟4出現(xiàn)故障,則可能所有參與者都沒有收到步驟5處的global_commit或者global_abort消息。此時會造成參與者一直阻塞,直到協(xié)調(diào)者恢復(fù)(例如通過日志恢復(fù))或有部分參與者收到global_commit或者global_abort消息等。如果有部分參與者還沒有進(jìn)行投票時就出現(xiàn)協(xié)調(diào)者故障,則在參與者相互協(xié)商之后,可中止事務(wù)。上述機(jī)制稱為協(xié)同中止機(jī)制。
兩階段提交的主要問題在于,當(dāng)?shù)诙A段出現(xiàn)協(xié)調(diào)者故障時,參與者阻塞時間較長,可能需要協(xié)調(diào)者完全恢復(fù),參與者才知道要做什么,并解除阻塞。在阻塞期間,參與者無法參與其他事務(wù),也無法執(zhí)行其他可能破壞事務(wù)原子性的操作。針對這個問題,有人提出了三階段提交方案。三階段提交的前提是節(jié)點(diǎn)可能發(fā)生故障,但通信鏈路不會發(fā)生故障。
三階段提交的主要流程為: 1.第一階段:協(xié)調(diào)者發(fā)出投票消息,參與者判斷自身是否可以提交任務(wù),并反饋給協(xié)調(diào)者。 2.第二階段:如果所有參與者都可以提交,協(xié)調(diào)者發(fā)出PreCommit消息,參與者收到消息后將事務(wù)寫入日志,并反饋給些調(diào)整。 3.第三階段:協(xié)調(diào)者根據(jù)情況發(fā)出global_commit消息,參與者收到消息后進(jìn)行真正的提交。
二階段提交時,如果在第二階段出現(xiàn)協(xié)調(diào)者故障,則參與者必須阻塞等待到超時,在執(zhí)行協(xié)同中止機(jī)制,甚至有幾率引發(fā)更長的阻塞。但在三階段提交時,如果參與者沒有收到第二階段的PreCommit消息,或協(xié)調(diào)者沒能收到全部的PreCommit回復(fù),都可以判定提交失敗,而不需要協(xié)同中止。如果在收到PreCommit之后,參與者沒有收到global_commit,也可以之際提交任務(wù),因為收到PreCommit即表示所有參與者都承諾可以提交任務(wù),此時不存在不確定性,不需要阻塞等待。
三階段提交以更大的網(wǎng)絡(luò)開銷,降低了參與者處在不確定狀態(tài)的時間,使得發(fā)生故障時的阻塞時間更短。但是在故障率較低的場景下,為降低網(wǎng)絡(luò)開銷,二階段提交應(yīng)用的更加廣泛。NoSQL并沒有一個統(tǒng)一的存儲模式,底層存儲引擎的實(shí)現(xiàn)差異很大,具體策略和配置方式也因軟件而異。常見的存儲模式有:鍵值模式、列存儲模式、文檔存儲模式和圖存儲模式等。常見的NoSQL軟件可能會結(jié)合使用多種存儲模式,例如鍵值對和列存儲。這些存儲模式在底層大多是一次寫入多次讀取的。除了圖存儲模式之外,大多對分布式環(huán)境支持較好。這些存儲模型之上,一般只支持簡單的查詢,對關(guān)聯(lián)查詢等支持較差。這些存儲模型對索引(例如:二級索引)的支持較差。第2章NoSQL數(shù)據(jù)庫的基本原理2.4NoSQL的常見存儲模式NoSQL并沒有一個統(tǒng)一的存儲模式,底層存儲引擎的實(shí)現(xiàn)差異很大,具體策略和配置方式也因軟件而異。常見的存儲模式有:鍵值模式、列存儲模式、文檔存儲模式和圖存儲模式等。常見的NoSQL軟件可能會結(jié)合使用多種存儲模式,例如鍵值對和列存儲。這些存儲模式在底層大多是一次寫入多次讀取的。除了圖存儲模式之外,大多對分布式環(huán)境支持較好。這些存儲模型之上,一般只支持簡單的查詢,對關(guān)聯(lián)查詢等支持較差。這些存儲模型對索引(例如:二級索引)的支持較差。第2章NoSQL數(shù)據(jù)庫的基本原理2.4NoSQL的常見存儲模式NoSQL并沒有一個統(tǒng)一的存儲模式,底層存儲引擎的實(shí)現(xiàn)差異很大,具體策略和配置方式也因軟件而異。常見的存儲模式有:鍵值模式、列存儲模式、文檔存儲模式和圖存儲模式等。常見的NoSQL軟件可能會結(jié)合使用多種存儲模式,例如鍵值對和列存儲。這
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中國航天科技集團(tuán)有限公司第五研究院第五一0所校園招聘備考考試試題附答案解析
- 2026廣東廣州市黃埔區(qū)人民政府黃埔街道辦事處政府聘員招聘1人備考考試題庫附答案解析
- 絎縫機(jī)安全生產(chǎn)操作制度
- 2026山東臨沂沂河新區(qū)部分事業(yè)單位招聘綜合類崗位工作人員3人參考考試試題附答案解析
- 安全生產(chǎn)經(jīng)費(fèi)管理制度
- 公司生產(chǎn)規(guī)章制度范本
- 農(nóng)產(chǎn)品生產(chǎn)過程監(jiān)控制度
- 安全生產(chǎn)自保制度
- 安全生產(chǎn)每日零報告制度
- 裝配生產(chǎn)線上管理制度
- 工廠裝修吊頂施工實(shí)施方案
- 墓碑銷售合同范本
- 眾籌服裝店合同范本
- 放射科技師年度工作總結(jié)
- 公司職業(yè)病防治宣傳教育培訓(xùn)制度范文
- 涉案資金與保證金監(jiān)管系統(tǒng)建設(shè)方案
- 脫硫用石灰石粉加工項目可行性實(shí)施報告
- 義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2025年版)
- 《立體裁剪》課件-9.女大衣立體裁剪
- 人教版四年級數(shù)學(xué)上學(xué)期期末沖刺卷(B)(含答案)
- 2025年6月上海市高考語文試題卷(含答案詳解)
評論
0/150
提交評論