小 T 導讀:基于政務信息化自主(zhu)可控(kong)的(de)(de)要求,在(zai)與(yu)同類(lei)型數據庫進行性能對比后,廣(guang)東(dong)環境科學研(yan)究院的(de)(de)生態環境數據治(zhi)理服務項目選用 TDengine Database 強化了(le)其感知(zhi)層建設,精(jing)準及時地(di)對污染(ran)排(pai)放中的(de)(de)問題進行檢測和預警。本文講述了(le)他們的(de)(de)選型和建模思(si)路以及落(luo)地(di)后的(de)(de)效果展示。
公司簡介
廣(guang)東省環(huan)(huan)境科學研(yan)究院是一(yi)家(jia)綜合性研(yan)發機構(gou),擁(yong)有(you)環(huan)(huan)境工(gong)程(cheng)咨(zi)詢、工(gong)程(cheng)設計(ji)、環(huan)(huan)保工(gong)程(cheng)承包(bao)、實驗(yan)室計(ji)量認證(zheng)等(deng)多個(ge)資質(zhi),可(ke)(ke)開(kai)展區(qu)域可(ke)(ke)持續發展戰略、生(sheng)態(tai)環(huan)(huan)境規劃、生(sheng)態(tai)環(huan)(huan)境政策(ce)、生(sheng)態(tai)環(huan)(huan)境標準等(deng)研(yan)究,為解決區(qu)域重大(da)(da)生(sheng)態(tai)環(huan)(huan)境問題提供生(sheng)態(tai)環(huan)(huan)境風險(xian)、生(sheng)態(tai)環(huan)(huan)境工(gong)程(cheng)、生(sheng)態(tai)環(huan)(huan)境檢測和生(sheng)態(tai)環(huan)(huan)境大(da)(da)數(shu)據研(yan)究。

為解(jie)決(jue)國內環境(jing)質量管理(li)、污染源監管和數(shu)(shu)字政府等生(sheng)態(tai)環境(jing)數(shu)(shu)據(ju)(ju)的數(shu)(shu)據(ju)(ju)匯聚、數(shu)(shu)據(ju)(ju)清洗、數(shu)(shu)據(ju)(ju)質量管理(li)、數(shu)(shu)據(ju)(ju)重構、數(shu)(shu)據(ju)(ju)應用(yong)等一系列數(shu)(shu)據(ju)(ju)管理(li)工作,我(wo)們創建(jian)了生(sheng)態(tai)環境(jing)數(shu)(shu)據(ju)(ju)治(zhi)理(li)服務項目,幫助企(qi)業打(da)通所(suo)有相關的業務信息系統、建(jian)立數(shu)(shu)據(ju)(ju)倉庫,以大(da)數(shu)(shu)據(ju)(ju)技(ji)術為生(sheng)態(tai)環境(jing)的精(jing)準治(zhi)理(li)和智慧決(jue)策(ce)提供(gong)支撐(cheng)。
本項目的實時(shi)數倉架構如下圖所示,通(tong)過建設(she)生態(tai)環(huan)境感知層來及時(shi)捕獲環(huan)境質量實時(shi)狀態(tai)及實時(shi)的污(wu)染(ran)排(pai)放狀態(tai),獲取(qu)大(da)氣、地表水、近岸海域、固定(ding)(移動)污(wu)染(ran)源污(wu)染(ran)排(pai)放等業務(wu)中(zhong)的實時(shi)監測數據(ju),利(li)用大(da)數據(ju)技術手段進行分析研判,對(dui)可能發生的環(huan)境事件進行預警。

