版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
NoSQL
數(shù)據(jù)庫(kù)技術(shù)BEDING
UNIVERSITYOFPOSTSANDTELECOMMUNICATIONS1
什
么
是NoSQL2
NoSQL種類與特點(diǎn)3
CAP定
理4
ACID與BASE5
最終一致性技術(shù)基礎(chǔ)6
數(shù)據(jù)復(fù)制與分片7NoSQL數(shù)據(jù)庫(kù)與云計(jì)算8
NoSQL數(shù)據(jù)庫(kù)與物聯(lián)網(wǎng)9
NoSQL數(shù)據(jù)庫(kù)與區(qū)塊鏈10
小結(jié)目錄21.1什么是NoSQL
NitSQL■研究不同特點(diǎn)大數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)技術(shù);NoSQL
數(shù)據(jù)庫(kù)是非關(guān)系型數(shù)據(jù)存儲(chǔ)的廣義定義
;它不同于符合ACID
理論的關(guān)系型數(shù)據(jù)庫(kù),
數(shù)據(jù)存儲(chǔ)不需要固定的表結(jié)構(gòu);■
通常也不存在連接操作;NoSQL
數(shù)據(jù)庫(kù)不使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)模型
,而是使用鍵值模型、列模型、文檔模型、
圖模型等方式存儲(chǔ)數(shù)據(jù)。31.1什么是NoSQL——NoSQL誕生原因數(shù)據(jù)庫(kù)應(yīng)用需求變化■支撐OLTP型應(yīng)用:事務(wù)處理,RDB
的強(qiáng)項(xiàng)■支撐OLAP型應(yīng)用:多維分析處理■新需求:支撐面向大數(shù)據(jù)的存儲(chǔ)、處理與應(yīng)用
新挑戰(zhàn)■
one-size
does
not
fit
all■高性能、低成本■
不同類型非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)與管理計(jì)算機(jī)新技術(shù)助力NoSQL■
多核、大內(nèi)存,集群等技術(shù)的普及麻省理工MichaelStonebraker現(xiàn)代主流數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu)的
奠基人,2014年獲圖靈獎(jiǎng)。1.1什么是NoSQL——NoSQL誕生原因關(guān)系型數(shù)據(jù)庫(kù)面臨的問(wèn)題擴(kuò)展困難:由于存在類似Join
這樣多表查詢機(jī)
制,使得數(shù)據(jù)庫(kù)在擴(kuò)展方面很艱難;讀寫(xiě)慢:這種情況主要發(fā)生在數(shù)據(jù)量達(dá)到一定
規(guī)模時(shí)由于關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)邏輯復(fù)雜,使得
容易發(fā)生死鎖等并發(fā)問(wèn)題,所以導(dǎo)致大數(shù)據(jù)庫(kù)
應(yīng)用場(chǎng)景中讀寫(xiě)速度下滑非常嚴(yán)重;成本高:企業(yè)級(jí)數(shù)據(jù)庫(kù)的License
價(jià)格很驚人,
并且隨著系統(tǒng)規(guī)模越大,成本越高;■有限的支撐容量:現(xiàn)有關(guān)系型解決方案還無(wú)法
支撐Google
這樣海量的數(shù)據(jù)存儲(chǔ);1.1什么是NoSQL——NoSQL誕生原因大數(shù)據(jù)庫(kù)存儲(chǔ)與管理新需求呼吁技術(shù)創(chuàng)新低延遲的讀寫(xiě)速度:應(yīng)用快速地響應(yīng)能極大地提
升用戶的滿意度;支撐海量的數(shù)據(jù)和流量:對(duì)于互聯(lián)網(wǎng)等企業(yè)級(jí)大
應(yīng)用而言,需要高效存儲(chǔ)處理PB級(jí)的數(shù)據(jù)和百萬(wàn)
級(jí)的并發(fā)訪問(wèn)量;大規(guī)模集群的管理:系統(tǒng)管理員希望分布式應(yīng)用
能更簡(jiǎn)單的部署和管理;盡可能地降低運(yùn)營(yíng)成本:IT
經(jīng)理們希望在硬件成
本、軟件成本和人力成本能夠有大幅度地降低;1.1什么是NoSQL——典型的共性需求■
假設(shè)失效是必然發(fā)生的:
需要具有高容錯(cuò)性。NOSQL實(shí)現(xiàn)都建立在硬盤(pán)、機(jī)器和網(wǎng)絡(luò)都會(huì)經(jīng)常性失效假設(shè)之上?!?/p>
不能徹底阻止這些失效,需要讓系統(tǒng)能夠在即使非常極端的條件下也能應(yīng)付這些失效。對(duì)數(shù)據(jù)進(jìn)行分區(qū):需要高性能■
分布式存儲(chǔ),將讀寫(xiě)操作的負(fù)載分布到了不同的機(jī)器上
提高數(shù)據(jù)存儲(chǔ)與訪問(wèn)的并發(fā)性?!?/p>
保存同一數(shù)據(jù)的多個(gè)副本:需要具有高可用性。NOSQL提供數(shù)據(jù)副本機(jī)制,副本個(gè)數(shù)往往可配置■
查詢支持■在這個(gè)方面,不同的實(shí)現(xiàn)有相當(dāng)本質(zhì)的區(qū)別。不同實(shí)現(xiàn)的一個(gè)共性在
于哈希表中的
key/value
匹配。類型Top
3代表特點(diǎn)圖數(shù)據(jù)庫(kù)(GraphDBMS)Neo4jMicrosoftAzure
CosmosDB(Multi-model)OrientDB(Multi-model)圖型數(shù)據(jù)的最佳存儲(chǔ)。相比使用傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)性能更優(yōu),存儲(chǔ)模式設(shè)計(jì)與使用更加靈活、簡(jiǎn)單。文檔數(shù)據(jù)庫(kù)(DocumentStores)MongoDBAmazonDynamoDB(Multi-model)CoucHBase文檔存儲(chǔ)一般用類似JSON(JavaScriptObjectNotation)的格
式存儲(chǔ),存儲(chǔ)的內(nèi)容是文檔型的嵌套
結(jié)構(gòu)??梢詫?duì)某些字段建立索引,實(shí)
現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)的某些功能。鍵值數(shù)據(jù)庫(kù)
(KV
DBMS)Redis(Multi-model)AmazonDynamoDB(Multi-model)Microsoft
Azure
CosmosDB(Multi-model)可以通過(guò)Key快速查詢到其Value。一般來(lái)說(shuō),存儲(chǔ)不管Value的格式,照單全收。列族存儲(chǔ)Cassandra顧名思義,是按列存儲(chǔ)數(shù)據(jù)的。最(WideHBase大的特點(diǎn)是方便存儲(chǔ)結(jié)構(gòu)化和半結(jié)構(gòu)ColumnMicrosoftAzure
Cosmos化數(shù)據(jù),對(duì)某一列或者某幾列的查詢Stores)DB(Multi-model)有非常大的性能優(yōu)勢(shì)。1.2NoSQL分類與特點(diǎn)https://db-engines.com/en/ranking
截止2019年11月排名如下表類型Top
3代表特點(diǎn)時(shí)序數(shù)據(jù)庫(kù)(Time
SeriesDBMS)InfluxDBKdb+Prometheus時(shí)間序列數(shù)據(jù)庫(kù)用于支撐時(shí)間序列數(shù)據(jù)的優(yōu)化存儲(chǔ),每個(gè)條目都有一個(gè)相關(guān)的時(shí)間戳。時(shí)間序列數(shù)據(jù)可以來(lái)自傳感器、智能電表等,或可以存儲(chǔ)一個(gè)高頻股票交易系統(tǒng)的股票價(jià)格波動(dòng)情況。對(duì)象存儲(chǔ)(Object
orientedDBMS)InterSystems
Caché(Multi-model)Versant
Object
DBObjectStore通過(guò)類似面向?qū)ο笳Z(yǔ)言的語(yǔ)法操作數(shù)據(jù)庫(kù),
通過(guò)對(duì)象的方式存取數(shù)據(jù)。XML數(shù)據(jù)庫(kù)MarkLogicOracleBerkeley
DBVirtuoso可以高效地存儲(chǔ)XML數(shù)據(jù),并支持XML的內(nèi)部查詢語(yǔ)法,如XQuery、Xpath等。原生類XMLDB有BaseX等。RDF數(shù)據(jù)庫(kù)MarkLogic(Multi-model)VirtuosO(Multi-model)Apache
Jena
-TDB資源描述框架存儲(chǔ)數(shù)據(jù)庫(kù)是一種信息的
描述方法,最初用于描述元數(shù)據(jù)。目前主要
用于語(yǔ)義網(wǎng)、知識(shí)圖譜的存儲(chǔ)。資源描述框
架存儲(chǔ)數(shù)據(jù)庫(kù)主要以主語(yǔ)、謂語(yǔ)、賓語(yǔ)三元
組形式表示信息。搜索引擎(SearchEngines)ElasticsearchSplunkSolr搜索引擎是用于數(shù)據(jù)內(nèi)容搜索的NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng)。除了這種應(yīng)用的一般優(yōu)化,專業(yè)化數(shù)據(jù)庫(kù)通常還支持復(fù)雜搜索表達(dá)式、全文搜索、源搜索、搜索結(jié)果的排序和分組、空間搜索和高擴(kuò)展性分布式搜索等功能。1.2NoSQL種類與特點(diǎn)1.2
NoSQL種類與特點(diǎn)NoSQLDB的一般共性特點(diǎn)■
1)
不需要預(yù)定義模式:不需要事先定義數(shù)據(jù)模式
,預(yù)定義表結(jié)構(gòu)。數(shù)據(jù)中的每條記錄都可能有不同
的屬性和格式,當(dāng)插入數(shù)據(jù)時(shí),并不需要預(yù)先定義
它們的模式;■
2)
無(wú)共享架構(gòu):相對(duì)于將所有數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)中
的存儲(chǔ)區(qū)域全共享架構(gòu),NoSQL
往往將數(shù)據(jù)劃分
后存儲(chǔ)在各個(gè)本地服務(wù)器上。因?yàn)閺谋镜卮疟P(pán)讀取
數(shù)據(jù)的性能往往好于通過(guò)網(wǎng)絡(luò)傳輸讀取數(shù)據(jù)的性能
,從而提高系統(tǒng)的性能。1.2
NoSQL種類與特點(diǎn)3)
彈性可擴(kuò)展:可以在系統(tǒng)運(yùn)行的時(shí)候,動(dòng)態(tài)增加或者刪除結(jié)點(diǎn)。不需要停機(jī)維護(hù),
數(shù)據(jù)可以自動(dòng)遷移。4)
分區(qū):相對(duì)于將數(shù)據(jù)存放于同一個(gè)節(jié)點(diǎn)
,NoSQL
數(shù)據(jù)庫(kù)需要將數(shù)據(jù)進(jìn)行分區(qū),將記
錄分散在多個(gè)節(jié)點(diǎn)上面。并且通常分區(qū)的同
時(shí)還要做復(fù)制。這樣既提高了并行性能,又
能保證沒(méi)有單點(diǎn)失效的問(wèn)題;5)分發(fā)查詢到數(shù)據(jù),而非數(shù)據(jù)到查詢;1.2
NoSQL種類與特點(diǎn)6)
異步復(fù)制:和RAID存儲(chǔ)系統(tǒng)不同的是,NoSQL
中的復(fù)制,往往是基于日志的異步復(fù)制。這樣,數(shù)據(jù)就可以盡快地寫(xiě)入一個(gè)節(jié)點(diǎn)
,而不會(huì)被網(wǎng)絡(luò)傳輸引起遲延。缺點(diǎn)是并不
總是能保證一致性,這樣的方式在出現(xiàn)故障的時(shí)候,可能會(huì)丟失少量的數(shù)據(jù);7)
BASE:
相對(duì)于事務(wù)嚴(yán)格的ACID特性,
NoSQL數(shù)據(jù)庫(kù)保證的是BASE特性。1.2
NoSQL種類與特點(diǎn)圖數(shù)據(jù)庫(kù):將數(shù)據(jù)存儲(chǔ)在圖
(Graph)
結(jié)構(gòu)中。如下
圖示是一個(gè)簡(jiǎn)單的有向無(wú)環(huán)圖。GraphRecordsdatainRecordsdata
inRelationshipsorganizeNodeshavehaveProperties1.2
NoSQL種類與特點(diǎn)■
圖術(shù)語(yǔ):節(jié)點(diǎn)、邊、度、路徑、最短距離、連通
圖、全連通圖、子圖等等?!?/p>
圖數(shù)據(jù)庫(kù)可以看作是結(jié)點(diǎn)與關(guān)系的集合,圖數(shù)據(jù)
庫(kù)就是將數(shù)據(jù)存儲(chǔ)在擁有屬性的結(jié)點(diǎn)中,并用關(guān)
系將這些結(jié)點(diǎn)組織起來(lái)?!鰯?shù)據(jù)存儲(chǔ)的重要目的是為了檢索。圖的查找與搜
索可以通過(guò)遍歷算法完成。■
解決的查詢問(wèn)題根據(jù)算法,從開(kāi)始結(jié)點(diǎn)到與之相
連的結(jié)點(diǎn)查詢諸如“某個(gè)人好友的好友的好友是
哪些人”等問(wèn)題。■節(jié)點(diǎn)與節(jié)點(diǎn)間的距離(?)可以反映節(jié)點(diǎn)間關(guān)系
的緊密程度。1.2
NoSQL種類與特點(diǎn)文檔類:MongoDB■數(shù)據(jù)可以存儲(chǔ)為一個(gè)樹(shù)形結(jié)構(gòu)■文檔數(shù)據(jù)庫(kù)就是大量文檔樹(shù)形結(jié)構(gòu)的集合■數(shù)據(jù)存儲(chǔ)模式重點(diǎn)是樹(shù)形、森林結(jié)構(gòu)的抽象,文檔模式可變根節(jié)點(diǎn)
客戶分支
分支
客戶1………客戶n分支
分支
值
標(biāo)識(shí)
姓名
地址值
分支
分支
112
張三
城市
街道值
值
北京
0號(hào)西土城路1海淀區(qū)shard?mongodmongodmongodconfig
serversCmongodC?mongodCmongod>Config
Server-存儲(chǔ)集群的元數(shù)據(jù),如分片信息、數(shù)據(jù)塊映射等。config
服務(wù)器保存了兩個(gè)映射關(guān)系,一個(gè)是key區(qū)間的數(shù)據(jù)都存放在那些chunk
上的映射關(guān)系,另一個(gè)是chunk
都存放在哪些分片
節(jié)點(diǎn)上的映射關(guān)系。>Route
Server
客戶端訪問(wèn)路由(統(tǒng)一接入點(diǎn)),查詢優(yōu)化,數(shù)據(jù)合并、排序、裁剪,請(qǐng)求推送等
。客戶端統(tǒng)一訪問(wèn)路由節(jié)點(diǎn)mongos,
來(lái)進(jìn)行數(shù)據(jù)操作。路由節(jié)點(diǎn)先訪問(wèn)config服務(wù)器獲取信息,找到數(shù)據(jù)真正存放位置,然后再對(duì)其進(jìn)行操作。client>MongoServer-mongod實(shí)例,存儲(chǔ)實(shí)際數(shù)據(jù)的模塊。1.2
NoSQL種類與特點(diǎn)文檔類:MongoDBshard?mongodshard?mongodmongodmongodmongodmongodmongodmongodmongodshard?mongo5mongos鍵值類:Redis■簡(jiǎn)潔:數(shù)據(jù)主要采用Key-Value
形式存儲(chǔ),鍵為唯一標(biāo)識(shí)符?!龈咚伲簲?shù)據(jù)駐留內(nèi)存,Redis
也支持將內(nèi)存中的數(shù)據(jù)持久化到
磁盤(pán)中,重啟的時(shí)候可以再次加載進(jìn)行使用,同時(shí)保障數(shù)據(jù)的
高性能訪問(wèn)及可靠性?!鲆讛U(kuò)展:根據(jù)系統(tǒng)負(fù)載量,靈活添加或刪除服務(wù)器?!鰧?duì)鍵可設(shè)置失效時(shí)間,豐富的配置管理功能可以精準(zhǔn)地設(shè)定數(shù)
據(jù)服務(wù)級(jí)別。鍵值Key1Value1…………KeyNValueN1.2
NoSQL種類與特點(diǎn)1.2
NoSQL種類與特點(diǎn)列族數(shù)據(jù)庫(kù):HBASE,
大數(shù)據(jù)技術(shù)基礎(chǔ)中有學(xué)習(xí)Cient-
ZookeeperHMaster該類數(shù)據(jù)庫(kù)課程重點(diǎn)學(xué)習(xí):
CassandraDataNode
DataNodeDataNodeDataNodeDataNode…DFS
Client
…DFSClientStore
MemstoreStoreFileHFileStore
MemStoreStoreFileHFileMemstoreStoreFileHFileMemstoreStoreFileHFileHRegionServer
HRegjionHRegionServer
HRegionStoreStoreFileHFileStoreStoreileHFileHBaseHDFSHLogH9一致性
(Consistency)任何一個(gè)讀操作總是能讀取到之前完成的寫(xiě)操作結(jié)果
,也就是在分布式環(huán)境中,多點(diǎn)的數(shù)據(jù)是一致的;■
可
用
性
(Availability)每一個(gè)操作總是能夠在確定的時(shí)間內(nèi)返回,也就是系
統(tǒng)隨時(shí)都是可用的?!?/p>
分區(qū)容忍性
(Partition
Tolerance)在出現(xiàn)網(wǎng)絡(luò)分區(qū)(比如斷網(wǎng))的情況下,分離的系統(tǒng)
也能正常運(yùn)行。一個(gè)分布式系統(tǒng)不能同時(shí)滿足一致
性
,可用性和分區(qū)容錯(cuò)性這三個(gè)需
求,最多只能同時(shí)滿足兩個(gè)。1.3CAP定理CAP理
論1.3CAP定理數(shù)據(jù)庫(kù)按CAP分類RDBMS
ConsistencyCA
CPCAPTheoremCouchDBCassandraDynamoDB
RiakMongoDB
HBaseRedisPartitionToleranceAvailabilityAP(1)關(guān)注一致性和可用性的
(CA)這些數(shù)據(jù)庫(kù)對(duì)于分區(qū)容忍性方面比較弱,主
要采用復(fù)制
(Replication)
這種方式來(lái)保證
數(shù)據(jù)的安全性,常見(jiàn)的CA系統(tǒng)有:傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),比如Postgres
和MySQL等
(Relational)■Vertica(Column-oriented)Aster
Data(Relational)Greenplum(Relational)1.3
CAP定理(2)關(guān)注一致性和分區(qū)容忍性的(CP)■這種系統(tǒng)將數(shù)據(jù)分布在多個(gè)網(wǎng)絡(luò)分區(qū)的節(jié)點(diǎn)上,并保證這
些數(shù)據(jù)的
一
致性,但是對(duì)于可用性的支持方面有問(wèn)題,比
如當(dāng)集群出現(xiàn)問(wèn)題的話,節(jié)點(diǎn)有可能因無(wú)法確保數(shù)據(jù)是
一
致性的而拒絕提供服務(wù),主要的CP
系
統(tǒng)
有
:BigTable(Column-oriented)■Hypertable(Column-oriented)■HBase(Column-oriented)■MongoDB(Document)Terrastore(Document)Redis(Key-value)Scalaris(Key-value)MemcacheDB(Key-value)■
Berkeley
DB(Key-value)1.3
CAP定理(3)關(guān)于可用性和分區(qū)容忍性的(AP)這類系統(tǒng)主要以實(shí)現(xiàn)“最終一致性
(Eventual
Consistency)”來(lái)確??捎眯院头謪^(qū)容忍性,AP
的系統(tǒng)有:■Dynamo(Key-value)Voldemort(Key-value)TokyoCabinet(Key-value)■KAI(Key-value)■Cassandra(Column-oriented)CouchDB(Document-oriented)SimpleDB(Document-oriented)■Riak(Document-oriented)1.3
CAP定理關(guān)系數(shù)據(jù)庫(kù)■表都是存儲(chǔ)一些格式
化的數(shù)據(jù)結(jié)構(gòu)■每個(gè)元組字段的組成都一樣即使不是每個(gè)元組都
需要所有的字段,但
數(shù)據(jù)庫(kù)會(huì)為每個(gè)元組
分配所有的字段這樣的結(jié)構(gòu)可以便于
表與表之間進(jìn)行連接等操作■
NoSQL以鍵值對(duì)存儲(chǔ),它
的結(jié)構(gòu)不固定每一個(gè)元組可以有
不一樣的字段每個(gè)元組可以根據(jù)
需要增加一些自己
的鍵值對(duì)不會(huì)局限于固定的
結(jié)構(gòu),可以減少一
些時(shí)間和空間的開(kāi)
銷1.4ACID與BASE關(guān)系數(shù)據(jù)庫(kù)VS
NoSQLNoSQL■弱一致性的理論BASEBASE
分別是:Basically
Available
Soft-stateEventualConsistency關(guān)系數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)中強(qiáng)調(diào)
ACID
分
別
是■原子性
(Atomicity)口一
致
性(Consistency)隔
離
性(Isolation)持
久
性(Durability)ACID的目的就是通過(guò)事
務(wù)支持,保證數(shù)據(jù)的完
整性和正確性1.4ACID與BASE1.4ACID與BASE基本可用性:分布式系統(tǒng)在出現(xiàn)不可預(yù)知故
障的時(shí)候,允許損失部分可用性。軟狀態(tài):允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),并認(rèn)為該中間狀態(tài)的存在不會(huì)影響系統(tǒng)的整
體可用性,即允許系統(tǒng)在不同節(jié)點(diǎn)的數(shù)據(jù)副
本之間進(jìn)行數(shù)據(jù)同步的過(guò)程存在延時(shí)。最終一致性:BASE系統(tǒng)顯著的特點(diǎn)是要保
證在短時(shí)間內(nèi),即使有不同步的風(fēng)險(xiǎn),也要
允許新數(shù)據(jù)能夠被存儲(chǔ)。所有的數(shù)據(jù)副本,
在經(jīng)過(guò)一段時(shí)間的同步后,最終能夠達(dá)到一
個(gè)一致的狀態(tài)。
261.5最終一致性技術(shù)基礎(chǔ)NoSQL
分布式集群系統(tǒng)是由多個(gè)節(jié)點(diǎn)(指服
務(wù)器、存儲(chǔ)設(shè)備等)構(gòu)成由于網(wǎng)絡(luò)異常、服務(wù)器故障等原因,節(jié)點(diǎn)并
不總能保證正常工作,特別是在節(jié)點(diǎn)數(shù)量很
大的時(shí)候,出現(xiàn)異常狀況在所難免。為了保證系統(tǒng)的正常運(yùn)行,分布式系統(tǒng)中對(duì)
于數(shù)據(jù)的存儲(chǔ)采用多數(shù)據(jù)副本來(lái)保證高可用
性,這個(gè)過(guò)程對(duì)于用戶來(lái)說(shuō)是透明的?!鋈绾伪U隙喔北緮?shù)據(jù)的最終一致性?27■
按照服務(wù)保障能力的不同,客戶端訪問(wèn)一致性可以
分為以下幾個(gè)類型?!?/p>
嚴(yán)格一致性:語(yǔ)義上相當(dāng)于只存在一份數(shù)據(jù)。任何更新
看上去都是即時(shí)發(fā)生的?!白x己之所寫(xiě)”一致性:客戶端可立即看到自己所作的
更新,且客戶端可在不同請(qǐng)求之間切換服務(wù)器,但不能
立即看到其他客戶端所作的更新。■
會(huì)話一致性:對(duì)于客戶端在同一會(huì)話作用域中發(fā)起的請(qǐng)
求,通常綁定到同一臺(tái)服務(wù)器,提供“讀己之所寫(xiě)”一
致
性
?!?/p>
單調(diào)讀一致性:保證時(shí)間上的單調(diào)性,保證客戶端在未
來(lái)的請(qǐng)求中,只會(huì)讀到比當(dāng)前更新的數(shù)據(jù)?!?/p>
最終一致性:這是最弱的一種保證。在更新的過(guò)程中,
客戶端可能看到不一致的視圖。1.5.1一致性問(wèn)題1.5.2
Quorum的NWR
策略Quorom
機(jī)制是一種分布式系統(tǒng)中常用的,用來(lái)保證
數(shù)據(jù)冗余和最終一致性的投票算法,其主要數(shù)學(xué)思
想來(lái)源于鴿巢原理。Quorum的NWR策略中N代表總的節(jié)點(diǎn)數(shù)量,W代表
寫(xiě)的節(jié)點(diǎn)數(shù)量,R代表讀的節(jié)點(diǎn)數(shù)量。Quorom
機(jī)制中分布式系統(tǒng)中的每一份數(shù)據(jù)拷貝對(duì)象
都被賦予一票。每一個(gè)操作必須要獲得最小的讀票
數(shù)
(Vr)或者最小的寫(xiě)票數(shù)(Vw)
才能讀或者寫(xiě)。291.5.2
Quorum的NWR
策略如果一個(gè)系統(tǒng)有V
票(意味著一個(gè)數(shù)據(jù)對(duì)象有V
份冗
余拷貝),那么這最小讀寫(xiě)票數(shù)必須滿足:(1)Vr+Vw>V(2)Vw>V/2■第1條規(guī)則保證了一個(gè)數(shù)據(jù)不會(huì)被同時(shí)讀寫(xiě)。■第2條規(guī)則保證了數(shù)據(jù)的串行化修改。Quorum
的讀寫(xiě)最小票數(shù)可以用來(lái)作為系統(tǒng)在讀、寫(xiě)
性能方面的一個(gè)可調(diào)節(jié)參數(shù)。寫(xiě)票數(shù)Vw
越大,則讀
票數(shù)Vr越小,這時(shí)候系統(tǒng)寫(xiě)的開(kāi)銷就大。反之,則
寫(xiě)的開(kāi)銷就小。30■
讀
數(shù)
據(jù):■
假設(shè)共有N
個(gè)數(shù)據(jù)副本,其中K
個(gè)已經(jīng)更新,N-K
個(gè)未更新
,那么任意讀取N-K+1個(gè)副本數(shù)據(jù)的時(shí)候就必定至少有1
個(gè)是屬于更新了的K
個(gè)里面的,也就是Quorum的交集■
只需比較讀取的N-K+1
數(shù)據(jù),并將其中版本最高的那個(gè)數(shù)
據(jù)返回給用戶就可以得到最新更新的數(shù)據(jù)。■
寫(xiě)
數(shù)
據(jù):■
只需要完成寫(xiě)K(大于N/2)個(gè)副本的更新后,就可以告訴客
戶端操作完成,而不需要全部寫(xiě)入完成;■
當(dāng)然告訴用戶完成操作后,系統(tǒng)內(nèi)部還是會(huì)繼續(xù)把剩余的
副本更新,這對(duì)于用戶是透明的。1.5.2
Quorum的NWR
策略31■
Paxos算法是LeslieLamport于1990年提出的,
類似于解決拜占庭將軍問(wèn)題,基于消息傳遞
解決分布式系統(tǒng)中的一致性問(wèn)題。一個(gè)被Paxos管理的系統(tǒng)實(shí)際上談?wù)摰氖侵禒?/p>
態(tài)和跟蹤的問(wèn)題。Cassandra
、Google的分布式鎖服務(wù)Chubby等
采用的都是Paxos算法進(jìn)行一致性管理。Paxos完成一次寫(xiě)操作需要兩次交互過(guò)程,分別是prepare/promise和propose/accept。1.5.3
PaxoS算法簡(jiǎn)介321.5.3PaxoS算法簡(jiǎn)介■
Paxos一致性算法執(zhí)行過(guò)程Replica)Replica)Leader)-
(Replica)
Leader)
Replica)Replica)Replica)prepare
promiseReplica)Replica)Leader)
Replica)
Leader)
Replica)Replica)Replica)proposeaccept331.5.3
Paxos算法簡(jiǎn)介Paxos
一
致性算法執(zhí)行過(guò)程■
第一次由提交者
(Leader)
向所有其他服務(wù)器發(fā)
出Prepare消息請(qǐng)求準(zhǔn)備,所有服務(wù)器中大多數(shù)
如果回復(fù)諾言
(promise)
就表示準(zhǔn)備好了,可
以接受寫(xiě)入;■第二次提交者向所有服務(wù)器發(fā)出正式建議Propose,所有服務(wù)器中大多數(shù)如果回復(fù)已經(jīng)接
收
(accept)就表示成功?!鲞@里大多數(shù)的含義一般指超過(guò)半數(shù)以上,即至
少N/2+1個(gè)節(jié)點(diǎn),N
為節(jié)點(diǎn)總數(shù)。341.5.3
PaxoS算法簡(jiǎn)介Paxos一致性算法執(zhí)行過(guò)程■接受的過(guò)程可能會(huì)發(fā)生失敗,在回復(fù)了諾言消
息以后,在接受到Accept消息之前,如果有足夠
多的服務(wù)器正好在這個(gè)時(shí)間段失敗,那么執(zhí)行
接受行為只能是少數(shù)服務(wù)器;Paxos算法不允許在沒(méi)有達(dá)成共識(shí)情況下任何寫(xiě)
操作發(fā)生,這種壞的情況在實(shí)踐中經(jīng)常通過(guò)重
復(fù)接受階段來(lái)讓大多數(shù)節(jié)點(diǎn)最終接受;Paxos算法中會(huì)維護(hù)一個(gè)全局唯一的序列號(hào)。序
列號(hào)是由建議流程產(chǎn)生,它定義了接受流程應(yīng)
該準(zhǔn)備接受帶有最新序列號(hào)的建議,序列號(hào)是算法的關(guān)鍵;
351.5.4
Raft算法簡(jiǎn)介Raft算法是由斯坦福大學(xué)Diego
Ongaro博士在
2014年提出的一種更易于理解的分布式架構(gòu)
中日志一致性管理算法。■
相比于Paxos,Raft
算法更容易理解,也更容
易應(yīng)用到實(shí)際的系統(tǒng)當(dāng)中。Raft算法是Zookeeper框架的核心算法,也是區(qū)塊鏈中聯(lián)
盟鏈采用比較多的共識(shí)算法。Raft算法中,分布式系統(tǒng)中的節(jié)點(diǎn)有三種角
色?!鲱I(lǐng)導(dǎo)者、候選者、追隨者361.5.4
Raft算法簡(jiǎn)介Raft算法作用示意④①Client②ServerConsensusModuleMachinex:3y:9z:0y-1
y-9
…Logx-3③State371.5.4
Raft算法簡(jiǎn)介■Raft算法三種節(jié)點(diǎn)角色作用■領(lǐng)導(dǎo)者(Leader):
只有一個(gè),負(fù)責(zé)接收客戶端
的請(qǐng)求,將日志復(fù)制到其他節(jié)點(diǎn)并告知其他節(jié)
點(diǎn)何時(shí)應(yīng)用這些日志是安全的。■候選者
(Candidate)
:
通常多個(gè),用于選舉
Leader的
一種角色。追隨者
(Follower)
:
通常多個(gè),負(fù)責(zé)響應(yīng)來(lái)自
Leader或
者Candidate的請(qǐng)求。Raft算法思想類似民主選舉,領(lǐng)導(dǎo)者由民眾投票選舉產(chǎn)生,集
群剛開(kāi)始沒(méi)有領(lǐng)導(dǎo)者,所有服務(wù)器節(jié)點(diǎn)都是追隨
者;■接下來(lái)進(jìn)行選舉,角色轉(zhuǎn)換為候選者參與投票,
每臺(tái)服務(wù)器只能投一票,得票超過(guò)半數(shù)以上的當(dāng)
選為領(lǐng)導(dǎo)者,并設(shè)定這屆領(lǐng)導(dǎo)者的任期
(Term)
,從而選舉結(jié)束;■其他候選人轉(zhuǎn)換為追隨者,并無(wú)條件服從領(lǐng)導(dǎo)者
的領(lǐng)導(dǎo)?!鯮aft把時(shí)間切割為任意長(zhǎng)度的任期,每個(gè)任期都有一個(gè)任期號(hào),采用連續(xù)的整數(shù)。1.5.4
Raft算法簡(jiǎn)介1.5.4Raft算法簡(jiǎn)介Raft算法思想三類角色狀態(tài)轉(zhuǎn)換如圖所示超時(shí)/新選舉接收到大多數(shù)選票超時(shí),開(kāi)始選舉Candidate候選者產(chǎn)生領(lǐng)導(dǎo)者開(kāi)始新任期收到更高任期請(qǐng)求,任期結(jié)束啟動(dòng)Follower
追隨者Leader領(lǐng)導(dǎo)者401.5.4
Raft算法簡(jiǎn)介Raft算法從時(shí)間角度看任期,如圖所示,每次選舉
如果成功則由領(lǐng)導(dǎo)者來(lái)負(fù)責(zé)集群中的事務(wù)及狀態(tài)管
理,有時(shí)也可能出現(xiàn)選舉失敗,則需要重新選舉直
到選舉成功,如圖中的t3情
況
。term
1term2t3term
4termsnoemergingleaderelection
normaloperation411.5.4
Raft算法簡(jiǎn)介■
基于Leader的方法,Raft
算法可分解成三個(gè)子問(wèn)題■領(lǐng)導(dǎo)者選舉(LeaderElection):
原來(lái)的領(lǐng)導(dǎo)者掛掉
后,必須選出一個(gè)新的領(lǐng)導(dǎo)者,候選者可以自己
選
自
己
。日志復(fù)制(LogReplication):
領(lǐng)導(dǎo)者從客戶端接收
日志,并向Follower們發(fā)出指令,比如進(jìn)行日志復(fù)
制。安全性(Safety):
如果有任意的Server將日志項(xiàng)回放
到狀態(tài)機(jī)中了,那么其他的Server只會(huì)回放相同的日
志
項(xiàng)
。
421.5.4
Raft算法簡(jiǎn)介■
領(lǐng)
導(dǎo)
者
選
舉(LeaderElection):
要開(kāi)始一次選舉過(guò)程,F(xiàn)ollower會(huì)給當(dāng)前term加1并且轉(zhuǎn)換成Candidate狀態(tài),并行地
向集群中的其他服務(wù)器節(jié)點(diǎn)發(fā)送請(qǐng)求投票的消息來(lái)給自己投
票。候選人的狀態(tài)維持直到以下任何一個(gè)條件發(fā)生。(1)
自己贏得這次選舉。給所有其它節(jié)點(diǎn)發(fā)送這個(gè)信息,這樣所有節(jié)點(diǎn)都會(huì)轉(zhuǎn)成Follower。(2)其他的服務(wù)器成為領(lǐng)導(dǎo)者。如果Leader的term大于或等
于自身的term,
則
該Candidate會(huì)轉(zhuǎn)成Follower;
否則拒絕該Leader,并繼續(xù)保持Candidate狀態(tài)。(3)沒(méi)有任何一個(gè)獲選,則增加term,發(fā)起新一輪選舉。1.5.5向量時(shí)鐘機(jī)制向量時(shí)鐘(VectorClock)
實(shí)際是一組版本號(hào),版本號(hào)即邏輯時(shí)鐘。■
假設(shè)數(shù)據(jù)需要存放3份,需要3臺(tái)DB存儲(chǔ)(用A,B,C表示),那么向量維度就是3,每個(gè)DB
有一個(gè)版本
號(hào),從0開(kāi)始,這樣就形成了一個(gè)向量版本[A:0,B:0,
C:0]。Step
1:
初始狀態(tài)下,所有機(jī)器都是[A:0,B:0,C:0]:DB
A——>[A:0,B:0,C:0]DB
B——>[A:0,B:0,C:0]DB
C——>[A:0,B:0,C:0]441.5.5向量時(shí)鐘機(jī)制Step2:假設(shè)應(yīng)用是一個(gè)電商平臺(tái),現(xiàn)在錄入一個(gè)華為P30的價(jià)格3888元;客戶端隨機(jī)選擇一個(gè)DB機(jī)器寫(xiě)入?,F(xiàn)假設(shè)選擇了A
。,
數(shù)據(jù)
大概是這樣:{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}Step
3:
接下來(lái)A會(huì)把數(shù)據(jù)同步給B和C,于是最終同步結(jié)果如下:
DB_A——>{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}
DB_B——>{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}
DB_C——>{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}Step4:
過(guò)了幾分鐘,價(jià)格出現(xiàn)波動(dòng),降價(jià)到3688元;于是某個(gè)業(yè)務(wù)員更新價(jià)格。這時(shí)候系統(tǒng)隨機(jī)選B作為寫(xiě)入存儲(chǔ),于是結(jié)果看起來(lái)
是這樣:DB_A——>{key=HUAWEI-P30
_price;value=3888;vclk=[A:1,B:0,C:0]}
DB_B——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,
B:1,C:0]}DB_C——>{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}1.5.5向量時(shí)鐘機(jī)制Step5:于
是B
就把更新同步給其他幾個(gè)存儲(chǔ):DB_A——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}
DB_B——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}DB_C——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}■
到目前為止都是正常同步,下面開(kāi)始演示一種不正常的情況。Step6:價(jià)格再次發(fā)生波動(dòng),變成4000元,這次選擇C
寫(xiě)入:DB_A——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}
DB_B——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}DB_C——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}Step
7:C把更新同步給A
和B,因?yàn)槟承﹩?wèn)題,只同步到A,
結(jié)果如下
:DB_A——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}
DB_B——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}DB_C——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}461.5.5向量時(shí)鐘機(jī)制Step8:
價(jià)格再次波動(dòng),變成3788元,系統(tǒng)選擇B寫(xiě)入:DB_A——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}DB_B——>{key=HUAWEI-P30_price;value=3788;vclk=[A:1,B:2,C:0]}DB_C——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}Step
9:當(dāng)B同步更新給A和C的時(shí)候就出現(xiàn)問(wèn)題了,A自己的向量時(shí)
鐘是[A:1,B:1,C:1],
而收到更新消息攜帶過(guò)來(lái)的向量時(shí)鐘是[A:1,B:2,C:0],B:2比
B:1新,但是C:0卻比C1舊。這時(shí)候發(fā)生不一致沖
突。不一致問(wèn)題如何解決?向量時(shí)鐘策略并沒(méi)有給出解決辦法,留給用
戶自己去解決,只是告知目前數(shù)據(jù)存在沖突。加上時(shí)間戳是一個(gè)方法,具體方法是再加一個(gè)維度信息,即數(shù)據(jù)更
新的時(shí)間戳
(Timestamp),如[A:1,B:2,C:4,ts:123434354]。如果發(fā)生沖突,再比較一下兩個(gè)數(shù)據(jù)的時(shí)間戳,大的數(shù)值說(shuō)明比較后更新,
選擇它作為最終數(shù)據(jù),并對(duì)向量時(shí)鐘進(jìn)行修正。471.6數(shù)據(jù)復(fù)制與分片NoSQL集群主要通過(guò)數(shù)據(jù)復(fù)制和分片
(Sharding)機(jī)制保障讀取數(shù)據(jù)的并行性,滿足分布容錯(cuò)性的要
求。■
數(shù)據(jù)復(fù)制:
是指將同一份數(shù)據(jù)拷貝至多個(gè)節(jié)點(diǎn)?!?/p>
數(shù)據(jù)分片:是指將不同數(shù)據(jù)存放在不同節(jié)點(diǎn)中?!?/p>
復(fù)制和分片是兩項(xiàng)正交的技術(shù),它們既可以選其一
使用,也可以結(jié)合使用?!?/p>
數(shù)據(jù)復(fù)制的實(shí)現(xiàn)方法與集群架構(gòu)緊密相關(guān),不同類
型的NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng)提供了豐富的參數(shù),對(duì)數(shù)據(jù)復(fù)制需要達(dá)到的能力級(jí)別進(jìn)行選擇性配置,
如保持3個(gè)副本還是5個(gè)副本。481.6數(shù)據(jù)復(fù)制與分片■
客戶端在更新或新增數(shù)據(jù)后,已有數(shù)據(jù)副本之間如
何保持一致以及新增數(shù)據(jù)如何傳播才能達(dá)到數(shù)據(jù)副
本配置要求,是數(shù)據(jù)復(fù)制架構(gòu)重點(diǎn)解決的問(wèn)題。
一般按照集群架構(gòu)的管理模式分為■
主從復(fù)制■
對(duì)等復(fù)制數(shù)據(jù)分片機(jī)制本質(zhì)上解決的是負(fù)載均衡問(wèn)題,盡可
能地將數(shù)據(jù)均勻地分布存儲(chǔ)在不同服務(wù)器上。■
常用算法有輪循(Round
Robin)算法、哈希(HASH)
算
法、
最少連接(Least
Connection)算法等?!?/p>
一致性哈希(Consistent
Hashing)
是分布式系統(tǒng)負(fù)載均衡
的首選算法,也是最為常用的算法。492006年8月9日,Google
首席執(zhí)行官埃里克·施密特(EricSchmidt)
在搜索引擎大會(huì)(SES
San
Jose
2006)
上首次提出“云計(jì)算”(Cloud
Computing)的概念■
云計(jì)算是利用分布式計(jì)算和虛擬資源管理等技術(shù),通過(guò)網(wǎng)
絡(luò)將分散的IT
資源集中起來(lái)形成共享的資源池,以動(dòng)態(tài)、
按需和可度量的方式向用戶提供服務(wù)?!鲈品?wù):即將基礎(chǔ)設(shè)施作為服務(wù)
(Infrastructure
as
a
Service
,IaaS)、
將平臺(tái)作為服務(wù)(Platform
as
a
Service,PaaS)
與
將軟件作為服務(wù)(Software
as
a
Service,SaaS)
等?!鲈朴?jì)算技術(shù)與大數(shù)據(jù)技術(shù)是相輔相成、互相促進(jìn)的關(guān)系。1.7
NoSQL數(shù)據(jù)庫(kù)與云計(jì)算50■
NoSQL
數(shù)據(jù)庫(kù)是重要的大數(shù)據(jù)存儲(chǔ)技術(shù)■
云計(jì)算技術(shù)■
一方面為不同類型的NoSQL
數(shù)據(jù)庫(kù)架構(gòu)中的資源管理與
負(fù)載均衡調(diào)度等機(jī)制提供了技術(shù)參考和支撐,如Hadoop
生態(tài)中的HBase數(shù)據(jù)庫(kù)內(nèi)置了Zookeeper實(shí)現(xiàn)集群的協(xié)調(diào)
一致性資源管理;■
另一方面,云服務(wù)供應(yīng)商提供了不同類型的NoSQL
數(shù)據(jù)
庫(kù)服務(wù),用戶可以通過(guò)購(gòu)買服務(wù)的方式使用NoSQL
數(shù)據(jù)
庫(kù),相比自己購(gòu)買服務(wù)器搭建并維護(hù)NoSQL
數(shù)據(jù)庫(kù)集群
來(lái)講更加經(jīng)濟(jì)便捷。■
國(guó)內(nèi):BATHJ,……■國(guó)外:谷歌、亞馬遜、微軟,5……1.7
NoSQL數(shù)據(jù)庫(kù)與云計(jì)算1.8NoSQL數(shù)據(jù)庫(kù)與物聯(lián)網(wǎng)■
互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)結(jié)合5G
通信技術(shù)、云
計(jì)算、AI
等的發(fā)展將進(jìn)一步促進(jìn)物理世界、信息世界
、人類社會(huì)之間的互聯(lián)互通與智能互動(dòng)Virtual
Reality5GPartner-Connectivity
Services
M2M/loTCustomer
Engagement
Business
Model
EnablementAnalyticsPartnerEcosystemIntegration
Framework&APls■
物聯(lián)網(wǎng)感知大數(shù)據(jù)的存儲(chǔ)離不開(kāi)NoSQL
技術(shù)的支持1.8
NoSQL數(shù)據(jù)庫(kù)與物聯(lián)網(wǎng)物聯(lián)網(wǎng)是一個(gè)基于互聯(lián)網(wǎng)、傳統(tǒng)電信網(wǎng)等的信息承
載體,讓所有能夠被獨(dú)立尋址的普通物理對(duì)象可以
互聯(lián)互通?!?/p>
物聯(lián)網(wǎng)技術(shù)體系:主要包括整體感知、可靠傳輸和
智能處理三方面的關(guān)鍵技術(shù)。■
物聯(lián)網(wǎng)感知大數(shù)據(jù)的智能處理離不開(kāi)NoSQL
高性
能大數(shù)據(jù)存儲(chǔ)技術(shù)的支持,物聯(lián)網(wǎng)感知數(shù)據(jù)具有典
型的空間時(shí)序特征。NoSQL
數(shù)據(jù)庫(kù)中與實(shí)時(shí)流數(shù)據(jù)處理技術(shù)框架相適
應(yīng)的時(shí)序類型數(shù)據(jù)庫(kù)能夠很好地匹配物聯(lián)網(wǎng)感知數(shù)
據(jù)的存儲(chǔ)需求。531.9
NoSQL數(shù)據(jù)庫(kù)與區(qū)塊鏈■
區(qū)
塊
鏈
(Blockchain)是分布式數(shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)(
P2P)
傳輸、共識(shí)機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新
型應(yīng)用模式。Equity股權(quán)Private
Markets
G
私有市場(chǎng)Debt債券Crowdfundingacts
區(qū)
塊
鏈每
Healthcare健康護(hù)理Title
Records權(quán)屬登記OwnershipRemittance匯款P2P
LendingP2P
借貸-
Microfinance
微金融Derivatives
IntellectualPropertyE-commerceGlobal
PaymentsWagers博彩Escrow托管支付Digital
Rights數(shù)字權(quán)益BlockchainVotingX要541.9
NoSQL數(shù)據(jù)庫(kù)與區(qū)塊鏈區(qū)塊鏈本質(zhì)上是一個(gè)去中心化的數(shù)據(jù)庫(kù),是一串使
用密碼學(xué)方法相關(guān)聯(lián)產(chǎn)生的數(shù)據(jù)塊,每一個(gè)數(shù)據(jù)塊
中包含了一批網(wǎng)絡(luò)交易的信息,用于驗(yàn)證其信息的
防偽有效性。區(qū)塊鏈系統(tǒng)上的節(jié)點(diǎn),可以是不同組織的、彼此無(wú)
須信任;區(qū)塊鏈數(shù)據(jù)由所有節(jié)點(diǎn)共同維護(hù),每個(gè)參與維護(hù)的
節(jié)點(diǎn)都能復(fù)制獲得一份完整記錄的拷貝。區(qū)塊鏈技術(shù)旨在提供天然可信的分布式賬本平臺(tái),不需要第三方中介機(jī)構(gòu)。■
特點(diǎn):分布式容錯(cuò)性、不可篡改性、隱私保護(hù)性。551.9
NoSQL數(shù)據(jù)庫(kù)與區(qū)塊鏈區(qū)
塊鏈技術(shù)是金融領(lǐng)域、征信領(lǐng)域、共享經(jīng)濟(jì)、知
識(shí)產(chǎn)權(quán)保護(hù)等領(lǐng)域的研究熱點(diǎn)。區(qū)塊鏈對(duì)等分布式架構(gòu)中的一致性問(wèn)題與采用對(duì)等
集群架構(gòu)的某些NoSQL數(shù)據(jù)庫(kù)有一定的相似性,核心算法思想可以互相借鑒?!?/p>
與NoSQL
數(shù)據(jù)庫(kù)相區(qū)別的是區(qū)塊鏈分布式架構(gòu)中
每個(gè)節(jié)點(diǎn)中存儲(chǔ)的不僅僅是數(shù)據(jù)本身,還包含數(shù)據(jù)
的來(lái)源信息,隨著區(qū)塊鏈節(jié)點(diǎn)規(guī)模的增加,數(shù)據(jù)操
作往往會(huì)存在較大延遲?!?/p>
為了提高事務(wù)處理性能,區(qū)塊鏈技術(shù)架構(gòu)中也引入
鍵值數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)等NoSQL
存儲(chǔ)技術(shù)。56重點(diǎn)掌握NoSQL基本概念、CAP定理熟悉NoSQL種類與特點(diǎn)重點(diǎn)掌握四類:圖、文檔、鍵值、列族■
掌握ACID
與BASE
的區(qū)別■
掌握最終一致性經(jīng)典算法思想
Quorum的NWR策略Paxos算法Raft算法向量時(shí)鐘掌握數(shù)據(jù)復(fù)制與分片機(jī)制的作用■
了
解NoSQL
與云計(jì)算、物聯(lián)網(wǎng)、區(qū)塊鏈的關(guān)系1.10本章小結(jié)NoSQL
數(shù)據(jù)庫(kù)技術(shù)BEDING
UNIVERSITYOFPOSTSANDTELECOMMUNICATIONS3
屬性圖模型1
概述62
小結(jié)5
圖數(shù)據(jù)庫(kù)應(yīng)用4
圖數(shù)據(jù)庫(kù)查詢語(yǔ)言2
圖關(guān)鍵數(shù)據(jù)存儲(chǔ)邏輯架構(gòu)目錄592.1圖數(shù)據(jù)庫(kù)概述■
現(xiàn)實(shí)世界中一切事物都處在聯(lián)系之中,如:■
各個(gè)領(lǐng)域人際關(guān)系、組織機(jī)構(gòu)關(guān)系;■
互聯(lián)網(wǎng)中電腦網(wǎng)絡(luò)關(guān)系、網(wǎng)頁(yè)間鏈接關(guān)系等;■
物聯(lián)網(wǎng)中:人與物關(guān)系;物與物的關(guān)系等;■
復(fù)雜關(guān)系圖的抽象無(wú)處不在。節(jié)點(diǎn)及其間關(guān)系隨著時(shí)間不斷動(dòng)態(tài)變化。為了挖掘
實(shí)時(shí)動(dòng)態(tài)大圖復(fù)雜關(guān)系中蘊(yùn)藏著的潛在知識(shí),涌現(xiàn)
出很多著名的圖結(jié)構(gòu)大數(shù)據(jù)計(jì)算框架,如Pregel、Hama
、GraphLab
、Spark
GraphX
、Flink
Gelly等?!?/p>
圖數(shù)據(jù)的高性能管理與計(jì)算離不開(kāi)圖數(shù)據(jù)存儲(chǔ)技術(shù)的協(xié)同助力?!?/p>
但傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)更加注重刻畫(huà)實(shí)體內(nèi)部的屬
性,實(shí)體與實(shí)體之間的關(guān)系往往需要通過(guò)外鍵來(lái)實(shí)
現(xiàn),查詢實(shí)體關(guān)系時(shí)需要多級(jí)Join操作,非常耗時(shí)?!?/p>
為了降低圖數(shù)據(jù)運(yùn)算復(fù)雜性,提升圖數(shù)據(jù)處理的性
能,圖數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。2.1圖數(shù)據(jù)庫(kù)概述2.1圖數(shù)據(jù)庫(kù)概述■圖數(shù)據(jù)庫(kù)是以實(shí)體及其關(guān)系為主要存儲(chǔ)對(duì)象
的數(shù)據(jù)庫(kù)系統(tǒng),存儲(chǔ)圖結(jié)構(gòu)的數(shù)據(jù)具有突出
優(yōu)
勢(shì)
?!鰣D數(shù)據(jù)庫(kù)中核心數(shù)據(jù)要素節(jié)
點(diǎn)
(Vertex)
:
指不同應(yīng)用領(lǐng)域中人、事件、物品、地點(diǎn)、組織等業(yè)務(wù)實(shí)體。如
電信領(lǐng)域中的客戶、用戶、套餐產(chǎn)品、供
貨商、卡號(hào)資源等,影視娛樂(lè)領(lǐng)域中的演
員、導(dǎo)演、電影、劇場(chǎng)等。2.1圖數(shù)據(jù)庫(kù)概述■圖數(shù)據(jù)庫(kù)中核心數(shù)據(jù)要素(續(xù))
邊
(Edge)
:
指節(jié)點(diǎn)之間的關(guān)系?!鲇嗁?gòu)關(guān)系■朋友關(guān)系■道路連通關(guān)系■演員與電影之間的參演關(guān)系■計(jì)算機(jī)與計(jì)算機(jī)之間的網(wǎng)絡(luò)連接關(guān)系■物品與物品之間的構(gòu)成關(guān)系■銀行賬號(hào)之間的轉(zhuǎn)賬關(guān)系
■等
等圖數(shù)據(jù)庫(kù)中核心數(shù)據(jù)要素(續(xù))■屬性
(Property):
指描述節(jié)點(diǎn)或邊特征的信生
的屬性
有
那
些
?2.1圖數(shù)據(jù)庫(kù)概述■圖數(shù)據(jù)庫(kù)中核心數(shù)據(jù)要素僉
(
L
a
bel)
:指節(jié)點(diǎn)
、天系
的類別。如
衣
示
演
貝
的
天
京
節(jié)
點(diǎn)
、
成
龍
節(jié)
點(diǎn)
都
有
衣
示
是
典
貝
的
標(biāo)
僉
;下
點(diǎn)
的
標(biāo)
僉
可
以
有
多
個(gè)
,
如
天
京
、
成
龍
下
點(diǎn)
上人
爾
天
T
表
示不問(wèn)尖
反大系、參演大系寺,有
時(shí)
為
了
區(qū)
分
用
標(biāo)
簽
專
門(mén)
指
節(jié)
點(diǎn)
標(biāo)
簽
,
天
系
的別
且
接
稱
為
天
系
尖
空
,2.1圖數(shù)據(jù)庫(kù)概述2.1圖數(shù)據(jù)庫(kù)概述■圖靈獎(jiǎng)獲得者Charles
Bachman—
網(wǎng)狀數(shù)據(jù)庫(kù)之父早在1970年就提
出網(wǎng)狀數(shù)據(jù)庫(kù),模型表達(dá)能力很
強(qiáng),但結(jié)構(gòu)復(fù)雜、查詢語(yǔ)言不易
掌握和使用,數(shù)據(jù)操作也較為復(fù)
雜,并未普及開(kāi)來(lái)?!?/p>
大數(shù)據(jù)時(shí)代圖無(wú)處不在,圖數(shù)據(jù)
庫(kù)技術(shù)如雨后春筍般高速發(fā)展,
用以支持圖數(shù)據(jù)的事務(wù)型處理和
分析型處理。網(wǎng)狀數(shù)據(jù)庫(kù)之父、
圖靈獎(jiǎng)獲得者—
Charles
Bachman□
include
secondary
databasemodels34systems
in
ranking,November
2019RankNov
(
Oct
Nov
201920192018DBMSDatabase
ModelScoreNov
2019Oct
Nov
201920181.
1.1.Neo4j+Graph50.53+1.07+7.412.
2.2.MicrosoftAzureCosmosDB+Multi-model31.98+0.65+9.943.
3.3.OrientDBMulti-model
L5.38
+0.25-0.414.
4.4.ArangoDB+Multi-model
i5.02
+0.14
+0.875.
5.5.Virtuoso+Multi-model2.63
-0.09+0.266.
6.6.JanusGraphGraph1.80
+0.15+0.687.7.個(gè)8
.Amazon
NeptuneMulti-model1.60
+0.23
+0.558.
8.個(gè)9.GraphDB+Multi-model
C1.13
+0.02
+0.459.
9.個(gè)12.Dgraph
+Graph1.04
-0.03+0.5310.個(gè)11.個(gè)1
4.TigerGraph
+Graph1.01
+0.07
+0.60■DB-Engines
Ranking發(fā)布的2019年11月圖數(shù)據(jù)庫(kù)(Graph
DBMS)排
名https://db-engines.com/en/ranking/graph+dbms2.1圖數(shù)據(jù)庫(kù)概述■
圖數(shù)據(jù)庫(kù)按照底層采用的存儲(chǔ)技術(shù)分為兩類?!鲈鷪D存儲(chǔ)類■采用非關(guān)系模型,并針對(duì)圖數(shù)據(jù)專門(mén)進(jìn)行了性能優(yōu)化■一般采用免索引鄰接的方式進(jìn)行圖數(shù)據(jù)存儲(chǔ),數(shù)據(jù)存儲(chǔ)
機(jī)制可快速尋址定位到相關(guān)連的節(jié)點(diǎn)、關(guān)系,此種存儲(chǔ)
方式性能大大提高,可以很好地支持原生圖處理引擎進(jìn)
行圖數(shù)據(jù)計(jì)算,秒級(jí)
可遍歷百萬(wàn)級(jí)節(jié)點(diǎn)。此類數(shù)據(jù)庫(kù)典
型代表為Neo4j、TigerGraph等。■
非原生圖存儲(chǔ)類■指底層采用鍵值數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)、列族數(shù)據(jù)庫(kù)或者其他類型通用數(shù)據(jù)庫(kù)存儲(chǔ)圖數(shù)據(jù)。■通常需要建立全局索引來(lái)提高圖數(shù)據(jù)的訪問(wèn)性能。2.1圖數(shù)據(jù)庫(kù)概述2.1圖數(shù)據(jù)庫(kù)概述■圖數(shù)據(jù)庫(kù)面臨的挑戰(zhàn)主要是大規(guī)模圖數(shù)據(jù)的高效存儲(chǔ)與復(fù)雜的圖操作技術(shù)?!霾煌瑘D數(shù)據(jù)庫(kù)實(shí)現(xiàn)技術(shù)與使用方法會(huì)有所差異,圖數(shù)據(jù)庫(kù)包含的共性關(guān)鍵技術(shù)主要包含如下方面■點(diǎn)、邊、屬性等基礎(chǔ)數(shù)據(jù)的CRUD
操作■元數(shù)據(jù)管理、索引管理■事務(wù)管理■查詢語(yǔ)言■節(jié)點(diǎn)ID
生成策略■大規(guī)模數(shù)據(jù)批量操作■基于路徑的圖遍歷操作■
監(jiān)控管理、備份與恢復(fù)操作等目前排名第一的Neo4j數(shù)據(jù)庫(kù)是用Java實(shí)現(xiàn)的開(kāi)源圖數(shù)據(jù)庫(kù)。曰
2
0
5
年
始
及
,
且
到
Z
0
0
7
年
止
式
及巾1
,
開(kāi)B
丁
i
D
上
。力品區(qū)版和正業(yè)放,社區(qū)版八又持平機(jī)卟者,能
限。正
業(yè)又付土從及制以與刀溝,巴百丁官理
一共寸文十田、獨(dú)人的
能。床柱土女人INCU4J例刀治日奴佰件個(gè)H大天H以o2.1圖數(shù)據(jù)庫(kù)概述2.2圖關(guān)鍵數(shù)據(jù)存儲(chǔ)邏輯架構(gòu)■從數(shù)據(jù)存儲(chǔ)角度來(lái)講,不同類型的圖數(shù)據(jù)庫(kù)底層的圖數(shù)據(jù)
存儲(chǔ)模型會(huì)有所差異。本節(jié)主要以Neo4j為例來(lái)介紹圖數(shù)據(jù)
庫(kù)的底層存儲(chǔ)模型總體設(shè)計(jì)思路maptorecords
data
inPathsmapto
Relationships
recordsdatainordermapfrom
organizehave
NodeshavePropertiesGraphDatabase
Traversalmanages
manages
navigates
identifiesexpressesIndexesGraphAlgorithm2.2圖關(guān)鍵數(shù)據(jù)存儲(chǔ)邏輯架構(gòu)■節(jié)點(diǎn)之間的關(guān)系通常包含一個(gè)起始節(jié)點(diǎn)、
一個(gè)終止節(jié)點(diǎn)、
關(guān)系類型及0個(gè)或多個(gè)屬性?!鲫P(guān)系類型用名稱作為唯一標(biāo)識(shí)?!雒總€(gè)關(guān)系有且只有一個(gè)關(guān)系類型?!鐾ㄟ^(guò)關(guān)系可以找到很多關(guān)聯(lián)的數(shù)據(jù),比如節(jié)點(diǎn)集合、相同
類型的關(guān)系集合以及它們的屬性集合。A
Relationshiphas
a
has
a
hasacan
haveStart
node
End
node
Relationshiptype
Propertiesuniquelyidentified
byName字符串類型數(shù)據(jù)?!?/p>
屬性值可以是字符型、字
符串型、整數(shù)類型、實(shí)數(shù)
類型等基礎(chǔ)數(shù)據(jù)類型的值
,也可以是元素為基礎(chǔ)數(shù)
據(jù)類型的數(shù)組。但每個(gè)節(jié)點(diǎn)和關(guān)系的屬性
模式又是自由的、不固定
的,每個(gè)節(jié)點(diǎn)或關(guān)系都可
以定義自己特有的描述屬
性;
73A
Propertyhasa
has
aValue
Key(can
be
an
array
ofcanbeais
abooleanbyteshortintPrimitive
longfloatdoublecharString2.2圖關(guān)鍵數(shù)據(jù)存儲(chǔ)邏輯架構(gòu)Neo4j屬性是由Key-Value鍵值對(duì)組成的,鍵名稱
為2.2
圖關(guān)鍵數(shù)據(jù)存儲(chǔ)邏輯架構(gòu)Neo4j
數(shù)據(jù)模型中標(biāo)簽是類別的概念,不同的節(jié)點(diǎn)與關(guān)系可
以具有相同的節(jié)點(diǎn)標(biāo)簽與關(guān)系類型標(biāo)簽■
標(biāo)簽概念可以理解為關(guān)系數(shù)據(jù)庫(kù)中表的概念,通過(guò)標(biāo)簽可以
找到同類型的節(jié)點(diǎn)或關(guān)系。標(biāo)簽示例如圖所示一個(gè)節(jié)點(diǎn)可以具有零個(gè)或多個(gè)類別標(biāo)簽;而一個(gè)關(guān)系必須有
且只有一個(gè)關(guān)系類型。previous
relationshipfor
start
nodeend
nodePerson
Node
1)
LIKESNode
2name:"Alice"name:"Bob"|startrelationship
fornodeendnodePersonage:25next742.2
圖關(guān)鍵數(shù)據(jù)存儲(chǔ)邏輯架構(gòu)Neo
4j每條路徑由一個(gè)起始節(jié)點(diǎn)、一個(gè)終止節(jié)點(diǎn)、從起始節(jié)點(diǎn)到終止節(jié)點(diǎn)經(jīng)過(guò)的1條或多條邊及關(guān)聯(lián)
節(jié)點(diǎn)構(gòu)成。圖中任意兩個(gè)節(jié)點(diǎn)間如果是可達(dá)的,則
兩節(jié)點(diǎn)間存在一條或多條路徑。A
Pathhas
acan
contain
one
or
morehasanStart
Node
RelationshipEndNodeaccompanied
by
aNode752.2圖關(guān)鍵數(shù)據(jù)存儲(chǔ)邏輯架構(gòu)路徑的長(zhǎng)度指路徑中包含邊的數(shù)量,如圖所示,
節(jié)點(diǎn)1到節(jié)點(diǎn)2的路徑長(zhǎng)度為1,節(jié)點(diǎn)1到節(jié)點(diǎn)7的路
徑長(zhǎng)度為2。
節(jié)點(diǎn)1節(jié)點(diǎn)2
節(jié)點(diǎn)3
節(jié)點(diǎn)4節(jié)點(diǎn)5節(jié)點(diǎn)6
節(jié)點(diǎn)7節(jié)點(diǎn)8遍歷一張圖就是按照一定的查詢規(guī)則,跟隨關(guān)系,
訪問(wèn)關(guān)聯(lián)的節(jié)點(diǎn)集合。大多數(shù)情況下只是部分和圖
數(shù)據(jù)操作相關(guān)的子圖內(nèi)容被訪問(wèn)到?!鯪eo4j提供了遍歷的API,可以指定遍歷規(guī)則,如按
照廣度優(yōu)先還是深度優(yōu)先遍歷圖數(shù)據(jù)2.2
圖關(guān)鍵數(shù)據(jù)存儲(chǔ)邏輯架構(gòu)對(duì)于能夠抽象成節(jié)點(diǎn)及其關(guān)系的典型圖結(jié)構(gòu)數(shù)據(jù)而言
,利用圖數(shù)據(jù)模型采用圖數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)的性能優(yōu)勢(shì)
突
出
。■
關(guān)系是最重要的元素,通過(guò)關(guān)系將節(jié)點(diǎn)相互關(guān)聯(lián)起來(lái)
,Neo4j
有一個(gè)重要的特點(diǎn)是將關(guān)系預(yù)先保存到關(guān)系
列表中的免索引鄰接機(jī)制,來(lái)保證關(guān)系查詢的性能。
Neo4j數(shù)據(jù)庫(kù)中的每個(gè)節(jié)點(diǎn)都會(huì)維護(hù)與它相鄰節(jié)點(diǎn)的
引用。因此每個(gè)節(jié)點(diǎn)都相當(dāng)于與它相鄰節(jié)點(diǎn)的微索引
,查詢時(shí)間與圖的整體規(guī)模無(wú)關(guān),只與它附近節(jié)點(diǎn)的
數(shù)量成正比,這比使用全局索引的代價(jià)小很多。77■
圖數(shù)據(jù)庫(kù)作為NoSQL
中重要的一類,靈活的圖數(shù)據(jù)
存儲(chǔ)模型是其突出的特點(diǎn),不強(qiáng)調(diào)必須先設(shè)計(jì)完備
的圖數(shù)據(jù)存儲(chǔ)模型再存儲(chǔ)數(shù)據(jù)。但從基于圖數(shù)據(jù)庫(kù)進(jìn)行應(yīng)用系統(tǒng)架構(gòu)設(shè)計(jì)角度,仍
需要借助一定的建模方法,對(duì)業(yè)務(wù)需求進(jìn)行分析,
從業(yè)務(wù)管理功能、業(yè)務(wù)流程中梳理出圖結(jié)構(gòu)業(yè)務(wù)數(shù)
據(jù)并采用一定的形式化方法進(jìn)行建模表述。■
用簡(jiǎn)單、清晰的描述方法使得業(yè)務(wù)人員與技術(shù)人員對(duì)圖數(shù)據(jù)存儲(chǔ)模型達(dá)成共識(shí),從而降低項(xiàng)目實(shí)施風(fēng)險(xiǎn)
。■
模型可以根據(jù)業(yè)務(wù)需求隨時(shí)改變。2.3屬性圖模型78對(duì)比角度關(guān)系數(shù)據(jù)模型圖數(shù)據(jù)模型數(shù)據(jù)結(jié)構(gòu)關(guān)系模型:表、字段、主鍵、外鍵、關(guān)聯(lián)屬性圖模型:節(jié)點(diǎn)、邊、屬性、標(biāo)簽數(shù)據(jù)操作關(guān)系代數(shù):并、交、差、
笛卡爾積、選擇、投影、連
接等圖代數(shù):可達(dá)性查詢;
最短路徑查詢;圖節(jié)點(diǎn)、
邊、關(guān)系的增、刪、改、
查、排序等數(shù)據(jù)的完
整性約束條件實(shí)體完整性、參照完整性、用戶自定義完整性條件約束:唯一性約束,如標(biāo)簽為Person的電話號(hào)碼屬性不能重復(fù)等2.3屬性圖模型■圖數(shù)據(jù)模型與關(guān)系數(shù)據(jù)模型差別較大,對(duì)比如表所示792.3屬性圖模型■
Neo4j中
的NorthWind數(shù)據(jù)集實(shí)體關(guān)系模型Order
Details7
OrderID
ProductID
UnitPriceQuantityDiscountOrders
訂單置OrderIDCustomerIDEmployeeIDOrderDateRequiredDateShippedDateShipViaFreightShipNameShipAddressShipCityShipRegionShipPostalCodeShipCountryShippers
ShipperIDCompanyNamePhoneCategories
CategoryIDCategoryNameDescriptionPicture客戶CustomersCustomerIDCompanyNameContactNameContactTiteAddressCityRegionPostalCodeCountryPhoneFaxCustomerCustomerDemo
CustomerID
CustomerTypeIDCustomerDemographicsCustomerTypeIDCustomerDesc產(chǎn)品
Products
ProductID
ProductNameSupplierIDCategoryIDQuantityPerUnitUnitPriceUnitsInStock
UnitsOnOrder
ReorderLevel
DiscontinuedEmployees
EmployeeID
LastNameFirstNameTiteTiteOfCourtesyBirthDateHireDateAddressCityRegionPostalCode
CountryHomePhone
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東臨沂市費(fèi)縣2025-2026學(xué)年度下學(xué)期教學(xué)質(zhì)量監(jiān)測(cè)卷六年級(jí)語(yǔ)文(文字版含答案)
- 青海西寧市2025-2026學(xué)年六年級(jí)下學(xué)期期末語(yǔ)文試卷(文字版含答案)
- 2026年應(yīng)急公共基礎(chǔ)知識(shí)事業(yè)單位招聘考試筆試試題(含答案)
- 2026年煙草品牌策劃崗煙草公司招聘考試筆試試題(含答案)
- 高一物理教師工作總結(jié)的
- 2026 年腦梗死合并吞咽障礙護(hù)理個(gè)案分享
- 匠心筑夢(mèng) 強(qiáng)國(guó)有我-2026年秋季大學(xué)開(kāi)學(xué)第一課
- 雨季相鄰滴水責(zé)任劃分合同范本全文
- 2026年秋季初中歷史開(kāi)學(xué)第一課 學(xué)科興趣激發(fā)
- 2026年秋季車輛工程專業(yè)開(kāi)學(xué)第一課 校友經(jīng)驗(yàn)與職業(yè)啟示講座方案
- 公立醫(yī)院行政管理崗招聘考試核心考點(diǎn)筆記:醫(yī)院管理學(xué)基礎(chǔ)
- 2026年高考真題-化學(xué)(上海卷) 含解析
- 2026年5年級(jí)詩(shī)詞賽題庫(kù)及答案
- 安徽省信用融資擔(dān)保集團(tuán)有限公司招聘筆試題庫(kù)2026
- 六安市舒城縣2025-2026學(xué)年第二學(xué)期五年級(jí)語(yǔ)文期末考試卷(部編版含答案)
- 多軸聯(lián)動(dòng)數(shù)控纏繞機(jī)床 第1部分 精度檢驗(yàn)(征求意見(jiàn)稿)
- 中外藝術(shù)歌曲關(guān)于“春天”的作品分析和演唱技巧研究-以《春你幾時(shí)歸》和《暮春》為例
- 2026年農(nóng)藥經(jīng)營(yíng)許可證56學(xué)時(shí)培訓(xùn)模擬題
- 機(jī)電設(shè)備安裝驗(yàn)收?qǐng)?bào)告
- 醫(yī)院中央空調(diào)檔案制度
- GB/T 20641-2025低壓成套開(kāi)關(guān)設(shè)備和控制設(shè)備空殼體的一般要求
評(píng)論
0/150
提交評(píng)論