小T導(dǎo)讀:藍(lán)深遠(yuǎn)望致力于服務(wù)政府及大型國有企事業(yè)單位的數(shù)字化轉(zhuǎn)型,結(jié)合大數(shù)據(jù)、數(shù)字孿生、區(qū)塊鏈、網(wǎng)絡(luò)安全等核心技術(shù),為政府運行、社會服務(wù)、城市管理、公共安全、基層治理等領(lǐng)域,提供智能場景應(yīng)用、安全管理、數(shù)據(jù)運營與產(chǎn)品服務(wù),賦能數(shù)字政府創(chuàng)新建設(shè),為各行業(yè)應(yīng)用場景提供支撐服務(wù)。
隨著科技的發(fā)展與人民生活水平的提高,電機在工業(yè)生產(chǎn)和人民生活中應(yīng)用越來越廣泛,如工業(yè)機器、空調(diào)、電梯等。電機的維護(hù)成為影響生產(chǎn)效率和生產(chǎn)安全的一項重要事宜。而且在一些環(huán)境惡劣的場所,用戶更偏向于遠(yuǎn)程維護(hù)。
為了滿足這些需求,我們研發(fā)了電機物聯(lián)網(wǎng)監(jiān)測預(yù)警與預(yù)測性維護(hù)平臺。該平臺通過傳感器、物聯(lián)網(wǎng)關(guān),采集各電機設(shè)備的運行數(shù)據(jù)以及頻譜波形數(shù)據(jù),結(jié)合大數(shù)據(jù)建模分析,能夠及時發(fā)現(xiàn)潛在隱患,實現(xiàn)預(yù)測性維護(hù)。
一、現(xiàn)狀與痛點
電機物聯(lián)網(wǎng)監(jiān)測數(shù)據(jù)類型多、采集頻率高,在項目總體設(shè)計的初期,我們打算采用傳統(tǒng)關(guān)系型數(shù)據(jù)庫進(jìn)行存儲。當(dāng)設(shè)備數(shù)量較少時(低于100臺),基于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的計算函數(shù)、多表關(guān)聯(lián)等處理方式,能夠滿足業(yè)務(wù)要求。但是考慮到未來接入的電機數(shù)量會越來越多(5000臺以上),設(shè)備的測點也會越來越多,平臺問題也就會越發(fā)嚴(yán)峻。具體可以歸納為如下兩個方面。
- 擴容實施難
采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,局限于傳統(tǒng)的庫表設(shè)計模式,每新增一個電機設(shè)備接入,必須針對這個電機設(shè)備建立一張新的數(shù)據(jù)表,這個大大增加了接入設(shè)備時的工作量;同時,隨著平臺接入的電機設(shè)備越來越多,數(shù)據(jù)庫表不斷增加,傳統(tǒng)數(shù)據(jù)庫的管理和備份成本不斷提高,無法做到水平擴容。
- 業(yè)務(wù)開發(fā)難
伴隨著業(yè)務(wù)的不斷發(fā)展,大量的電機設(shè)備接入平臺,各種聚合分析統(tǒng)計需求持續(xù)增加,由于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的特點,導(dǎo)致各種跨庫跨表的查詢操作激增,業(yè)務(wù)數(shù)據(jù)耦合度增大,系統(tǒng)開發(fā)的難度也隨之提升,同時對平臺整個的響應(yīng)速度和穩(wěn)定性也會造成很大隱患。
二、為什么選擇 TDengine
為了適應(yīng)未來業(yè)務(wù)發(fā)展需求,避免上述難點與困境,我們決定選擇一款時序數(shù)據(jù)庫(Time-Series Database)產(chǎn)品。在調(diào)研了多款產(chǎn)品之后,TDengine Database 引起了我們的注意,它的如下幾個特點非常適合我們的場景:
- 高性能:數(shù)據(jù)讀寫速度非常高;
- 集群化:可以集群化部署,支持多副本,支持水平擴展;
- 安裝便捷: 官網(wǎng)文檔齊全,按照文檔很容易就能完成安裝部署;
- 開源:開源,而且社區(qū)非?;钴S,很多問題都可以在社區(qū)找到答案;
- 使用簡單:支持使用類SQL查詢語言來插入或查詢數(shù)據(jù)。
于是我們馬上做了各種驗證,結(jié)果表明,TDengine 完全符合我們的業(yè)務(wù)需求。 引入 TDengine 之后,平臺整體的數(shù)據(jù)架構(gòu)如下圖所示。