同時,為避免重復建設,在項目中我們建立了生態環境實時數據倉庫,采用集中式的采集、歸聚、分析和數據服務,可有效利用資源和技術,獲得最直觀的技術成效。
一、從關系型數據庫到 TDengine
與一般的(de)(de)數據(ju)存(cun)(cun)儲(chu)要(yao)求(qiu)不同,該(gai)項目感知層的(de)(de)存(cun)(cun)儲(chu)方(fang)案對數據(ju)讀寫頻度和低延時要(yao)求(qiu)更高,同時由于(yu)數據(ju)量極(ji)大(da),還(huan)需要(yao)更高的(de)(de)存(cun)(cun)儲(chu)效率。
以(yi)重點排污單位自(zi)動監測 30 秒(miao)數(shu)(shu)(shu)據(ju)(ju)為例,全省近 5000 個(ge)監測點,每個(ge)監測點 3-5 個(ge)監測因子。多年(nian)來,我(wo)(wo)們(men)一(yi)直采(cai)用關系(xi)型數(shu)(shu)(shu)據(ju)(ju)庫(ku)進行數(shu)(shu)(shu)據(ju)(ju)存儲,最多只能保留 3-5 天的(de)數(shu)(shu)(shu)據(ju)(ju),不(bu)(bu)得不(bu)(bu)按天刪除舊數(shu)(shu)(shu)據(ju)(ju)。之后(hou)考(kao)慮過(guo)采(cai)用 PostgreSQL 的(de) TimescaleDB 擴展(zhan),但卻不(bu)(bu)滿足政務信息化自(zi)主可控的(de)要求(qiu);還曾嘗試(shi)過(guo)使(shi)用國內的(de)某款時序數(shu)(shu)(shu)據(ju)(ju)庫(ku)產(chan)品,但其(qi)在性(xing)能及通用接口方面離(li)我(wo)(wo)們(men)的(de)要求(qiu)尚有(you)一(yi)定的(de)距離(li)。
在初次接觸 TDengine Database 之時,因為產品太新了,我們還有點遲疑。但好在 TDengine 易于安裝、文檔齊備,作為一款開源產品,產品支持卻并不弱,還有專門的微信技術群,出現問題時會有濤思數據的技術人員或社區大佬提供幫助,使我們的整個評估過程非常順暢。最終,經過很長一段時間的研究和測試,我們選定了這款國產開源時序數據庫 TDengine。
二、TDengine 的落地實踐與性能表現
在(zai)實(shi)(shi)際(ji)落地時(shi),我們選用(yong)了(le) 3 臺 4 核 8G、1 臺 8 核 16G、1 臺 8 核 32G 的服務器,—共 5 臺,搭(da)建了(le)一(yi)個 5 節點(dian)(dian)單副本的集群。目前已(yi)投入(ru)運(yun)營的業務線有三條,包括(kuo)重點(dian)(dian)排污單位自動監(jian)測系統(tong) 30 秒數(shu)據(ju)(ju)(ju)報送(song)、重型(xing)柴油(you)車 OBD 實(shi)(shi)時(shi)數(shu)據(ju)(ju)(ju)報送(song)和 VOCs 排污企業實(shi)(shi)時(shi)監(jian)測數(shu)據(ju)(ju)(ju)報送(song),后續還(huan)會陸續增(zeng)加(jia)各(ge)種環(huan)境質量(liang)自動監(jian)測的數(shu)據(ju)(ju)(ju)報送(song)業務,以及數(shu)據(ju)(ju)(ju)分(fen)析(xi)和數(shu)據(ju)(ju)(ju)應(ying)用(yong)業務。
從 2021 年 4 月運行至今(2022 年 1 月),本項目共創建了 4 張超級表以及 67,453 張子(zi)表。



