小T導(dǎo)讀:上海電氣集團(tuán)股份有限公司是世界級(jí)的綜合性高端裝備制造企業(yè),聚焦智慧能源、智能制造、智能基礎(chǔ)設(shè)施三大業(yè)務(wù)領(lǐng)域,為客戶(hù)提供工業(yè)級(jí)的綠色智能系統(tǒng)解決方案。業(yè)務(wù)遍及全球,主要包括新能源、綜合能源、環(huán)保、醫(yī)療器械及工業(yè)自動(dòng)化等。
公司圍繞“一芯 3S”核心產(chǎn)品鏈,構(gòu)建儲(chǔ)能核心競(jìng)爭(zhēng)力。作為其中關(guān)鍵組成部分的“SmartOPS 儲(chǔ)能智慧運(yùn)維系統(tǒng)”,基于物聯(lián)網(wǎng)、大數(shù)據(jù)、機(jī)器學(xué)習(xí)等技術(shù),打通儲(chǔ)能系統(tǒng)從信息采集到云端接入,再到數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分析的完整技術(shù)鏈條,構(gòu)建智慧儲(chǔ)能管控體系平臺(tái),實(shí)現(xiàn)全面監(jiān)測(cè)、預(yù)測(cè)性維護(hù)、熱管理分析等高級(jí)應(yīng)用,幫助客戶(hù)實(shí)現(xiàn)儲(chǔ)能設(shè)備的最優(yōu)配置和高效利用。

一、應(yīng)用背景
SmartOPS 支持云端部署和本地部署兩種方式。
云端部署基于上海電氣集團(tuán)當(dāng)前統(tǒng)一的架構(gòu),利用云端時(shí)序數(shù)據(jù)庫(kù)(Time-Series Database),可擴(kuò)展、可靈活配置的各類(lèi)資源,可輕松滿(mǎn)足使用要求,高效且流暢。
但是在本地部署中,需要重點(diǎn)考慮本地硬件資源的限制,如站端系統(tǒng)的內(nèi)存、CPU 以及讀寫(xiě)性能等。目前站端系統(tǒng)的配置下圖所示。

所以我們需要考慮適合在站端系統(tǒng)中部署的時(shí)序數(shù)據(jù)庫(kù),也就有了接下來(lái)的技術(shù)選型。
二、技術(shù)選型
整體選型考慮會(huì)涉及很多維度,具體包括讀寫(xiě)性能、壓縮率、行業(yè)認(rèn)可度、產(chǎn)品活力、服務(wù)支持、安全性、兼容性、可維護(hù)性、可擴(kuò)展性、功能性、可靠性、易用性等屬性。
我們團(tuán)隊(duì)著重評(píng)估了以下幾款 Database:
- OpenTSDB:以 HBase 為底層存儲(chǔ),向上封裝了自己的邏輯層和對(duì)外接口層。這種架構(gòu)可以充分利用 HBase 的特性,實(shí)現(xiàn)數(shù)據(jù)的高可用和較好的寫(xiě)入性能。但相比原生時(shí)序數(shù)據(jù)庫(kù),OpenTSDB 數(shù)據(jù)棧較長(zhǎng),在讀寫(xiě)性能和數(shù)據(jù)壓縮方面都還有進(jìn)一步優(yōu)化的空間。
- InfluxDB:目前流行度最高的時(shí)序數(shù)據(jù)庫(kù),數(shù)據(jù)按列存儲(chǔ),能夠高效地對(duì)時(shí)序數(shù)據(jù)進(jìn)行處理、存儲(chǔ)、查詢(xún),并提供了功能豐富的 Web 平臺(tái),可以對(duì)數(shù)據(jù)進(jìn)行可視化展示和交互式分析。
- Apache IoTDB:專(zhuān)為物聯(lián)網(wǎng)打造的分布式時(shí)序數(shù)據(jù)庫(kù),數(shù)據(jù)按列存儲(chǔ),具有優(yōu)秀的寫(xiě)入性能和豐富的數(shù)據(jù)分析功能,能夠有效地處理亂序數(shù)據(jù)。
- TDengine:專(zhuān)為物聯(lián)網(wǎng)場(chǎng)景設(shè)計(jì)和優(yōu)化的分布式時(shí)序數(shù)據(jù)庫(kù),數(shù)據(jù)按列存儲(chǔ),具有極致的寫(xiě)入性能和豐富的查詢(xún)功能,同時(shí)提供緩存、流處理、消息隊(duì)列等大數(shù)據(jù)平臺(tái)常用功能。其官網(wǎng)提到的不到10MB 的安裝包以及 10 倍的性能提升,確實(shí)非常吸引人。
- ClickHouse:性能強(qiáng)勁的 OLAP 數(shù)據(jù)庫(kù),數(shù)據(jù)按列存儲(chǔ),數(shù)據(jù)壓縮比極高,具有很高的寫(xiě)入吞吐和極致的查詢(xún)性能,同時(shí)提供了豐富的數(shù)據(jù)處理函數(shù),便于對(duì)數(shù)據(jù)進(jìn)行各種分析。
基于站端本地化部署需要輕量級(jí)資源占用出發(fā),我們首先排除了 OpenTSDB 和 Apache IoTDB,OpenTSDB 基于 HBase,比較重,而 Apache IoTDB 在資源占用方面對(duì)邊緣輕量級(jí)設(shè)備也不算友好;ClickHouse 優(yōu)勢(shì)是單表快,其他方面偏弱,包括 join、管理運(yùn)維都比較復(fù)雜,也放棄了。
研發(fā)團(tuán)隊(duì)最終圈定在 InfluxDB 和 TDengine 中測(cè)試選擇。
三、初步對(duì)比測(cè)試
技術(shù)團(tuán)隊(duì)實(shí)際對(duì)比測(cè)試了 InfluxDB 和 TDengine。
先來(lái)看 InfluxDB 的測(cè)試情況。
InfluxDB 的安裝包大小為 60.2 MB,運(yùn)行之后資源占用如下圖所示:

