2023TDengine技術規(guī)范白皮書_第1頁
2023TDengine技術規(guī)范白皮書_第2頁
2023TDengine技術規(guī)范白皮書_第3頁
2023TDengine技術規(guī)范白皮書_第4頁
2023TDengine技術規(guī)范白皮書_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

TDengine技術規(guī)范白皮書隨著移動互聯(lián)網(wǎng)的普及,數(shù)據(jù)通訊成本的急劇下降,以及各種能設備的出現(xiàn),除傳統(tǒng)的手機、計算機在實時采集數(shù)據(jù)之外,從出租車、智能電表、環(huán)境監(jiān)測設備到電梯、大型設備、工業(yè)生產(chǎn)線等都在源源不斷產(chǎn)生海量的實時數(shù)據(jù)發(fā)往云端。這些海量數(shù)據(jù)是企業(yè)寶貴的財富,能夠幫監(jiān)控業(yè)務或設備的運行情況,生成各種維度的報表,而且通過大數(shù)據(jù)分析和機器學習,對業(yè)務進行預測和預警,幫助企業(yè)進行科學決策、節(jié)約成本并創(chuàng)造新的價值。仔細研究發(fā)現(xiàn),所有機器、設備、傳感器、以及交易系統(tǒng)所產(chǎn)生的數(shù)據(jù)都是時序的,而且很多還帶有位置信息。這些數(shù)據(jù)具有明顯的特征,1:數(shù)據(jù)是時序的,一定帶有時間戳;2:數(shù)據(jù)是結(jié)構化的;3:數(shù)據(jù)極少有更新或刪除操作;4:無需傳統(tǒng)數(shù)據(jù)庫的事務處理;5:相對互聯(lián)網(wǎng)應用,寫多讀少;6:用戶關注的是一段時間的趨勢,而不是某一特點時間點的值;7:數(shù)據(jù)是有保留期限的;8:數(shù)據(jù)的查詢分析一定是基于時間段和地理區(qū)域的;9:除存儲查詢外,還往往需要各種統(tǒng)計和實時計算操作;10:數(shù)據(jù)量巨大,一天采集的數(shù)據(jù)就可以超過100億條。看似簡單的事情,但由于數(shù)據(jù)記錄條數(shù)巨大,導致數(shù)據(jù)的實時寫入成為瓶頸,查詢分析極為緩慢,成為新的技術挑戰(zhàn)。傳統(tǒng)的關系型數(shù)據(jù)庫或NoSQL數(shù)據(jù)庫以及流式計算引擎由于沒有充分利用這些數(shù)據(jù)的特點,性能提升極為有限,只能依靠集群技術,投入更多的計算資源和存儲資源來處理,企業(yè)運營維護成本急劇上升。TDengineTDengine正是濤思數(shù)據(jù)面對這一高速增長的物聯(lián)網(wǎng)大數(shù)據(jù)市場和技術挑戰(zhàn)推出的創(chuàng)新性的大數(shù)據(jù)處理產(chǎn)品,它不依賴任何第三方軟件,也不是優(yōu)化或包裝了一個開源的數(shù)據(jù)庫或流式計算產(chǎn)品,而是在吸取眾多傳統(tǒng)關系型數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫、流式計算引擎、消息隊列等軟件的優(yōu)點之后自主開發(fā)的產(chǎn)品,在時序空間大數(shù)據(jù)處理上,有著自己獨到的優(yōu)勢。10倍以上的性能提升2萬次請求,插入數(shù)百萬個數(shù)據(jù)點,讀出一千萬以上數(shù)據(jù)點,比現(xiàn)有通用數(shù)據(jù)庫快了十倍以上。硬件或云服務1/51/5;通過列式存儲和先進的壓縮算法,存儲空間不到通用數(shù)據(jù)庫的1/10全棧時序數(shù)據(jù)處理引擎起,應用無需再集成Kafka/Redis/HBase/Spark/HDFS等軟件,大幅降低應用開發(fā)和維護的復雜度成本。強大的分析功能詢。數(shù)據(jù)可在時間軸上或多個設備上進行聚合。臨時查詢可通過Shell,Python,R,Matlab隨時進行。與第三方工具無縫連接Telegraf,Grafana,Matlab,RMQTTOPCHadoop,Spark等BI工具也將無縫連接。零運維成本、零學習成本標準SQJD,Sful,yhon/Java///Go,ySQL相似,零學習成本。采用TDengine,可將典型的物聯(lián)網(wǎng)、車聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)大數(shù)據(jù)平臺的整體成本降至現(xiàn)有的1/5。同樣的硬件資源,TDengine能將系統(tǒng)處理能力和容量增加五倍以上。但需要指出的是,因充分利用了物聯(lián)網(wǎng)時序數(shù)據(jù)的特點,無法用來處理網(wǎng)絡爬蟲、微博、微信、電商、ERP、CRM等通用型數(shù)據(jù)。TDengine系統(tǒng)結(jié)構TDengine會有故障的假設進行設計的,是基于任何單臺計算機都無足夠能力處理海量數(shù)TDengine發(fā)的第一天起,就是按照分布式高可靠架構進行設計的,是完全去中心化的。TDengine整個概念進行介紹。物理節(jié)點:集群里的任何一臺物理機器(dnode),根據(jù)其具體的CPU、Memory、存儲和其他物理資源,TDengine將自動配置多個虛擬節(jié)點。虛擬數(shù)據(jù)節(jié)點:存儲具體的時序數(shù)據(jù),所有針對時序數(shù)據(jù)的插入和查詢操作,都在虛擬數(shù)據(jù)節(jié)點上進行(圖例中用V標明)。位于不同物理機器上的虛擬數(shù)據(jù)節(jié)點可以組成一個虛擬數(shù)據(jù)節(jié)點組(如圖例中dnode0中的V0,dnode1中的V1,dnode6中的V2組成了一個組),虛擬節(jié)點組里的虛擬節(jié)點的數(shù)據(jù)以異步的方式進行實時同步,并實現(xiàn)數(shù)據(jù)的最終一致性,以保證一份數(shù)據(jù)在多臺物理機器上有拷貝,而且即使一臺物理機器宕機,總有位于其他物理機器上的虛擬節(jié)點能處理數(shù)據(jù)請求,從而保證系統(tǒng)運行的高可靠性。虛擬管理節(jié)點:負責所有節(jié)點運行狀MetaData的管理,包括用戶、數(shù)據(jù)庫、表的管理(M標明)。當應用需要插入或查詢一張表時,如果不知道這張表位于哪個數(shù)據(jù)節(jié)點,應用會連接管理節(jié)點來該信息。MetaData的管理也需要有高可靠的保證,系統(tǒng)采用Master-Slave的機制5個虛擬管理節(jié)點組成一個虛擬管理節(jié)點集群(M0,M1,M2)。這個虛擬管理節(jié)點集群的創(chuàng)動的,無需任何人工干預,應知道虛擬管理節(jié)點具體在哪臺物理機器上運行。TDengine儲結(jié)構為提高壓縮和查詢效率,TDengine上是連續(xù)存放的,這樣大幅減少隨機讀取操作,減少IO操作次數(shù),數(shù)量級的提升讀取和查詢效率。而且由于不同數(shù)據(jù)采集設備產(chǎn)生數(shù)據(jù)的過程完全獨立,每個設備只產(chǎn)生屬于自己的數(shù)據(jù),一張表也就只有一個寫入者。這樣每個表就可以采用無鎖方式來寫,寫入速度就能大幅提升。同時,對于一個數(shù)據(jù)采集點而言,其產(chǎn)生的數(shù)據(jù)是時序的,因此寫的操作可用追加的方式實現(xiàn),進一步大幅提高數(shù)據(jù)寫入速度。數(shù)據(jù)具體寫如流程如圖所示:寫入數(shù)據(jù)時,先將數(shù)據(jù)點寫進Commit日志,然后轉(zhuǎn)發(fā)給同一虛擬節(jié)點組里的其他節(jié)點,再按列寫入分配的內(nèi)存塊。當內(nèi)存塊的剩余空間達到一定臨界值或設定的commit時間時,內(nèi)存塊的數(shù)據(jù)將寫入硬盤。內(nèi)存塊是固定大小(如16K)的,但依據(jù)系統(tǒng)內(nèi)存的大小,每個采集點可以分配一個到多個內(nèi)存塊,采取LRU策略進行管理。在一個內(nèi)存塊里,數(shù)據(jù)是連續(xù)存放的,但塊與塊是不連續(xù)的,因此TDengine為每一個表在內(nèi)存里建立有塊的索引,以方便寫入和查詢。數(shù)據(jù)寫入硬盤是以添加日志的方式進行的,以大幅提高落盤的速度。為避免合并操作,每個采集點(表)的數(shù)據(jù)也是按塊存儲,在一個塊內(nèi),數(shù)據(jù)點是按列連續(xù)存放的,但塊與塊之間可以不是連續(xù)的。TDengine對每張表會維護一索引,保存每據(jù)塊在文件中的偏移量,起始時間、數(shù)據(jù)點數(shù)、壓縮算法等信息。每個數(shù)據(jù)文件僅僅保存固定一段時間的數(shù)據(jù)(),因此一個表的數(shù)據(jù)會分布在多個數(shù)據(jù)文件中。查詢時,根據(jù)給定的時間段,TDengine將計算出查找的數(shù)據(jù)會在哪個數(shù)據(jù)文件,然后讀取。這樣大幅減少了硬盤操作次數(shù)。多個數(shù)據(jù)文件的設計還有利于數(shù)據(jù)同步、數(shù)據(jù)恢復、數(shù)據(jù)自動刪除操作,更有利于數(shù)據(jù)按照新舊程度在不同物理介質(zhì)上存儲,比如最新的數(shù)SSD盤上,最老的數(shù)據(jù)存放在大容量但慢速的硬盤上。通過這樣的設計,TDengine將硬盤的機讀取幾乎降為零,從而大幅提升寫入TDengine在很廉價的存儲設備上也有超強的性能。為減少文件個數(shù),一個虛擬節(jié)點內(nèi)的所有表在同一時間段的數(shù)據(jù)都是存儲在同一個數(shù)據(jù)文件里,而不是一張表一個數(shù)據(jù)文件。但是對于一個數(shù)據(jù)節(jié)點,每個虛擬節(jié)點都會有自己獨立的數(shù)據(jù)文件。數(shù)據(jù)分區(qū)、水平擴展為處理每日高達數(shù)億條的海量數(shù)據(jù),數(shù)據(jù)必須在多個節(jié)點存放。在TDengine里,數(shù)據(jù)是按照每個采集點(表)來存放的。一張表(一個采集點)的數(shù)據(jù),即使每秒產(chǎn)生一百個字節(jié)的數(shù)據(jù)量,一年也才3G的數(shù)據(jù)量,壓縮后,往往還不到300M,因此TDengine里,一個表的數(shù)據(jù)是不跨節(jié)點存儲的,以便于單張表的快速高效的插入、查詢和計算。為更好的數(shù)據(jù)分區(qū),TDengine采用了虛擬據(jù)節(jié)點的設計。一個虛擬數(shù)據(jù)節(jié)點包含多個表,表的數(shù)量可以配置。根據(jù)其計算和存儲資源,一個物理節(jié)點將被劃分為多個虛擬數(shù)據(jù)節(jié)點。虛擬數(shù)據(jù)節(jié)點的設計帶來幾大優(yōu)勢,1)更好的支持硬件異構源多的服務器可以創(chuàng)建更多的虛擬節(jié)點;2)恢復一個節(jié)點參與進來,大大加快速度;3)如果撤掉一個數(shù)據(jù)節(jié)點,該節(jié)點上的虛擬節(jié)點將被相當均勻的遷移到其他節(jié)點上去;4)新增一個數(shù)據(jù)節(jié)點,負載過熱的節(jié)點的上的部分虛擬節(jié)點將被整體遷移過來。這一切讓負載更加均衡,讓數(shù)據(jù)同步變得更加高效。與傳統(tǒng)的數(shù)據(jù)庫相似,用戶可以可以創(chuàng)建多個數(shù)據(jù)庫,每個庫里面,可以創(chuàng)建多個表。一個庫可以橫跨多個虛擬數(shù)據(jù)節(jié)點,但一個虛擬數(shù)據(jù)節(jié)點僅僅屬于一個數(shù)當用戶添加一個表時,管理節(jié)點將查看已經(jīng)分配的虛擬節(jié)點里是否還有空位,如果有,就將該表分配到這虛擬節(jié)點。如果這個庫的所有虛擬節(jié)點都沒將根據(jù)負載均衡的策略(隨機、輪詢等)來個新的虛擬節(jié)點給該庫,然后將該表分配到新的虛擬節(jié)點里。由于一臺物理主機有多個虛擬數(shù)載均勻分布。管理節(jié)點負責整個系統(tǒng)的負載均衡,虛擬數(shù)據(jù)節(jié)點的增加、刪除、遷移、合并與拆分。管理節(jié)點并不保存每個采集點采集的數(shù)據(jù),只是管理虛也不會影響現(xiàn)有各虛擬節(jié)點的數(shù)據(jù)插入和查詢操作。各個采集點或應用從取分配的虛擬數(shù)據(jù)節(jié)點信息后,然后直接與虛擬數(shù)據(jù)節(jié)點通訊,直接將數(shù)據(jù)插入數(shù)庫,對于查詢操作也是如此。因此,系統(tǒng)容量以及吞吐率與虛擬數(shù)據(jù)節(jié)點的個數(shù)比,整個系統(tǒng)是水平擴展的高可靠系統(tǒng)為保證數(shù)據(jù)節(jié)點的高可靠性,TDengine虛擬數(shù)據(jù)節(jié)點組的概念,并采用異步的方式進行數(shù)據(jù)同步。一個虛擬節(jié)點組由處于不同物理主機上的虛擬數(shù)據(jù)節(jié)點組成,虛擬數(shù)據(jù)節(jié)點個數(shù)就是數(shù)據(jù)冗余的個數(shù)(ReplicationFactor2)。在一個虛擬節(jié)點組里,各個虛擬數(shù)據(jù)節(jié)點通過心跳包實時知道對方的狀態(tài)。如果一個虛擬數(shù)據(jù)節(jié)點收到數(shù)據(jù)寫入的請求,該請求會被立即轉(zhuǎn)發(fā)給其他虛擬數(shù)據(jù)節(jié)點,然后在本地存儲處理。當TDengine系統(tǒng)時,對于要操作的任何一張表,系統(tǒng)會給應用提供該表所屬的虛擬數(shù)據(jù)節(jié)點組里各個虛IP地址(replicationfactor為3,就會3個IP地址),如果鏈接其中一個失敗或者操作失敗,應用會嘗試第二個、第三個,只有所有節(jié)點失敗才會返回失敗。這樣保證虛擬數(shù)據(jù)節(jié)點組里任何一臺機器宕機,都不會影響對外的服務。這些復雜的重新連接流程都被TDengine包裝隱藏起來,應用開發(fā)者無需寫程序來實現(xiàn)。為保證效率,TDengine據(jù)的版本是否與其他虛狀態(tài)。在運行過程中,由于各種原因,數(shù)據(jù)仍然可以失去同步,這種不同步會轉(zhuǎn)發(fā)的寫入請求時被發(fā)現(xiàn),一旦被發(fā)現(xiàn),版本低的虛擬數(shù)據(jù)節(jié)點將馬上停止對外服務,進入同步流程,同步完后,才會重新恢復還可以正常的對外提供服務。管理節(jié)點負責存儲Meta數(shù)據(jù),同時根據(jù)每個數(shù)據(jù)節(jié)點狀態(tài)來要保證其高可靠性。多個虛擬管理節(jié)點組成一個虛Meta數(shù)以被多個TDengineMaster-Slave模式實現(xiàn)虛擬管理節(jié)點的數(shù)據(jù)同步。寫Slave節(jié)點寫入成功后,Master節(jié)點才會返回成功,從而保證數(shù)Master節(jié)點宕機,系統(tǒng)有機制保證其中一個Slave會立即被選舉為Master,從而保證系統(tǒng)寫操作的高可靠性。由于Meta數(shù)據(jù)量并不大,Meta數(shù)據(jù)雖然需持久化存儲,但將其完全保存在內(nèi)存,以保證查詢操作的高效。在應用側(cè),為避免每次數(shù)據(jù)操作都訪問管理節(jié)點,TDengineDriver將必要的Meta數(shù)據(jù)都會緩存在本地,只有當需要的Meta數(shù)據(jù)不存在或失效的情況下,才會訪問管理節(jié)點,這樣大大提高系統(tǒng)性能。管理節(jié)點在集群中存在,但對于應用和系統(tǒng)管理員而言,是完全透明的。整個系統(tǒng)會自動在物理節(jié)點上創(chuàng)建虛擬管理節(jié)點以及虛擬管理節(jié)點組。STable:多表聚合各個數(shù)據(jù)采集點的時鐘是很難同步的,為保證其時序,而且為保證單一采集點的數(shù)據(jù)在存儲介質(zhì)上的連續(xù)性,TDengine要求每個數(shù)據(jù)采集點單獨建表,這樣能極大提高數(shù)據(jù)的插入速度以及查詢速度,但是導致系統(tǒng)表的數(shù)量猛增,讓應用對表的維護以及聚合、統(tǒng)計操作難度加大。為降低應用的開發(fā)難度,TDengine引入了STable超級表的概念。STable是表的集合,包含多張表,而且這集合里每張表的Schema是一樣的。同一類型的采集設備可創(chuàng)建一個STable。與表一樣,包含Schema,但還包含標簽信息。Schema定義了表的每列數(shù)據(jù)的屬性,如溫度、壓力等,而標簽信息是靜態(tài)的,屬于MetaData,如采集設備的型號、位置等。TDengine擴展了標準SQL的table的定義,創(chuàng)建時,除指定Schema外,還可以帶關鍵詞tags來指定有哪些標簽。如:createtablem1(tstimestamp,pressureint,rpmint)tags(modelbinary(8),colorbinary(8))上述SQL創(chuàng)建了一個STablem1,帶有標簽model和標簽color。為某一個具體的采集點創(chuàng)建表時,可以指定其所屬的STable以及標簽的值,比如:createtablet1usingm1tags(‘a(chǎn)pple’,‘red’)上述SQL以STablem1t1Schemam1的Schemaid設為apple,標簽color設為red。插入數(shù)據(jù)時,仍然按照正常的STable進行各種聚合查詢或統(tǒng)計。如:selectavg(pressue)fromm1wheremodel=’apple’interval(5m)groupbycolorSQL語句表示將model值為apple5分鐘的平均值計算出來,并color進行分組。對于STable的查詢操作,完全與正常的表一樣。但一個定義的STable可以包含多張表(多個數(shù)據(jù)采集點),應用可通過指定標簽的過濾條件,對一個STable下的全部或部分表進行聚合或統(tǒng)計操作,這樣大大簡化應用的開發(fā)。其具體流程如下圖所示:1:應用將一個查詢條件發(fā)往系統(tǒng);2:Driver將查詢的過濾條件發(fā)往MetaNode(管理節(jié)點);3:管理節(jié)點將符合查詢過濾條件的表的列表發(fā)回Driver(包含每個表對應的數(shù)據(jù)節(jié)點的IP地址);4:這些返回的表可能分布在多個數(shù)據(jù)節(jié)點,Driver將計算的請求發(fā)往相應的多個數(shù)據(jù)節(jié)點;5Driver;6:Driver將多個數(shù)據(jù)節(jié)點返回的結(jié)果做最后的聚合,將其返回給應用。數(shù)據(jù)模型TDengine采用的仍然是傳統(tǒng)的關系型數(shù)據(jù)庫的模型。用戶需要根據(jù)應用場景,創(chuàng)建一到多個庫,然后在每個庫里創(chuàng)建多張表,創(chuàng)建表時需要定義Schema。對于同一類型的采集點,為便于聚合統(tǒng)計操作,可以先定義超級表STable,然后再定義表。不同的采集點往往具有不同的數(shù)據(jù)特征,比如有的采集點數(shù)據(jù)采集頻率高,有的數(shù)據(jù)保留時長較長,有的采集數(shù)3份備份,而有的數(shù)據(jù)一份備份即可,有的采集點一條16個字節(jié),很小。為讓各種場景下TDengine都能最大效率的工作,TDengine建議將不同數(shù)里。創(chuàng)建一個庫時,除SQL份的份數(shù)、cache大小、是否壓縮等多種參數(shù)。TDengine對庫的數(shù)量、STable的數(shù)量以及表的數(shù)量沒有做任何限制,而且其多少不會對性能產(chǎn)生影響,應用按照自己的場景創(chuàng)建即可。實時流式計算在存儲的原始數(shù)據(jù)上,TDengine可以做各種計算,目前支持的主要操作包括:Avgvalue的平均值作為結(jié)果Devvalue的標準差作為結(jié)果CountFirstvalue作為結(jié)果Lastvalue作為結(jié)果LeastSquaresvalue進行最小二乘法的擬合Maxvalue的最大值作為結(jié)果MinvaluePercentilevaluep百分位數(shù)作為結(jié)果。SumvalueDiffvalue的差值作為結(jié)果Divvalue除以一個除數(shù)作為結(jié)果Scalevalue乘以一個倍數(shù)作為結(jié)果基于多個采集點數(shù)據(jù)的四則運算表達式TDengine數(shù)據(jù)當做新的數(shù)據(jù)保存進TDengine擎的SlidingWindow相似。實時計算可以通過一個簡單的創(chuàng)建表的操作來實現(xiàn)。如:createtabled1asselectavg(pressure)fromt1interval(60s)sliding(10s)上述SQL表示將t1里字段pressure10秒鐘(每次滑動的時間間隔)將過去的60秒鐘(聚合計算的時間間隔)的數(shù)據(jù)平均值計算出來并寫入表d1數(shù)據(jù)可以與其他原始數(shù)據(jù)或計算出的衍生數(shù)據(jù)進行再次計算。維護TDengine是在Linux上開發(fā)的,任何Linux系統(tǒng)都可以運行,而且不依賴任何第三方軟件,也不是在某個開源項目上包裝出來的產(chǎn)品。獲得安裝包并解壓后,只需執(zhí)行install腳本就一切搞定,極其簡單。安裝后,會在安裝的機器上自動創(chuàng)建虛擬數(shù)據(jù)節(jié)點和管理節(jié)點,開發(fā)者就可以使用了,能滿足一般性的需求。但如果數(shù)據(jù)量大,就需要將軟件安裝到多臺主機。這時也MasterIP,系統(tǒng)管理員打開TDengineShell,將新添加的主機添加進系統(tǒng)即可。如果要撤銷一個TDengineShell,將可,極其簡單。傳統(tǒng)數(shù)據(jù)庫所需要的數(shù)據(jù)分區(qū)、數(shù)據(jù)遷移等等都一概不存在了。因為數(shù)據(jù)是自動同步到多個節(jié)點的,系統(tǒng)管理員不用擔心數(shù)據(jù)的丟失,也不用制定備份和數(shù)據(jù)恢復策略,一切全自動進行。如果軟件需要升級,只要在TDengineShell里將新版本上傳即可。管理節(jié)點將挨個把每個節(jié)點的軟件進行升級,而且整個系統(tǒng)的服務將不停止,服務不受任何影響。如果要更換設備,只需將其拔除,安裝上軟件后,將新設備重新插入即可。換言之,TDengine完全支持在線升級以及硬件的熱插拔,從而保證服務的7*24的不間斷運行。開發(fā)人員需要做的是定義表的結(jié)構,根據(jù)具體場景,配置好各種參數(shù),讓系統(tǒng)性能達到最優(yōu)。系統(tǒng)管理員只需要關注與硬件相關的報警信息,對于經(jīng)常出問題的服務器或硬盤,進行更換而已。使用TDengine,整個系統(tǒng)的運維工作變得極為簡單,將大大降低運營成本。更多亮點訂閱模式:與標準的數(shù)據(jù)庫不同,TDengine還提供一種訂閱模式。應用程序可以訂閱數(shù)據(jù)庫某張表的內(nèi)容,一旦該表有新的記錄,應用將立即得到通知。同一個表可以Kafkapull模式。Kafka的publishTDengine具有極高的插入速度,通過采用訂閱模式,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論