




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
GoogleBigtable中文版目錄TOC\o"1-3"\h\u261971 1175822 127988 212833 2130563.1 330973.2 3207523.3 4258814 4177045BigTable 5168106 7252186.1 7142226.2 8249946.3 10143226.4 1117377 11303637.1 11238287.2 12263837.3 12131498 15267278.1 16126348.2 17154849 17201179.1 1834529.2Google 185529.3 19747010 203108411 212136712 22GoogleGoogleBigtable1.0GoogleBigtable務(wù)器上的PB級的數(shù)據(jù)。Google的很多項(xiàng)目使用Bigtable存儲數(shù)據(jù),包括Web索引、GoogleEarth、GoogleFinance。這些應(yīng)用對Bigtable提出的要求差異非常大,無論是在數(shù)據(jù)量上(URL到網(wǎng)頁到衛(wèi)星圖像)還是在響應(yīng)速度上(從后本論文描述了Bigtable我們還將描述Bigtable的設(shè)計(jì)和實(shí)現(xiàn)。Google,我們Bigtable。Bigtable的設(shè)計(jì)目的是可靠的處理PB級別的數(shù)據(jù),并且能夠部署到上千臺機(jī)器上。BigtableBigtable60個(gè)GoogleGoogleAnalytics、GoogleFinance、Orkut、PersonalizedSearch、WritelyGoogleEarth。這些產(chǎn)品對Bigtable提出了迥異的需求,有的需要高吞Bigtable集群的配置也有很大的差異,有的集群只有幾臺服務(wù)器,而有的則需要上千臺服務(wù)器、存儲幾百TB的數(shù)據(jù)。在很多方面,Bigtable和數(shù)據(jù)庫很類似:它使用了很多數(shù)據(jù)庫的實(shí)現(xiàn)策略。并行數(shù)據(jù)庫【14】和內(nèi)存數(shù)據(jù)庫【13】已經(jīng)具備可擴(kuò)展性和高性能,但是Bigtable提供了一個(gè)和這些系統(tǒng)完全不同的接口。Bigtable不支3節(jié)描述關(guān)于數(shù)據(jù)模型更多細(xì)節(jié)方面的東西;4節(jié)概要介紹了客戶端API;5節(jié)簡要介紹了BigTable底層使用的Google的基礎(chǔ)框架;6節(jié)描述了BigTable實(shí)現(xiàn)的關(guān)鍵部分;7BigTable的性能采用的一些精細(xì)的調(diào)優(yōu)方法;8節(jié)提供了BigTable的性能數(shù)據(jù);9節(jié)講述了幾個(gè)Google內(nèi)部使用BigTable以及時(shí)間戳;Mapvalue都是一個(gè)未經(jīng)解析的Bigtable的系統(tǒng)的種種潛在用途之后,決定使用這個(gè)數(shù)據(jù)模型。我們先舉個(gè)WebtableWebtableURL作為行關(guān)鍵1WebURL。contents列族存放的是網(wǎng)頁的內(nèi)容,anchor列族存放引用該網(wǎng)頁的錨鏈接文本7。CNN的主頁被SportsIllustrator和MY-look的主頁引用,因此該行包含了名為“anchor:”和t6標(biāo)識。表中的行關(guān)鍵字可以是任意的字符串(64KB的字符串,但是對大多數(shù)用戶,10-100個(gè)字BgabeabeabetebabeURLap.goge.condex.hlo.googe.apndex.hl訪問控制、磁盤和內(nèi)存的使用統(tǒng)計(jì)都是在列族層面進(jìn)行的。在我們的Webtable的例子中,上述的控制權(quán)Bigtable中,表的每一個(gè)數(shù)據(jù)項(xiàng)都可以包含同一份數(shù)據(jù)的不同版本;不同版本的數(shù)據(jù)通過時(shí)間戳來索n個(gè)版本的數(shù)據(jù),或者只保存“足夠新”的版本的數(shù)據(jù)(7天的內(nèi)容寫入的數(shù)據(jù)。Webtable的舉例里,contents:列存儲的時(shí)間戳信息是網(wǎng)絡(luò)爬蟲抓取一個(gè)頁面的時(shí)間。上面提及的垃圾BigtableAPI函數(shù)。Bigtable////OpentheTable*T=//WriteanewanchoranddeleteanoldanchorRowMutationr1(T,“n.www”);r1.Set(“anchor:\h”,“CNN”);\hOperationApply(&op,2WritingtoBigtableBigtable中的值、從每個(gè)行中查找值、或者遍\hScannerScannerScanStreamstream=scanner.FetchColumnFamily(“anchor”);for(;!stream->Done();stream->Next()){printf(“%s%s%lld%s\n”,3Readingfrom3中的C++代碼使用Scanner抽象對象遍歷一個(gè)行內(nèi)的所有錨點(diǎn)。客戶程序可以遍歷多個(gè)列族,有幾正則表達(dá)式*.10天的錨點(diǎn)。Bigtable還支持一些其它的特性,利用這些特性,用戶可以對數(shù)據(jù)進(jìn)行更復(fù)雜的處理。首先,Bigtable支雖然Bigtable提供了一個(gè)允許用戶跨行批量寫入數(shù)據(jù)的接口,但是,Bigtable目前還不支持通用的跨行事務(wù)處理。其次,Bigtable允許把數(shù)據(jù)項(xiàng)用做整數(shù)計(jì)數(shù)器。最后,Bigtable允許用戶在服務(wù)器的地址空間內(nèi)執(zhí)行腳本GoogleSawzall【28SawzallAPIBigtable,但是它允許多種形式的數(shù)據(jù)轉(zhuǎn)換、基于任意表達(dá)式的數(shù)據(jù)BigtableMapReduce【12】一起使用,MapReduceGoogle開發(fā)的大規(guī)模并行計(jì)算框架。我們已WrapperWrapper類,BigtableMapReduce框架的輸入和輸出。BigTable各樣的分布式應(yīng)用程序,BigTable的進(jìn)程經(jīng)常要和其它應(yīng)用的進(jìn)程共享機(jī)器。BigTable依賴集群管理系統(tǒng)來MapMap是一個(gè)key-value映射的數(shù)據(jù)結(jié)構(gòu),keyvalueByteSSTablekeyvaluekeykey-value對。從內(nèi)SSTable都放在內(nèi)存中,這樣就不必訪問硬盤了。BigTableChubby【8Chubby服務(wù)包括5Master,并且處理請求。只有在大多數(shù)副本都是正常運(yùn)行的,并【9,23】來保證副本的一致性。Chubby提供了一個(gè)名字空間,里面包括了目錄和小文件。每個(gè)目錄或者文件可以當(dāng)成一個(gè)鎖,讀寫文件的操作都是原子的。ChubbyChubby文件的一致性緩存。每個(gè)ChubbyChubby服務(wù)的會話。如果客戶程序不能在租約到期的時(shí)間內(nèi)重新簽訂會話的租約,這個(gè)會話就過期失效了9。當(dāng)一個(gè)會話失效時(shí),它擁有的鎖和打開的文件句柄都失效了。Chubby客戶存儲BigTable數(shù)據(jù)的自引導(dǎo)指令的位置(5.1節(jié)查找TabletTablet服務(wù)器失效時(shí)進(jìn)行善后(5.2節(jié)存儲BigTable的模式信息(每張表的列族信息Bigable0.0326%10。BigtableMasterTablet服務(wù)器。針對系統(tǒng)工作負(fù)載的變化情況,BigTable可以動(dòng)態(tài)的向集群中添加(或者刪除)Tablet服務(wù)器。MasterTabletTabletsTable服務(wù)器、對TabletGFS上的文件進(jìn)行垃圾收集。除此之外,它還處理對模TabletSingle-Master類型的分布式存儲系統(tǒng)【17.21Master服務(wù)器:TabletBigTableMaster服務(wù)器來獲取TabletMaster服務(wù)器通信。在實(shí)際應(yīng)用中,Master服缺省情況下,每個(gè)Tablet100MB200MB。我們使用一個(gè)三層的、類似B+樹[10]的結(jié)構(gòu)存儲Tablet的位置信息(4)第一層是一個(gè)存儲在Chubby中的文件,它包含了RootTablet的位置信息。RootTablet包含了一個(gè)特殊RootTablet實(shí)際上是METADATA表的第一個(gè)TabletRootTablet永遠(yuǎn)不會被分割—這就保證了Tablet的位置信息存儲結(jié)構(gòu)不會超過三層。2^34個(gè)Tablet的地址(Tablet128MB2^61字節(jié)數(shù)據(jù)。TabletTablet的地址信息,或者發(fā)現(xiàn)Tablet位置信息;如果客戶端緩存是數(shù)據(jù)的時(shí)候才能發(fā)現(xiàn)數(shù)據(jù)過期11TabletGFS文件Tablet的元數(shù)據(jù)的時(shí)候,它都會多讀取幾個(gè)Tablet的元數(shù)據(jù)。為該Tablet提供服務(wù)。這些信息有助于排查錯(cuò)誤和性能分析。Tablet只能分配給一個(gè)TabletMaster服務(wù)器記錄了當(dāng)前有哪些活躍的Tablet一個(gè)裝載請求,把Tablet分配給這個(gè)服務(wù)器。BigTable使用ChubbyTabletTablet服務(wù)器啟動(dòng)時(shí),它在Chubby的一個(gè)Master(服務(wù)器目錄MasterTablet服務(wù)器加入了。如果Tablet服務(wù)器丟失了Chubby上的獨(dú)占鎖—比如由于網(wǎng)絡(luò)斷開導(dǎo)致Tablet服務(wù)器和Chubby的會話丟失—它就停止對Tablet(Chubby提供了一種高效的機(jī)制,利用這種機(jī)制,Tablet服務(wù)器能夠在不增加網(wǎng)絡(luò)負(fù)擔(dān)的情況下知道它是否還持有鎖。只要文件還存在,Tablet服務(wù)器就會試圖重新獲得對該文件的獨(dú)占鎖;如果文件不存在了,那么Tablet分配到其它的Tablet服務(wù)器。MasterTabletTablet提供服務(wù)了,并且要盡快重新分配Tablet。MasterTabletTabletTabletTabletMaster服務(wù)器最近幾次嘗試和它通信都沒有得到響應(yīng),MasterTabletMaster服務(wù)器成功獲取了獨(dú)占鎖,ChubbyTabletChubbyMaster服務(wù)器就刪除該TabletChubbyTabletTablet服務(wù)器Chubby上的服務(wù)器文件被刪除了,MasterTabletTabletBigtableMasterChubby之間網(wǎng)絡(luò)出現(xiàn)故障的時(shí)候仍然可以使用,Master服務(wù)器在它的Chubby會話過期后主動(dòng)退出。但是不管怎樣,如同我們前面所描述的,Master服務(wù)器的故障不Tablet在Tablet服務(wù)器上的分配狀態(tài)。Master服務(wù)器之后,Master服務(wù)器首先要了解當(dāng)前Tablet的分配狀態(tài),之后才能夠修改分配狀態(tài)。Master服務(wù)器在啟動(dòng)的時(shí)候執(zhí)行以下步驟:Master服務(wù)器從ChubbyMasterMasterMasterTabletTabletTablet的分配信未分配的Tablet集合等待合適的時(shí)機(jī)分配。4Tablet加入到未分配的Tablet集合。這個(gè)附加操作確保了RootTablet會被分配。由于RootTablet包括了所有Tablet的名字了。保存現(xiàn)有Tablet的集合只有在以下事件發(fā)生時(shí)才會改變:建立了一個(gè)新表或者刪除了一個(gè)舊表、兩個(gè)Tablet被合并了、或者一個(gè)Tablet被分割成兩個(gè)小的Tablet。Master服務(wù)器可以跟蹤記錄所有這些事件,因?yàn)镸asterTablet并不完整,因此,Tablet服務(wù)器會重新向Master服務(wù)器發(fā)送通知信息。5所示,TabletGFSREDO日志中14。在這些更新操作中,最近提交的那些存放在一個(gè)排序的緩存中,我們稱這個(gè)緩存為memtable;較早的更新存放在一系列含了組成這個(gè)Tablet的SSTable的列表,以及一系列的RedoPoint15,這些RedoPoint指向可能含有該Tabletmemtable。當(dāng)對Tablet服務(wù)器進(jìn)行寫操作時(shí),Tablet驗(yàn)證(Chubby客戶緩存里。成功的修改操作會記錄在提交日志里。可以采用批memtable里面。當(dāng)對Tablet服務(wù)器進(jìn)行讀操作時(shí),TabletmemtableCompaction過程有兩個(gè)目的:shrink19Tablet服務(wù)器使用的內(nèi)存,以及在服務(wù)器災(zāi)難恢復(fù)過程中,減少必須從提交日志里讀取的數(shù)據(jù)量。在Compaction過程中,正在進(jìn)行的讀寫操作仍能繼續(xù)。MinorCompaction都會創(chuàng)建一個(gè)新的SSTableMinorCompaction過程不停滯的持續(xù)進(jìn)行下SSTableMergingCompaction過程合并文件,限制這類文件的數(shù)量。MergingCompaction過程讀取一些SSTablememtable的內(nèi)容,合并成SSTable。只要MergingCompactionSSTablememtable就可以刪除了。SSTableSSTableMergingCompactionMajorCompaction。由非循環(huán)掃描它所有的TabletMajorCompaction。MajorCompactionBigtable回收BigTable能及時(shí)清除已經(jīng)刪除的數(shù)據(jù)21,這對存放敏感數(shù)據(jù)的服務(wù)是BigtableBigtable到達(dá)用戶要求的高性能、Bigtable實(shí)現(xiàn)的其它部分,為了更好的強(qiáng)調(diào)這些優(yōu)化工作,我們將深入細(xì)客戶程序可以將多個(gè)列族組合成一個(gè)局部性群族。對TabletSSTableWebtable表中,網(wǎng)頁的元數(shù)據(jù)(Checksum)可以在一個(gè)局部性群組中,網(wǎng)頁的內(nèi)容可以在另外一個(gè)群組:特別有用:在BigtableMETADATA表中具有位置相關(guān)性的列族的訪問速度。SSTable是否需要壓縮;如果需要壓縮,那么以什么格式來壓縮。SSTable的塊(塊的大小由局部性群組的優(yōu)化參數(shù)指定)都使用用戶指定的壓縮格式來壓縮。雖然分塊壓縮浪費(fèi)了少量空間22,但是,我們在只讀取SSTable的一小部分?jǐn)?shù)據(jù)的時(shí)候就不必解壓整個(gè)文件了。很多客戶程序使用了“兩遍”的、可定制的壓縮方式。第一遍采用BentleyandMcIlroy’s方式[6],這種方式在一個(gè)16KB的小掃描窗口中尋找重復(fù)數(shù)據(jù)。兩個(gè)壓縮的算法都很快,在現(xiàn)在的機(jī)器上,壓縮的速率達(dá)到100-200MB/s,解壓的速率達(dá)400-1000MB/s。壓縮率上的表現(xiàn)也是令人驚嘆。比如,在Webtable的例子里,我們使用這種壓縮方式來存儲網(wǎng)頁內(nèi)容。在一存放方式:從同一個(gè)主機(jī)獲取的頁面都存在臨近的地方。利用這個(gè)特性,Bentley-McIlroy算法可以從來自同Webtable,其它的很多應(yīng)用程序也通過選擇合適的行名來Bigtable中存儲同一份數(shù)據(jù)的多個(gè)版本的時(shí)候,為了提高讀操作的性能,TabletSSTableKey-Value對;BlockGFSSSTableBloom過濾器6.3節(jié)所述,一個(gè)讀操作必須讀取構(gòu)成TabletSSTableSSTable不在內(nèi)存SSTableBloom7BloomSSTable是否包含了特定行和列的數(shù)據(jù)。對于Bloom過濾器的內(nèi)存的代價(jià),就換來了讀操作顯著減少Bloom過濾器也隱式的達(dá)到了當(dāng)應(yīng)用程序訪問不存在的行或列時(shí),大多數(shù)時(shí)候我們Commit如果我們把對每個(gè)Tablet的操作的Commit日志文件時(shí)24Seek操作。另外,由于批量提交25中操作的數(shù)目一般比較少,因此,對每個(gè)TabletTabletCommit日志文件,把修改操作的日志以追加方式寫入同一個(gè)日志文件,因此Tablet修改的日志記錄。Tablet服務(wù)器宕機(jī)時(shí),Tablet修改操作的日志記錄都混合在同一個(gè)日志文件中的。一種方法TabletCommitTablet的相關(guān)修改操作。使100次(每個(gè)服務(wù)器讀取一次。64MBTablet服務(wù)器對段日志文件恢復(fù)Tablet時(shí)開始執(zhí)行。在向GSCot(GSGSSbtabet服務(wù)abetMaster服務(wù)器將一個(gè)Tablet從一個(gè)Tablet服務(wù)器移到另外一個(gè)Tablet服務(wù)器時(shí),源Tablet服務(wù)器會對這個(gè)Tablet做一次MinorCompactionCompaction操作減少了Tablet服務(wù)器的日志文件中沒有歸并的記MinorCompaction完成以后,TabletTablet服務(wù)器上了,并且不SSTable讀取數(shù)據(jù)的時(shí)候,我們不必對文件系統(tǒng)訪問操作進(jìn)行同步。這樣一來,就可以非常高效的實(shí)現(xiàn)對行的并行操作。memtable是唯一一個(gè)能被讀和寫操作同時(shí)訪問的可變數(shù)據(jù)結(jié)SSTable是不變的,因此,我們可以把永久刪除被標(biāo)記為“刪除”的數(shù)據(jù)的問題,轉(zhuǎn)換成對廢棄的記-SSTableSSTable【25METADATARootSSTableSSTable集合,而是共享原來的Tablet的SSTableTablet1GB17862IDE)2GZOpteron處理器,配置了足以容納所有進(jìn)程工作數(shù)據(jù)集的物理內(nèi)存,以及一張Gigabit的以太網(wǎng)卡。這些機(jī)器都連入一個(gè)兩層的、樹狀的交換網(wǎng)絡(luò)里,在1ms。Tablet服務(wù)器、MasterGFS服務(wù)器都運(yùn)行在同一組機(jī)器上。每臺機(jī)器都運(yùn)行一個(gè)GFSTablet服務(wù)器、要么運(yùn)行客戶程序、要么運(yùn)行在測試過程中,使用這組Tablet服務(wù)器讀/1GB左右。0R-110N個(gè)大小相同Hash,HashR取模的方式,這樣就保證了在整個(gè)基準(zhǔn)測BigTablevalue值的API。減少RPC調(diào)用的次數(shù)。memory因此,讀操作直接從Tablet服務(wù)器的內(nèi)存中讀取數(shù)據(jù),不需要從GFS讀取數(shù)據(jù)。針對這個(gè)測試,我們把每臺TabletTabletTablet服務(wù)器的性能。隨機(jī)讀的性能比其它操作慢一個(gè)數(shù)量級或以上27讀操作都要通過網(wǎng)絡(luò)從GFS64KB的SSTableTablet1000byte的一減小Block8KB。取數(shù)據(jù),不需要從GFS64KB的Block。Tablet服務(wù)器直接把寫入操作的內(nèi)容追加到一個(gè)CommitGFS來提高性能。隨機(jī)Tablet服務(wù)器的Commit日志文件中。64次讀操作直接從緩存讀取數(shù)據(jù)。Tablet1500臺,系統(tǒng)的整體吞吐量有了夢幻般的增長,增長的100。比如,隨著Tablet500300倍。之所以會有這樣的性能提升,主要是因?yàn)檫@個(gè)基準(zhǔn)測試的瓶頸是單臺Tablet服務(wù)器的CPU。Tablet1臺Tablet的移動(dòng)導(dǎo)致重新負(fù)載均衡能力受限(Tablet1秒內(nèi)—這個(gè)Tablet是不可用的Tablet服務(wù)器數(shù)量增加的提升幅度最?。ㄕw吞吐量100500倍1000-byte64KB大的Block1GB的鏈路,結(jié)果導(dǎo)致隨著我們Google組,我們看到整體的吞吐量超過了每秒1200000次請求,發(fā)送到系統(tǒng)的RPC請求導(dǎo)致的網(wǎng)絡(luò)負(fù)載達(dá)到了741MB/s,系統(tǒng)發(fā)出的RPC16GB/s。2提供了一些目前正在使用的表的相關(guān)數(shù)據(jù)。一些表存儲的是用戶相關(guān)的數(shù)據(jù),另外一些存儲的則是的復(fù)雜程度上都有很大的差別。本節(jié)的其余部分,我們將主要描述三個(gè)產(chǎn)品研發(fā)團(tuán)隊(duì)如何使用Bigtable的。Web這個(gè)Javascript程序在頁面被訪問的時(shí)候調(diào)用。它記錄了各種GoogleAnalytics需要使用的信息,比如用戶的標(biāo)識、獲取的網(wǎng)頁的相關(guān)信息。GoogleAnalytics匯總這些數(shù)據(jù),之后提供給Web站點(diǎn)的管理員。我們粗略的描述一下GoogleAnalytics使用的兩個(gè)表。RowClick表(200TB數(shù)據(jù))的每一行存放對同一個(gè)Web14%。Summary表(20TB的數(shù)據(jù))包含了關(guān)于每個(gè)Web站點(diǎn)的、各種類型的預(yù)定義匯總信息。一個(gè)周MapReduceRawClickSummaryMapReduce工作進(jìn)程都RawClickGFS的吞吐量。這個(gè)表的能夠壓縮到原有29%。GoogleGoogleWeb的(70TB的數(shù)據(jù),所以需要從磁盤讀取數(shù)據(jù)。圖像已經(jīng)被高效壓縮過了,因此存儲在Bigtable后不需要再壓縮了。Imagery表的每一行都代表了一個(gè)單獨(dú)的地理區(qū)域。行都有名稱,以確保毗鄰的區(qū)域存儲在了一起。數(shù)據(jù)預(yù)處理流水線高度依賴運(yùn)行在BigtableMapReduceMapReduce任務(wù)的時(shí)候,整個(gè)系統(tǒng)中每臺Tablet1MB/s。500GBTabletin-memory的列族。\hGoogleWeb查詢、圖像和新聞。用戶可以瀏覽他們查詢的歷史,重復(fù)他們之前的查詢和點(diǎn)擊;Google歷史使用習(xí)慣模式的個(gè)性化查詢結(jié)果。BigtableBigtable為MapReduce任務(wù)生成用戶的數(shù)據(jù)圖表。這些用戶數(shù)據(jù)圖表用來個(gè)性化當(dāng)前的查詢結(jié)果。Bigtable的集群上,這樣就增強(qiáng)了數(shù)據(jù)可用性,同時(shí)減少了由客戶端和BigtableBigtableChubbyRPCChecksum。我們在設(shè)計(jì)Chubby操作只返回錯(cuò)誤碼集合中的一個(gè)值。API中支持通常方式的事務(wù)處理。但是由于我們還不會馬上用到Bigtable非常重要(Bigtable自身以詳細(xì)記錄代表了RPC調(diào)用的很多重要操作。這個(gè)特性允許我們檢測和修正很多的問題,比如Tablet數(shù)據(jù)結(jié)大約1000032,abtMsr服Tablet服務(wù)器簽訂租約,TabletKill掉自己的進(jìn)程。不幸的是,這使用Ch
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在線練習(xí)的小自考漢語言考試試題及答案
- 貴州遵義市匯川區(qū)區(qū)外選調(diào)事業(yè)單位人員筆試真題2024
- 保險(xiǎn)培訓(xùn)講師授課
- 話題封面測試題及答案
- 海運(yùn)船員考試試題及答案
- 手指血糖監(jiān)測試題及答案
- 行政管理與組織效率提升策略試題及答案
- 50道經(jīng)典面試題及答案
- 漢語言文學(xué)情境創(chuàng)設(shè)與課堂互動(dòng)技巧試題及答案
- CPBA考試文檔技巧試題及答案
- 核電廠安全核電廠安全設(shè)計(jì)
- 北京大學(xué)數(shù)字圖像處理(岡薩雷斯)通用課件
- 電解質(zhì)分析儀MI操作規(guī)程 sop
- 用字母表示數(shù)——說課稿
- 常用酶切位點(diǎn)表含保護(hù)堿基
- 男性生育報(bào)銷女方未就業(yè)證明(共1頁)
- 彩鋼棚施工方案
- 公文收發(fā)文登記表
- 熱固板施工方案
- 第四次工業(yè)革命
- 年產(chǎn)8萬噸銅帶車間工藝設(shè)計(jì)設(shè)計(jì)0666299
評論
0/150
提交評論