小T導讀:江蘇金恆信息科技股份有限公司(以下簡稱“金恆科技”)專注於為工業企業提供工業軟件及智能化整體解決方案,服務領域涵蓋鋼鐵、有色金屬、石化、電子製造等多個行業。早在 2021 年,金恆科技便在多個業務系統中部署了 TDengine TSDB 2.x 版本。隨着 TDengine TSDB 3.x 的發佈,金恆科技陸續完成了系統升級至 3.0 版本,在性能、功能和穩定性方面均得到進一步提升。升級後系統整體性能提升約 3 倍,存儲成本降低約 80%。本文將重點介紹 TDengine 時序數據庫在鋼鐵行業智能製造項目中的具體應用實踐。
背景和痛點 
金恆科技的智能製造項目覆蓋鋼鐵生產的全流程數據採集與分析,包括高爐、軋機及各類傳感器的實時監測,監控指標涵蓋温度、壓力、振動等關鍵參數。系統每日處理約 350 億條數據點,需同時支持實時查詢、歷史分析與異常告警。
項目面臨的核心挑戰包括:
- 數據量激增:傳統數據庫在處理億級時序數據時,查詢延遲顯著、存儲成本高昂;
- 複雜查詢需求:需支持多維度聚合查詢和跨表關聯,傳統數據庫性能瓶頸明顯;
- 運維複雜性高:原有系統需大量服務器資源,運維成本高,擴展性差。
為應對上述挑戰,我們決定引入高性能時序數據庫。TDengine TSDB 以其高壓縮比、原生 SQL 支持和集羣部署能力,成為首選解決方案。
選擇 TDengine TSDB 的原因
在選型過程中,我們的目標非常明確:一是追求高性能,要能支撐億級數據點的高速寫入與查詢;二是實現低成本,在保證性能的同時顯著降低存儲和服務器資源消耗;三是強調易用性,要求系統支持標準 SQL,從而降低開發與運維的複雜度;最後是確保高可用性,能夠通過集羣部署保障系統在長週期運行中的穩定與可靠。
在正式引入前,我們對業界主流的三款時序數據庫——InfluxDB、TimescaleDB 和 TDengine TSDB 進行了相關調研。結果如下:
- InfluxDB:查詢性能尚可,但存儲壓縮比低,成本較高;不支持標準 SQL,開發複雜。
- TimescaleDB:基於 PostgreSQL,SQL 支持較好,但高併發寫入性能不足,集羣部署複雜。
- TDengine TSDB:高壓縮比(10:1),支持標準 SQL,內置緩存和多級存儲,集羣部署簡單,運維成本低。
綜合對比後,我們發現 TDengine TSDB 在性能與可維護性之間實現了最佳平衡,顯然是我們的最優選擇。
TDengine TSDB 應用經驗分享
重點使用功能—多級存儲
在工業互聯網中,數據多級存儲至關重要,因為它能夠根據數據的價值和使用頻率,將數據有效地分配到不同的存儲介質上。這樣的策略不僅有助於應對海量數據的挑戰,優化存儲資源,降低成本,還能確保數據的安全性和合規性,同時促進數據的共享和流通,從而提高整個工業系統的效率和響應速度。
在使用企業版之前,我們就已經開始使用社區版本的 TDengine TSDB 了,對其架構與特性有較深入的瞭解。因此在規劃集羣存儲架構時,我們就決定採用 SSD + HDD 的多級存儲方案:將近期數據存放在 SSD 上,以顯著提升數據寫入與查詢性能。同時,TDengine 支持靈活的分層數據保留策略,每一層的保留時間都可動態調整——只需通過一條 ALTER 命令修改數據庫的 KEEP 參數即可即時生效,極大地方便了運維管理。
在當前架構中,我們將數據劃分為四個層級進行存儲:
- 熱數據(Hot Data):存儲在 RAM(內存)中,通常指的是最近一小時內的數據。這部分數據訪問頻率高,需要快速讀寫。
- 温數據(Warm Data):存儲在 SSD(Tier 0)上,涵蓋最近 10 天內的數據。相比熱數據,温數據的訪問頻率較低,但仍需較快的讀取速度。
- 冷數據(Cold Data):存儲在 HDD(Tier 1)上,包括最近 6 個月的數據。這類數據訪問頻率進一步降低,可以使用成本更低的存儲介質。
- 凍結數據(Frozen Data):存儲在 S3(Tier 2)上,通常是最近 3 年的數據。這部分數據訪問頻率最低,適合長期存儲。
 
 
重點使用功能—內置函數
TDengine TSDB 內置了豐富的函數庫,我們在實際業務中也充分利用了其中的多種函數來滿足不同的場景需求。 例如,interp() 函數在我們的應用中就發揮了重要作用。它可用於在指定的時間斷面上獲取某一列的記錄值;當該時間點不存在符合條件的數據時,系統會根據 FILL 參數的設置自動進行插值,從而保證數據的連續性與完整性。
- 在 2017-07-14 18:00:00 到 2017-07-14 19:00:00 間每隔 5 秒鐘進行線性插值
SELECT INTERP(current) FROM t1 RANGE('2017-7-14 18:00:00','2017-7-14 19:00:00') EVERY(5s) FILL(LINEAR);
- 在所有時間範圍內每隔 5 秒鐘進行向後插值
SELECT INTERP(current) FROM t1 EVERY(5s) FILL(NEXT);
- 根據 2017-07-14 17:00:00 到 2017-07-14 20:00:00 間的數據進行從 2017-07-14 18:00:00 到 2017-07-14 19:00:00 間每隔 5 秒鐘進行線性插值
SELECT INTERP(current) FROM t1 where ts >= '2017-07-14 17:00:00' and ts <= '2017-07-14 20:00:00' RANGE('2017-7-14 18:00:00', '2017-7-14 19:00:00') EVERY(5s) FILL(LINEAR);
TDengine TSDB 的落地實踐 
在我們的智能製造平台中,我們將 TDengine TSDB 作為核心的時序數據存儲,與 Data Acquisition 數據採集系統、RuleEngine 規則引擎以及前端可視化系統深度集成,實現了從數據採集、存儲、分析到展示的完整閉環。
落地效果
- 寫入性能:支持 200 萬條/秒寫入,滿足實時數據採集需求。
- 查詢性能:最新數據查詢達到 10 ms 級別,支持複雜聚合查詢。
- 訂閲功能:通過 TDengine TSDB 的訂閲機制,實時推送異常數據至告警系統。
- 多級存儲:企業版支持熱/温/冷存儲,90% 數據存儲在低成本冷存儲中,降低成本。
業務場景與收益
- 實時監控:支持 10,000 台設備實時數據展示,響應時間 < 200ms。
- 故障預測:通過振動數據分析,故障預測準確率提升 20%。
- 能耗分析:日均能耗分析時間從 10 分鐘縮短至 2 分鐘。
- 收益:节省存儲和運維成本,系統可用性提升至 99%。
問題與優化 
在 2021 年測試 TDengine TSDB 2.x 版本時,我們發現 TDengine TSDB 在以下幾個功能上還不支持,希望 其未來能夠新增這幾個功能,經過與官方支持人員的討論,他們認為這幾個需求完全合理,TDengine 也快速進行了功能開發,並在新版本中進行了發佈。理解、聽取用户的建議非常重要,不僅可以完善產品的的功能,也讓用户使用更加方便,這使我們更加堅定了使用 TDengine TSDB 的信心。這幾個功能分別是:
- 支持動態增加 binary、nchar 數據類型的列長度
TDengine TSDB 支持 BINARY 和 NCHAR 兩種字符串類型,但在 2.0 早期版本中,超級表一旦創建後,如果某些列(包括數據列和 TAG 列)的長度設置偏小,就無法動態調整,這在使用中帶來了一定限制。TDengine 研發團隊在短時間內就完成了功能優化,實現了動態調整字符串列長度的能力。
- 2.x 版本 SQL 增強——支持 in 語法
在早期版本中,TDengine TSDB 尚不支持 IN 語句,我們只能通過多個 OR 條件來實現過濾查詢。經過後續版本的優化,TDengine TSDB 已全面支持 普通列的 IN 查詢、TAG 列的 IN 查詢,以及 NOT IN 查詢,讓 SQL 在使用上更加便利。
- INTERP 函數增加對 BOOL 類型的支持
INTERP 函數用於在指定時間斷面獲取指定列的記錄值,當該時間斷面沒有符合條件的行數據時,會根據 FILL 參數自動進行插值。在 2.x 版本中,該函數尚不支持對 BOOL 類型數據的插值,而在 3.0 版本中,這一限制已被優化,現可對 BOOL 類型字段執行插值操作:
未來展望
將 TDengine TSDB 應用於我們的實際業務系統後,系統的數據處理性能和維護效率都得到了顯著提升。未來,我們將持續關注 TDengine TSDB 的版本更新與功能演進,深入挖掘其在更多業務場景中的應用潛力,不斷優化系統架構和數據管理能力。
關於金恆科技
金恆科技秉承“數字化轉型生態構建者”的企業願景,融合新一代信息技術,圍繞運營智慧化和生產智能化兩大業務方向,全面提供集團管控、產銷質財一體化以及覆蓋鋼鐵全流程的數字工廠產品,同時在規劃諮詢、產線集控、智能裝備方面提供企業數字化轉型整體解決方案。客户覆蓋鋼鐵、礦山、環保、石化等行業,遍佈國內 20 多個省市,擁有南京鋼鐵、中信特鋼、中國寶武、鞍山鋼鐵、海南礦業、中荷環保、揚子石化等上百家行業重點客户。
作者 | 金恆科技 薛燦