在我們的“海外某儲能項目”項目中,需要實時監測電池安全,采集記錄每次使用的充放電過程、電流/電壓等值,而此類數據都帶有時間戳,是典型的時序數據。為了應對未來海量的用戶使用數據,我們需要選擇一款專業的時序數據庫(Time Series Database)。
我(wo)們的業(ye)務屬于(yu)海(hai)外,去(qu)年是(shi)通過 2.x 版本(ben)(ben)在(zai)海(hai)外本(ben)(ben)地化(hua)部署(shu)(shu),但由(you)于(yu)維護(hu)團隊位于(yu)國內,首先在(zai)網絡通信上就(jiu)有不(bu)小的麻煩(fan)。其次(ci),由(you)于(yu)部署(shu)(shu)的是(shi)開源版 TDengine ,需要自己部署(shu)(shu)優化(hua)、學習(xi)文檔、通過社區反饋(kui)問題等(deng)等(deng),有不(bu)少的時間成本(ben)(ben)。后來, TDengine 官方(fang)于(yu)今年初發布的時序(xu)數(shu)據云平臺(tai) 便進入了(le)我(wo)們的視野。由(you)于(yu)我(wo)們當前業(ye)務量并(bing)不(bu)大,因此對我(wo)們來說 TDengine Cloud 最直觀的幫助就(jiu)是(shi):全托管。

云服(fu)務(wu)附(fu)帶和 TDengine 企(qi)業版同級別的服(fu)務(wu),因此我們不再(zai)需要擔(dan)心(xin)部署、優化(hua)、擴容、備份(fen)、異地(di)容災等事務(wu),減少了我方開發人員的負(fu)擔(dan),可全(quan)心(xin)關(guan)注(zhu)核心(xin)業務(wu)。由于我們的設備量暫時不多,根據官方現有(you)的定價規則,基礎版本便可滿足。在經過(guo)計費(fei)方案估(gu)算器計算后,最終我們選擇(ze)了 1200 元/月的基礎版規格。


我們針(zhen)對每(mei)個儲能設(she)備單(dan)獨(du)建表(biao),一(yi)(yi)(yi)類儲能設(she)備建立一(yi)(yi)(yi)個超級表(biao),包括用電量、充電量、用電狀態、充電狀態等指標,共一(yi)(yi)(yi)百余列,每(mei)個設(she)備 7*24h 地(di)以每(mei) 10 秒一(yi)(yi)(yi)行的(de)頻率寫(xie)入數據(ju)庫。通過“數據(ju)瀏覽(lan)器”的(de)頁面,可(ke)以很輕松地(di)看到庫/表(biao)的(de)元(yuan)數據(ju)信(xin)息:

寫入能力分析
TDengine 根據(ju)時(shi)序數(shu)據(ju)的特(te)征專門設計的一個設備一張表、列式壓縮(suo)、標簽(qian)這幾個強(qiang)大的創新點,從根本上解(jie)決了數(shu)據(ju)寫(xie)入需要加鎖、行式壓縮(suo)效率低(di)、靜態數(shu)據(ju)冗余(yu)存(cun)儲(chu)這幾大難(nan)題。
我們(men)的(de)數(shu)據處理流程如下(xia)(xia)圖所示,某類(lei)儲能設(she)備(bei)產(chan)生(sheng)(sheng)的(de)時序(xu)數(shu)據會(hui)以 MQTT 方(fang)式上傳,其中業務數(shu)據轉(zhuan)發給(gei) PostgreSQL,設(she)備(bei)產(chan)生(sheng)(sheng)的(de)時序(xu)數(shu)據以及設(she)備(bei)運行日志、設(she)備(bei)狀態(tai)數(shu)據轉(zhuan)給(gei) TDengine。中臺(tai)各(ge)系統則(ze)會(hui)統一規(gui)劃使(shi)用(yong)這些數(shu)據庫中的(de)數(shu)據,來用(yong)于分析計算,也可以直接(jie)控(kong)制設(she)備(bei)下(xia)(xia)發指令(ling)。最終,借助 PC Web、APP 以及其他管理平(ping)臺(tai)等(deng)軟件方(fang)式在前(qian)端體現。

