小T導讀:中(zhong)節(jie)能風(feng)(feng)力(li)發電(dian)(dian)股(gu)(gu)份(fen)有限公(gong)司(股(gu)(gu)票簡稱:節(jie)能風(feng)(feng)電(dian)(dian),股(gu)(gu)票代碼:601016)是(shi)(shi)中(zhong)國節(jie)能環(huan)保集團有限公(gong)司控股(gu)(gu)的(de)現代股(gu)(gu)份(fen)制公(gong)司。公(gong)司先后成功中(zhong)標并示(shi)(shi)范(fan)建設了(le)國家第(di)一個百萬千瓦(wa)(wa)(wa)(wa)級風(feng)(feng)電(dian)(dian)基地(di)啟(qi)動(dong)項(xiang)(xiang)目——河北張北單晶河200兆瓦(wa)(wa)(wa)(wa)風(feng)(feng)電(dian)(dian)特(te)許(xu)權項(xiang)(xiang)目,和第(di)一個千萬千瓦(wa)(wa)(wa)(wa)級風(feng)(feng)電(dian)(dian)基地(di)啟(qi)動(dong)項(xiang)(xiang)目——甘(gan)肅(su)玉門昌馬200兆瓦(wa)(wa)(wa)(wa)風(feng)(feng)電(dian)(dian)特(te)許(xu)權項(xiang)(xiang)目,是(shi)(shi)國家首個百萬千瓦(wa)(wa)(wa)(wa)、千萬千瓦(wa)(wa)(wa)(wa)風(feng)(feng)電(dian)(dian)基地(di)的(de)示(shi)(shi)范(fan)者(zhe)和引領者(zhe),在(zai)業(ye)內樹立了(le)較高的(de)知名度和良(liang)好的(de)品牌形象。建成、在(zai)建項(xiang)(xiang)目裝機規模547.97萬千瓦(wa)(wa)(wa)(wa),已發展成為張北壩(ba)上地(di)區、甘(gan)肅(su)河西走廊地(di)區最大(da)的(de)風(feng)(feng)電(dian)(dian)開發商(shang)之(zhi)一,是(shi)(shi)我(wo)國風(feng)(feng)電(dian)(dian)領域(yu)一支重要的(de)力(li)量。
一、項目背景
公司作為中節能集團在風電(dian)領域的(de)專業化(hua)公司和核心上市平臺,具備成熟(shu)的(de)風電(dian)開(kai)發和運(yun)維(wei)經驗,但是隨(sui)著在建風場逐(zhu)步增多以及(ji)各類新(xin)型(xing)傳感器(qi)的(de)加裝,傳統運(yun)維(wei)方式已經越(yue)來越(yue)吃力,數(shu)(shu)(shu)字化(hua)智能化(hua)的(de)需求越(yue)來越(yue)強烈,因(yin)此迫切需要基于(yu)海(hai)量時序數(shu)(shu)(shu)據(ju)的(de)數(shu)(shu)(shu)據(ju)平臺來支撐繁雜的(de)運(yun)維(wei)工作。
因此,我們做了大量的時序數據調研工作。但是選型工作也并非一帆風順,開始我們嘗試傳統的工控時序數據庫(Time-Series Database),但(dan)是隨著測(ce)點數(shu)(shu)量的(de)增多,單機版架構已(yi)經無力(li)支撐(cheng),后期(qi)我們也(ye)嘗試了InfluxDB和OpenTSDB等(deng)分(fen)布式架構的(de)時序數(shu)(shu)據庫,但(dan)是性能又達不到(dao)要求。
機遇巧合,我們注意到一款國產、開源的時序數據庫TDengine,所以(yi)也嘗試了(le)一下(xia)。
二、TDengine選型測試
針(zhen)對我(wo)們重點(dian)關(guan)注的查詢性能,我(wo)們做了(le)如下幾個測(ce)試。
1. 單測點歷史數據聚合查詢
隨機選擇任一個測點,查(cha)詢(xun)該測點在某(mou)個時間段測點采集值的(de)count,max,min,avg;比如從2020-01-01 00:00:00.000 到 2020-02-01 00:00:00.000的(de)31天內的(de)共535680條(tiao)數據記錄的(de)count,max,min,avg。具體(ti)的(de)查(cha)詢(xun)語句為:
select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts>='2021-08-15 00:00:00.000' and ts<'2021-08-16 00:00:00.000'
實驗截圖如下:

3次(ci)查詢(xun)測試(shi)時延如(ru)下(xia):
| 測試批次 | 時延(秒) |
| 1 | 0.635000 |
| 2 | 0.145000 |
| 3 | 1.492000 |
| 平均值 | 0.7573333333333333 |
2. 分組聚合查詢
查詢(xun)某個時(shi)間(jian)段(duan)內(nei)測點(dian)采(cai)集值的(de)count,max,min,avg,比如查詢(xun)從(cong)2020-01-01 00:00:00.000 到 2020-02-01 00:00:00.000的(de)31天內(nei)的(de)數據記(ji)錄的(de)count,max,min,avg。數據庫中對應查詢(xun)語句為:
select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts >='2021-08-01 00:00:00.000' and ts<'2021-09-01 00:00:00.000' group by wtcode >>E:/taosTempData/2
實驗截圖如下:

3次查(cha)詢(xun)測試時延如下(xia):
| 測試批次 | 時延(秒) |
| 1 | 0.040000 |
| 2 | 0.661000 |
| 3 | 0.099000 |
| 平均值 | 0.26666 |
3. 窗口查詢操作
查(cha)詢某個時(shi)間段內(nei),按照1小(xiao)時(shi)、1天、10天的(de)(de)時(shi)間窗口(kou)進行分組(zu)后的(de)(de)count,max,min,avg聚(ju)合結果;比如查(cha)詢從2020-01-01 00:00:00.000 到 2020-02-01 00:00:00.000的(de)(de)31天內(nei)的(de)(de)全部數據(ju)記(ji)錄,按照每1小(xiao)時(shi)、1天、10天的(de)(de)時(shi)間區間劃(hua)分后的(de)(de)count,max,min,avg。
數據庫中對應查詢語句為:
select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts >='2021-08-01 00:00:00.000' and ts<'2021-09-01 00:00:00.000' and wtcode ='001' interval (1h) >>E:/taosTempData/3;
select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts >='2021-08-01 00:00:00.000' and ts<'2021-09-01 00:00:00.000' and wtcode ='001' interval (1d) >>E:/taosTempData/4;
select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts >='2021-08-01 00:00:00.000' and ts<'2021-09-01 00:00:00.000' and wtcode ='001' interval (10d) >>E:/taosTempData/5;
實驗截圖如下:

多(duo)個批次查詢測(ce)試時延(yan)如下:
| 測試批次 | 時延(秒) |
| interval(1h)第1次查詢 | 0.107000 |
| interval(1h)第2次查詢 | 0.060000 |
| interval(1h)第3次查詢 | 1.072000 |
| Interval(1h) 平均值 | 0.413 |
| 測試批次 | 時延(秒) |
| interval(1d)第1次查詢 | 0.041000 |
| interval(1d)第2次查詢 | 0.087000 |
| interval(1d)第3次查詢 | 1.615000 |
| Interval(1d) 平均值 | 0.581 |
| 測試批次 | 時延(秒) |
| interval(10d)第1次查詢 | 0.072000 |
| interval(10d)第2次查詢 | 0.026000 |
| interval(10d)第3次查詢 | 0.020000 |
| Interval(10d) 平均值 | 0.03933 |
經過反復對比測(ce)試以及應用(yong)適配,最終我們(men)選定TDengine作為我們(men)數(shu)據平臺的(de)時序數(shu)據解決方案。
三、TDengine Database落地實踐
目(mu)前中節能風電的整體時序數據流如下圖所示:

風(feng)場(chang)的時序(xu)數(shu)(shu)(shu)(shu)據(ju)(主要是風(feng)機數(shu)(shu)(shu)(shu)據(ju)和(he)電(dian)氣(qi)數(shu)(shu)(shu)(shu)據(ju))穿透網(wang)閘(zha)后,經由場(chang)站(zhan)側的采集程序(xu)采集和(he)轉發,最終所有數(shu)(shu)(shu)(shu)據(ju)會匯聚到集團(tuan)側的分布式時序(xu)數(shu)(shu)(shu)(shu)據(ju)庫,前端的實時監視、指標計算均構建于其上(shang),同(tong)時數(shu)(shu)(shu)(shu)據(ju)還(huan)要送(song)到大(da)數(shu)(shu)(shu)(shu)據(ju)分析平(ping)臺和(he)生產(chan)運維平(ping)臺。
集團中心側的TDengine集群起到(dao)了舉足輕重(zhong)的作用,既(ji)要收(shou)集所(suo)有風場的時序數據,同時還要支撐前端應用以及同步數據到(dao)其它系(xi)統。
TDengine的諸多特性中,最吸引我們的是超級表和標簽功能。超級(ji)表能讓同一類(lei)風(feng)(feng)機的建模、管理和計算過程更加(jia)方便(bian)快捷,而標簽(qian)特性能增加(jia)諸如(ru)(ru)隸(li)屬項目、平臺容量等(deng)維(wei)度特征(zheng),便(bian)于在聚合操作過程中快速篩選或者(zhe)分組。基(ji)于時間窗(chuang)口和狀態(tai)窗(chuang)口的功能也為應用構(gou)建提供了很多(duo)方便(bian),比如(ru)(ru)功率曲(qu)線(xian)擬合過程中需要的五分鐘平均風(feng)(feng)速和功率計算邏輯,以及基(ji)于風(feng)(feng)機狀態(tai)的各類(lei)統計分析。
在TDengine的使用初期遇到了一些問題,主要涉及集群搭建(jian)和參數配置方面,經過和濤思(si)數據技(ji)術(shu)團隊的溝通交流,都已(yi)得到解決。
后期在數據建模和應用(yong)(yong)適配方(fang)面也(ye)走了(le)一些彎路,尤(you)其是(shi)數據建模(mo)方(fang)面。最開始(shi)我們(men)使用(yong)(yong)的(de)是(shi)最簡(jian)單(dan)的(de)單(dan)列(lie)模(mo)式(shi),一個測(ce)(ce)點(dian)一張表(biao),在(zai)測(ce)(ce)點(dian)數目少的(de)情(qing)況下問題(ti)并不明顯,但是(shi)隨(sui)著測(ce)(ce)點(dian)數目的(de)不斷(duan)膨(peng)脹,這(zhe)種方(fang)式(shi)逐(zhu)漸暴露(lu)出在(zai)應用(yong)(yong)適配方(fang)面的(de)問題(ti);后來(lai)我們(men)采(cai)取(qu)按照不同(tong)機型不同(tong)風(feng)場(chang)建超(chao)級表(biao)的(de)方(fang)式(shi)建模(mo),基本能解決我們(men)的(de)應用(yong)(yong)問題(ti),但是(shi)依然有無效(xiao)開關量數值(zhi)過多的(de)問題(ti);最終我們(men)采(cai)取(qu)將風(feng)機狀態等(deng)重點(dian)開關量單(dan)列(lie)建模(mo)的(de)方(fang)式(shi)解決了(le)。
四、整體效果和未來展望
目前基(ji)于TDengine數(shu)據(ju)庫我們構(gou)建了中(zhong)節(jie)能風電(dian)運維平臺,使用后數(shu)據(ju)存(cun)儲優勢明(ming)顯,整體(ti)壓縮(suo)比在7-8倍,數(shu)據(ju)查詢也實現秒級響應。整體(ti)使用效果(guo)如下圖所(suo)示:

未(wei)來(lai)我們(men)考(kao)慮在(zai)每個風(feng)電(dian)場(chang)站的(de)三區部署一個單(dan)節點(dian)TDengine,作用不(bu)只是采集和(he)轉(zhuan)發,還要起到(dao)時序數據質量治理以及(ji)實時模型預測的(de)功能;而在(zai)集團側我們(men)會考(kao)慮基(ji)于TDengine構(gou)建更(geng)多更(geng)復雜的(de)計算(suan)指(zhi)標和(he)高級模型;同(tong)時還要和(he)任(ren)務調(diao)度引擎以及(ji)風(feng)電(dian)行業(ye)標準集成。未(wei)來(lai)的(de)數據流圖(tu)如下圖(tu)所示:

最終將其作為中(zhong)(zhong)節(jie)能(neng)風(feng)電(dian)(dian)公司時序數據(ju)的(de)核心(xin)技術組件來構建智能(neng)運(yun)維平臺,為中(zhong)(zhong)節(jie)能(neng)風(feng)電(dian)(dian)公司3060雙(shuang)碳目標的(de)提供(gong)堅(jian)實基礎。
作者介紹:
潘文彪(biao),中(zhong)節能風電(dian)生產運維部數(shu)據分(fen)析(xi)師,2019年起(qi)從(cong)事節能風電(dian)的(de)數(shu)據分(fen)析(xi)與數(shu)字化平臺(tai)建設(she)工作。


