三、TDengine 存儲模型設(shè)計
TDengine 里有一個特殊的概念:超級表,每種數(shù)據(jù)采集類型對應(yīng)一個超級表。超級表只負(fù)責(zé)存儲這種類型的數(shù)據(jù),同時數(shù)據(jù)存儲采用橫表存儲。
我們將電機設(shè)備的測點幅值超級表設(shè)計成如下結(jié)構(gòu):
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));
波形超級表設(shè)計如下架構(gòu):
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 還有另外一個概念:子表。每臺電機設(shè)備的數(shù)據(jù)對應(yīng)一張子表,它可以在插入數(shù)據(jù)時動態(tài)創(chuàng)建。這種操作模式可以省去創(chuàng)建子表的業(yè)務(wù)環(huán)節(jié),大大降低了業(yè)務(wù)復(fù)雜度。
四、用到的 TDengine 特性
1. 數(shù)據(jù)訂閱(Publisher/Subscriber)
在我們的業(yè)務(wù)場景中有一類數(shù)據(jù)叫預(yù)警、報警事件告警數(shù)據(jù),直接使用 TDengine 的數(shù)據(jù)訂閱功能,可以優(yōu)雅快速地實現(xiàn)這一功能。

2. 緩存(Cache)
在我們的業(yè)務(wù)場景中,需要顯示每臺電機設(shè)備的最新測量數(shù)據(jù)(如幅值、頻譜等),直接使用TDengine 提供的緩存(Cache)功能,創(chuàng)建數(shù)據(jù)庫時設(shè)置參數(shù) cachelast=1,將每張表的最后一條記錄緩存,應(yīng)用程序可以通過 last_row 函數(shù)快速獲取當(dāng)前的實時數(shù)據(jù),進(jìn)行動態(tài)數(shù)據(jù)刷新顯示。

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




原來項目中有很多需要在程序中處理的計算工作,現(xiàn)在全部由TDengine承擔(dān),在分擔(dān)程序的計算壓力的同時,還可以實現(xiàn)聚合結(jié)果的持久化存儲,支持歷史數(shù)據(jù)快速查詢。
五、總結(jié)
TDengine Database 作為一款新的產(chǎn)品,我們在使用過程中遇到了一些困難和挑戰(zhàn)。不過在同事們的支持下,在濤思數(shù)據(jù)工程師們的熱心支持下,我們還是相對順利地完成了項目的上線。
目前平臺的狀態(tài)是,當(dāng)前設(shè)備接入 300 臺,每臺設(shè)備 19 個測點,數(shù)據(jù)采集頻率達(dá)到 1 秒鐘,存儲的數(shù)據(jù)維度更精細(xì)了,能為平臺的智能診斷、智能分析服務(wù)提供更準(zhǔn)確的數(shù)據(jù)支持,同時各業(yè)務(wù)場景下的計算查詢性能也非常優(yōu)秀,滿足了項目的實際需求。
作者簡介:
李凱,藍(lán)深遠(yuǎn)望大數(shù)據(jù)研發(fā)組負(fù)責(zé)人,2015 年起從事大數(shù)據(jù)研發(fā),2020 起從事電機大數(shù)據(jù)平臺運維研發(fā)。



互聯(lián)網(wǎng).png)



-1.png)







證.png)


伙伴.png)
伙伴.png)
伙伴.png)



