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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論