小T導讀:藍深遠望(wang)致(zhi)力于(yu)服務(wu)政(zheng)府(fu)及(ji)大型(xing)國(guo)有企事業單位的(de)數(shu)(shu)字(zi)化(hua)轉型(xing),結合大數(shu)(shu)據(ju)、數(shu)(shu)字(zi)孿生、區塊鏈、網絡安(an)全(quan)等核心技術,為政(zheng)府(fu)運(yun)行、社會(hui)服務(wu)、城市(shi)管(guan)理、公共安(an)全(quan)、基層治理等領域,提(ti)供智(zhi)能場景應(ying)用、安(an)全(quan)管(guan)理、數(shu)(shu)據(ju)運(yun)營與產(chan)品(pin)服務(wu),賦能數(shu)(shu)字(zi)政(zheng)府(fu)創(chuang)新建設,為各(ge)行業應(ying)用場景提(ti)供支撐服務(wu)。
隨(sui)著科技的(de)發展與人民生活水平的(de)提高,電(dian)機(ji)在工(gong)業(ye)生產和人民生活中應用(yong)越來越廣泛,如工(gong)業(ye)機(ji)器、空調、電(dian)梯等。電(dian)機(ji)的(de)維護成為影(ying)響(xiang)生產效率和生產安全(quan)的(de)一(yi)項重(zhong)要事宜。而(er)且(qie)在一(yi)些(xie)環(huan)境(jing)惡劣(lie)的(de)場(chang)所(suo),用(yong)戶更偏向于遠程(cheng)維護。
為了滿足這些(xie)需(xu)求,我們(men)研發(fa)了電(dian)(dian)機(ji)物聯(lian)網監(jian)測預(yu)(yu)警與預(yu)(yu)測性維護平臺。該平臺通(tong)過傳感器、物聯(lian)網關,采集各電(dian)(dian)機(ji)設(she)備的運行數(shu)據以及頻譜波形數(shu)據,結合大數(shu)據建模分(fen)析,能(neng)夠及時發(fa)現潛(qian)在隱患,實現預(yu)(yu)測性維護。
一、現狀與痛點
電(dian)機(ji)物聯(lian)(lian)網監測數(shu)據類型多、采集頻率高(gao),在(zai)項目總體設計(ji)的初期(qi),我們打(da)算(suan)采用傳(chuan)統關系型數(shu)據庫進行存儲。當設備數(shu)量較少時(低(di)于100臺(tai)),基(ji)于傳(chuan)統關系型數(shu)據庫的計(ji)算(suan)函數(shu)、多表關聯(lian)(lian)等處理(li)方式,能(neng)夠滿足業務要求。但(dan)是考慮到未來接入的電(dian)機(ji)數(shu)量會越來越多(5000臺(tai)以(yi)上(shang)),設備的測點(dian)也(ye)會越來越多,平臺(tai)問題也(ye)就會越發嚴峻(jun)。具體可以(yi)歸納為如下兩(liang)個(ge)方面。
- 擴容實施難
采(cai)用傳統(tong)(tong)的關系型數(shu)據(ju)庫,局(ju)限于(yu)傳統(tong)(tong)的庫表(biao)(biao)設(she)計模式,每新增(zeng)一(yi)個電機設(she)備接(jie)入(ru),必須針對這個電機設(she)備建立(li)一(yi)張新的數(shu)據(ju)表(biao)(biao),這個大大增(zeng)加了(le)接(jie)入(ru)設(she)備時(shi)的工作量;同(tong)時(shi),隨著平臺接(jie)入(ru)的電機設(she)備越來越多,數(shu)據(ju)庫表(biao)(biao)不斷增(zeng)加,傳統(tong)(tong)數(shu)據(ju)庫的管理和備份成本不斷提高,無法做到水平擴容。
- 業務開發難
伴隨著業(ye)務的(de)不斷發(fa)展,大(da)量的(de)電機設備接入平臺,各種聚合(he)分析統計需求(qiu)持(chi)續(xu)增加,由于傳統關(guan)系(xi)型數據庫的(de)特(te)點,導致(zhi)各種跨庫跨表的(de)查詢操(cao)作激增,業(ye)務數據耦合(he)度(du)增大(da),系(xi)統開發(fa)的(de)難度(du)也隨之提升,同時(shi)對平臺整個的(de)響應(ying)速度(du)和(he)穩定性也會(hui)造成很(hen)大(da)隱患。
二、為什么選擇 TDengine
為了適應未來業務發展需求,避免上述難點與困境,我們決定選擇一款時序數據庫(Time-Series Database)產(chan)品。在調研了多款產(chan)品之后(hou),TDengine Database 引起(qi)了我們的注意,它的如(ru)下幾個(ge)特點(dian)非(fei)常(chang)適合(he)我們的場景:
- 高性能:數據讀寫速度非常高;
- 集群化:可以集群化部署,支持多副本,支持水平擴展;
- 安裝便捷: 官網文檔齊全,按照文檔很容易就能完成安裝部署;
- :開源,而且社區非常活躍,很多問題都可以在社區找到答案;
- 使用簡單:支持使用類SQL查詢語言來插入或查詢數據。
于是(shi)我們馬上做了各(ge)種(zhong)驗證,結果表明,TDengine 完全符合我們的(de)業務(wu)需求。 引入 TDengine 之后,平臺(tai)整體(ti)的(de)數據架構如下圖所示。