在測試階段(duan),TDengine 的數據壓縮(suo)率可以輕松(song)達到 10% 以內,每秒可以寫(xie)入數百萬行數據。在具體實踐中也(ye)很好地達到了這個寫(xie)入效果。
除了寫入(ru)和壓(ya)縮性能,TDengine 的(de)查(cha)詢能力也是我們比較關注的(de)。
查詢效果分析
為了(le)提(ti)供(gong)高質量的售后服務以及(ji)提(ti)升用戶使(shi)用體(ti)驗,科學合理地(di)使(shi)用上述寫入(ru)的數(shu)據,我(wo)們會做很多類(lei)型的查詢,比(bi)如監測用電產品(pin)的健(jian)康狀(zhuang)態(tai)、分析設(she)備用電量趨勢、使(shi)用壽命(ming)等等。
以(yi)下(xia)是(shi)幾個典型(xing)的查詢:
1. 利用(yong)會話(hua)窗(chuang)口統(tong)計每一段連續時間間隔小于等(deng)于 1 分(fen)鐘時間內的單設備輸入(ru)功率之和(he):
select FIRST(ts) firstTs, LAST(ts) lastTs, count(*) countVal, sum(input_total_power) totalPower
from device_data_58CF7920B63C where ts >= '2023-08-09T00:00:00.000Z'
and ts< '2023-08-10T00:00:00.000Z' SESSION(ts, 1m)

2. 通(tong)過 interval 查看設備輸(shu)入(ru)功率的趨勢,并且使用了 offset 時(shi)區的偏移(yi):
select _WSTART as ts, avg(inverter_power) avgVal, min(inverter_power) minVal, max(inverter_power) maxVal
from gendome.device_data_58CF7920B63C where inverter_power > 0 and ts >= '2023-08-09T00:00:00.000Z'
and ts< '2023-08-10T00:00:00.000Z'
interval (1d, 960m) FILL (NULL)

由于我們的(de)(de)應(ying)(ying)用與 TDengine Cloud 所(suo)屬同一個 AWS region ,所(suo)以通過使(shi)用 Private Link 功(gong)能,我們的(de)(de)應(ying)(ying)用網(wang)絡(luo)與云服務進行了私(si)密通信,而(er)無需將數據(ju)通過公網(wang)傳輸,大(da)大(da)降(jiang)低了寫入方面的(de)(de)延遲,同時也(ye)進一步節(jie)約了由網(wang)絡(luo)流量產生(sheng)的(de)(de)費用。
寫在最后
TDengine 的定(ding)位一直都是(shi)“大數據”的處理平(ping)臺(tai),尤其(qi)是(shi) 3.0 版(ban)本(ben)和 2.0 相比有很多的底(di)層變(bian)化(hua),甚至可以支持 10 億級別(bie)的表數量。
對我(wo)(wo)們(men)這個(ge)體(ti)量相(xiang)對較小的場景來說,TDengine Cloud 按量計(ji)費(fei)加全托管的企業級服務(wu)讓我(wo)(wo)們(men)用非(fei)常小的成本便(bian)運轉了這個(ge)項目,并(bing)且極大地增加了產品的效率并(bing)保留了隨時擴張的靈活性。此外,數據分(fen)享、流式計(ji)算這些有趣的特性也等待我(wo)(wo)們(men)進行更深一(yi)步地挖掘(jue)。
關于國軒高科
國(guo)軒高科(ke)(股票代碼:002074),是全(quan)球領先的(de)新(xin)能源(yuan)解決(jue)方(fang)案提(ti)供商,專(zhuan)注于鋰離子動力電池和儲(chu)能電池的(de)研發、生產(chan)與(yu)銷售,綜合實力位(wei)居中國(guo)乃至全(quan)球前列(lie)。
關于本文作者
劉志成,國軒(xuan)高科(ke)某儲能產品部平臺架(jia)構師(shi),多(duo)年從事能源物聯網行業。


