開(kāi)啟測(cè)試場(chǎng)站數(shù)據(jù)接入,當(dāng)前時(shí)刻,每分鐘寫(xiě)入字段數(shù)小于 3000,此時(shí)資源消耗情況如下圖所示,當(dāng)前 InfluxDB 消耗 CPU 有所上升,內(nèi)存資源變化不大。

通過(guò)如下命令測(cè)試查詢(xún)功能:

資源消耗情況如下圖所示:

同時(shí),當(dāng)前查詢(xún)會(huì)被卡住,所以沒(méi)有結(jié)果??梢?jiàn),在當(dāng)前資源配置條件下,InfluxDB 私有化部署資源消耗較高,若同時(shí)啟用本地應(yīng)用服務(wù)(SmartOPS),則無(wú)法提供所需功能。
再來(lái)看 TDengine 的測(cè)試情況。
我們使用的是 TDengine 2.1.6.0 版本。查看安裝包 TDengine-server-2.1.6.0-beta-Linux-x64.rpm 的大小,發(fā)現(xiàn)只有 9.42 MB。后端開(kāi)發(fā)人員將其部署到了測(cè)試節(jié)點(diǎn)上。
剛部署時(shí)的資源消耗如下:

模擬某場(chǎng)站數(shù)據(jù)接入時(shí),資源消耗如下:

然后測(cè)試查詢(xún)功能,在同樣條件下,TDengine 出現(xiàn) CPU 上的短時(shí)小幅上升,同時(shí)毫秒級(jí)獲取到了查詢(xún)返回結(jié)果。
從上述的初步測(cè)試中可以發(fā)現(xiàn),在本地化部署服務(wù)器資源受限的情況下,相比于 InfluxDB,TDengine 在站端系統(tǒng)的應(yīng)用上,性能具有明顯的優(yōu)勢(shì)。TDengine 能較好地應(yīng)對(duì)場(chǎng)站端低配服務(wù)器的資源限制問(wèn)題。對(duì)于大批量應(yīng)用的儲(chǔ)能場(chǎng)景,提供了高性?xún)r(jià)比的解決方案。
TDengine 針對(duì)物聯(lián)網(wǎng)應(yīng)用的場(chǎng)景特點(diǎn),比如數(shù)據(jù)極少有更新或刪除操作,無(wú)需傳統(tǒng)數(shù)據(jù)庫(kù)的事務(wù)處理,相對(duì)互聯(lián)網(wǎng)應(yīng)用寫(xiě)多讀少等,又通過(guò)“一個(gè)數(shù)據(jù)采集點(diǎn)一張表”和“超級(jí)表”的概念,簡(jiǎn)化了數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),這些優(yōu)化確實(shí)非常適合我們的方案。另外通過(guò)一些預(yù)計(jì)算功能,提高了聚合查詢(xún)效率,完全滿(mǎn)足我們站端資源有限情況下儲(chǔ)能場(chǎng)景的需求。
于是我們就嘗試在系統(tǒng)中落地了 TDengine。
四、TDengine 數(shù)據(jù)模型設(shè)計(jì)
儲(chǔ)能場(chǎng)站設(shè)備返回的數(shù)據(jù)格式基本固定,一個(gè)時(shí)間戳一個(gè)值。所以我們?yōu)橐粋€(gè)場(chǎng)站構(gòu)建了一張超級(jí)表。子表是根據(jù)點(diǎn)位的信息,一個(gè)點(diǎn)位一張子表,用于區(qū)分不同的設(shè)備采集的信息。結(jié)合業(yè)務(wù)需求,標(biāo)簽定為 5 個(gè):點(diǎn)的標(biāo)識(shí),場(chǎng)站 id,子站 id,單元 id 和設(shè)備 id。
超級(jí)表建表語(yǔ)句為:
create table ops (ts TIMESTAMP,value FLOAT) TAGS (name NCHAR(10),sid NCHAR(20),sub NCHAR(10),unit NCHAR(10),dev NCHAR(20))
子表建表語(yǔ)句為:
CREATE TABLE escngxsh02_g01_e03h01_c1 USING ops TAGS ("C1","ESCNGXSH02","G01","E03","E03H01")
在使用 InfluxDB 一周以后,使用 SQL 語(yǔ)句
select * from ops WHERE ts>1629450000000 and ts<1629463600000 limit 2;
來(lái)執(zhí)行查詢(xún),內(nèi)存使用率達(dá)到了 80%,并且過(guò)了十分鐘也沒(méi)出來(lái)結(jié)果,所以已經(jīng)完全不適合業(yè)務(wù)使用。 而在使用了 TDengine 近1個(gè)月后,使用相同的 SQL 語(yǔ)句,查詢(xún)只需要 0.2 秒。表現(xiàn)非常優(yōu)異。
五、TDengine 的使用情況
目前技術(shù)團(tuán)隊(duì)已采用 TDengine 作為 SCU(Station Control Unit) 架構(gòu)的核心時(shí)序數(shù)據(jù)庫(kù),實(shí)現(xiàn)儲(chǔ)能系統(tǒng)綜合信息感知、就地運(yùn)行控制與協(xié)調(diào)保護(hù)功能;同時(shí)支持儲(chǔ)能電站及設(shè)備的遠(yuǎn)程運(yùn)維,實(shí)現(xiàn)高級(jí)數(shù)據(jù)分析與運(yùn)行優(yōu)化,全方面守護(hù)儲(chǔ)能電站的安全。

TDengine 高性能的寫(xiě)入和聚合查詢(xún)功能,能夠毫秒級(jí)響應(yīng)電站運(yùn)行信息監(jiān)視。


在壓縮方面,TDengine 也表現(xiàn)得很優(yōu)秀。在采集點(diǎn)數(shù)量相同的情況下,在使用 TDengine 之前,我們使用的是 InfluxDB,1 天的數(shù)據(jù)量大概是 200 多 MB,而使用了 TDengine 后,1 天的數(shù)據(jù)居然不到 70 MB,是 InfluxDB 的 1/3。
我們還將在后續(xù)項(xiàng)目中,繼續(xù)拓展其分布式集群應(yīng)用,構(gòu)建儲(chǔ)能電站運(yùn)行情況的數(shù)字化檔案,結(jié)合開(kāi)發(fā)的分析算法、預(yù)測(cè)算法、數(shù)據(jù)挖掘技術(shù),實(shí)現(xiàn)電站穩(wěn)定性分析、效率和損耗分析、故障預(yù)測(cè)、壽命預(yù)測(cè)、性能短板定位以及熱管理分析等高級(jí)分析和診斷功能。



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



-1.png)




.png)


證.png)


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