接下來(lai),我們以重(zhong)點排污企(qi)業(ye)廢氣排放 30 秒監測數據為例(li)說明(ming)存(cun)儲情況。
st_om_rtd_gas 表是我們針對廢氣處理所創建的超級表,其中存儲了 76.5 億條數據(四張超級表總共 160 億條數據),分散在 19,419 張子表中,平均每張表 39 萬行。由于 TDengine 超級表特性,再加上列式存儲和超高的壓縮能力,這些數據僅占用了 240G 內存,不僅幫(bang)助我們節省了大量的(de)存儲空(kong)間,也為數據查(cha)詢性能打下了良(liang)好(hao)的(de)基礎。
在查詢方面,我(wo)們(men)主要的(de)(de)邏輯是獲取近期的(de)(de)最(zui)大(da)(da)(da)系列(lie)值,過(guo)濾后按不同監(jian)測(ce)因子的(de)(de)限定值獲取監(jian)測(ce)因子列(lie)表,再通(tong)過(guo)降(jiang)采樣查詢該監(jian)測(ce)因子小時最(zui)大(da)(da)(da)值、日最(zui)大(da)(da)(da)值或月最(zui)大(da)(da)(da)值。之后將(jiang)查詢范圍(wei)瞄準具體的(de)(de)排(pai)放口(kou),確定一段時間(jian)以來排(pai)污濃度或流量偏高的(de)(de)排(pai)放口(kou)列(lie)表,再對該排(pai)放口(kou)具體時間(jian)范圍(wei)內每一個排(pai)放濃度進(jin)行分析,獲得(de)其排(pai)污異(yi)常的(de)(de)詳(xiang)細信(xin)息。TDengine 以優異(yi)的(de)(de)性能非(fei)常成功地完(wan)成了上(shang)述查詢分析過(guo)程(cheng)。
反饋到具(ju)體操作上,主要有如下三種(zhong)情況:
SELECT top(val_zs, 20) FROM st_om_rtd_gas
WHERE moni_time >= NOW - 2h
GROUP BY pol_code;

對于 76 億行的超級表,分組 TOP 查詢僅用了 0.2 秒。
SELECT MAX(val_zs) FROM st_om_rtd_gas
WHERE moni_time >= NOW -2h AND pol_code in ('002’,'‘010')
INTERVAL(1h) GROUP BY ps_code,p_code,pol_code;

基于 TDengine 返回 2,968 行,僅用了 0.06 秒。
接著從(cong)返回結果中(zhong)抽出可疑的排(pai)放口(kou)列表,查看具體的排(pai)放情況:
SELECT val, val_zs, ps_name, p_name, pol_name, strength_unit FROM st_om_rtd_gas
WHERE ps_code = 440000000168 AND p_code = 1101 AND moni_time >= '2021-12-27 00:00:00.000';

返回 5,280 行數據,僅用了 0.1 秒,性能完全超出了我們的預期。
值得一提的是,由于目前我們使用的是自己機房的虛擬機,硬件使用時間較久,但是 TDengine 的性能仍然不受影響。近期我們打算遷移到政務云平臺,相信 TDengine 的性能將再上一個臺階。
三、下一步,基于 TDengine 落實邊緣層建設
使用 TDengine Database 數月以來(lai),其無論是(shi)在(zai)(zai) CPU 負載、數據存儲效率(lv)上,還是(shi)在(zai)(zai)數據采集效率(lv)、數據查詢效率(lv)上都遠(yuan)高于期望值,滿足實時數倉的(de)所(suo)有(you)要求。在(zai)(zai)生(sheng)態環境數據治(zhi)理過(guo)程(cheng)中,TDengine 強化了感知(zhi)層建(jian)設,能夠精準(zhun)及時地(di)發現污染排放(fang)中的(de)問題,在(zai)(zai)污染防控(kong)場(chang)景(jing)下具有(you)極大的(de)潛力。
下一步,我們將充分利用 TDengine 的強大功能,落實邊緣層建設,具體實現思路為:通過 TDengine 的訂閱功能捕捉數據的異動信息,然后在邊緣側立即處理,從而完全補上當前實時污染防控上的短板。
來而(er)不往非禮也,在此寫下這篇用戶案例(li),預祝 TDengine 能夠越(yue)(yue)來越(yue)(yue)好,也希望有越(yue)(yue)來越(yue)(yue)多的(de)用戶能加入到 TDengine 的(de)社區互(hu)動當中。
作者簡介:
沈華(hua)烈(lie),系統分析(xi)師(shi),有近 20 年環境信(xin)息化從業經歷。目前就職于廣東省環境科(ke)學(xue)研(yan)究院環境信(xin)息研(yan)究所。


