三、TDengine 存儲模型設計
TDengine 里有一個特殊的概念:超級表,每種(zhong)數據采集類型對應一個超級(ji)表(biao)。超級(ji)表(biao)只負責(ze)存儲(chu)(chu)這(zhe)種(zhong)類型的數據,同(tong)時(shi)數據存儲(chu)(chu)采用橫表(biao)存儲(chu)(chu)。
我們將電機設(she)備的(de)測點幅(fu)值超級表(biao)設(she)計(ji)成如(ru)下結構(gou):
CREATE STABLE IF NOT EXISTS general_view_escalator (ts TIMESTAMP, elect_machine_one FLOAT, reducer_machine_one FLOAT, bottom_bolt_one FLOAT, elect_machine_two FLOAT, reducer_machine_two FLOAT, bottom_bolt_two FLOAT, left_main_drive FLOAT, right_main_drive FLOAT, left_step_chain FLOAT, right_step_chain FLOAT, up_main_drive_noise FLOAT, down_step_chain_work_noise FLOAT, left_step_chain_extend FLOAT, right_step_chain_extend FLOAT, left_handrail_temperature FLOAT, right_handrail_temperature FLOAT, env_temperature FLOAT, elect_machine_temperature FLOAT, reduction_gearbox_one_oil FLOAT, reduction_gearbox_two_oil FLOAT, rmd FLOAT) TAGS (line_id BINARY(20), site_id BINARY(20), elevator_code BINARY(20));
波形超級表設計(ji)如下架構(gou):
CREATE STABLE IF NOT EXISTS waveform_view_escalator (ts TIMESTAMP, vals BINARY(16000), samplehz INT, len INT, ratio INT) TAGS (line_id BINARY(20), site_id BINARY(20), elevator_code BINARY(20), measuring_id BINARY(20));
TDengine 還有另外一個概念:子表。每臺(tai)電機設(she)備的數據對(dui)應(ying)一(yi)張(zhang)子(zi)表(biao),它可(ke)(ke)以(yi)在(zai)插入數據時動態創建。這種操作模(mo)式可(ke)(ke)以(yi)省去創建子(zi)表(biao)的業務(wu)環(huan)節,大大降(jiang)低了(le)業務(wu)復雜(za)度(du)。
四、用到的 TDengine 特性
1. 數據訂閱(Publisher/Subscriber)
在我們的業務場景中有一類數(shu)(shu)據叫預警、報警事件告(gao)警數(shu)(shu)據,直接使(shi)用 TDengine 的數(shu)(shu)據訂閱功能,可以(yi)優(you)雅(ya)快速地實現這一功能。

2. 緩存(Cache)
在我們(men)的(de)(de)業務場景中,需要顯(xian)示每(mei)(mei)臺(tai)電機(ji)設備(bei)的(de)(de)最(zui)新(xin)測量數(shu)(shu)據(ju)(如幅(fu)值(zhi)、頻譜等),直(zhi)接使(shi)用TDengine 提供的(de)(de)緩存(cun)(Cache)功能(neng),創建數(shu)(shu)據(ju)庫時設置參(can)數(shu)(shu) cachelast=1,將每(mei)(mei)張(zhang)表(biao)的(de)(de)最(zui)后一條記(ji)錄緩存(cun),應用程序(xu)可以通過 last_row 函數(shu)(shu)快(kuai)速(su)獲取(qu)當前的(de)(de)實時數(shu)(shu)據(ju),進行動態數(shu)(shu)據(ju)刷新(xin)顯(xian)示。

3. 其它有用功能
比如采樣查詢、多表聚合查詢、流式計(ji)算等,可以滿足我們(men)多種業務場景的需求。




原來項目(mu)中有很多需(xu)要(yao)在(zai)程序(xu)中處理的(de)計(ji)算工作,現在(zai)全部由TDengine承擔,在(zai)分擔程序(xu)的(de)計(ji)算壓力的(de)同時(shi),還可以(yi)實(shi)現聚合結果的(de)持久化存儲,支(zhi)持歷(li)史數據(ju)快(kuai)速(su)查(cha)詢。
五、總結
TDengine Database 作為一(yi)款新的(de)產品,我(wo)們在(zai)使用過程(cheng)(cheng)中遇到了一(yi)些困難(nan)和(he)挑戰。不(bu)過在(zai)同事們的(de)支持(chi)下(xia),在(zai)濤(tao)思數據工(gong)程(cheng)(cheng)師(shi)們的(de)熱心支持(chi)下(xia),我(wo)們還是相對順利地完成了項目的(de)上(shang)線。
目前平(ping)臺(tai)(tai)的(de)(de)狀態是,當(dang)前設(she)備接(jie)入 300 臺(tai)(tai),每臺(tai)(tai)設(she)備 19 個測點,數(shu)據(ju)(ju)采集頻率(lv)達到 1 秒鐘,存儲的(de)(de)數(shu)據(ju)(ju)維度更精細(xi)了(le),能(neng)為平(ping)臺(tai)(tai)的(de)(de)智能(neng)診斷、智能(neng)分析服務提供更準(zhun)確(que)的(de)(de)數(shu)據(ju)(ju)支持(chi),同時各(ge)業務場景下的(de)(de)計算查(cha)詢性(xing)能(neng)也非常優秀,滿足了(le)項目的(de)(de)實(shi)際需求。
作者簡介:
李凱,藍深遠望(wang)大數據(ju)研(yan)發(fa)組負責人,2015 年起從事大數據(ju)研(yan)發(fa),2020 起從事電機大數據(ju)平臺(tai)運(yun)維研(yan)發(fa)。


























