從 OpenTSDB 到 TDengine,至數物聯網平臺技術改造之路
小 T 導讀:至數物聯網平臺場景多、資料模型複雜,伴隨著業務需求的不斷迭代及資料量的不斷上漲,原有的 OpenTSDB+MySQL 的組合逐漸力不從心,侷限性日益凸顯。在對 TDengine 進行充分了解與調研後,基於 TDengine 對至數搖光進行了徹底性的改造。本文分享了至數結合自身平臺特點進行系統架構升級改造的經驗,以供參考。
公司簡介&專案背景
至數(Medatc)是一家致力於打造行業最佳裝置資產資料化運營、管理、服務的平臺,為客戶提供全方位的裝置資產管理支撐,其擁有豐富的行業經驗,以及在大資料、人工智慧、物聯網、網際網路+領域的創新實踐能力。公司成立至今已經獲得紅杉資本等知名投資機構的戰略投資。
至數搖光(即:至數物聯網平臺)通過動態能量主動標識,動態環境主動標識,智慧閘道器,應用工業網際網路時序資料高效採集,邊緣計算以及智慧演算法自動分發等一系列技術,基於醫療裝置行業主資料規範,助力醫療機構短週期、低成本、高質量、廣覆蓋地實現有源裝置智慧管理。
一、至數搖光具有場景多、資料模型複雜的特點
至數搖光是以提效降耗為目標,幫助醫療機構實現有源裝置的高效管理,為裝置使用效率智慧分析,裝置科學配置,裝置動態調配,裝置安全保障提供全方位支撐。目前共推出了 15 項智慧場景應用,30 項事件及異常告警提醒。
至數搖光的上述場景改造前資料庫採用 OpenTSDB+MySQL 結合的方式實現,由於 OpenTSDB 無法滿足複雜查詢場景,因此 80% 的場景指標只能基於 MySQL 資料庫來實現,這樣帶來的問題就是 MySQL 資料庫的資料增長迅速,需要定時做冷熱資料分離及資料庫表維護動作。
二、TDengine 助力至數物聯網平臺實現技術改造
作為一個大而全的資料庫,OpenTSDB 稍顯笨重,伴隨著業務需求的不斷迭代及資料量的不斷上漲,其侷限性日益凸顯,系統的架構升級和改造工作日漸迫切。
2021 年我們在對 TDengine 有了充分的瞭解後,決定將至數搖光從時序資料 OpenTSDB 遷移到 TDengine,並基於 TDengine 的特性對搖光進行徹底性的改造。目前改造工作已經全部完成,改造後有大約 80% 左右的指標模型放到了 TDengine 中,20% 左右的主資料或維表資料存放在 MySQL 資料庫中。
相較於改造前的 80% 指標模型存放在 MySQL 中,20% 指標資料存放在 OpenTSDB 資料庫中,結果剛好進行了顛倒,伺服器資源使用情況也有所下降。應用整體的頁面影響速度顯著提高,資料模型及資料指標上也可以更加地靈活多變。
以下為至數搖光網路拓撲路圖:
以下為改造前後的資料庫對比:
以下以 11 萬條資料表來做查詢,結果如下:
聚合查詢,1,155,876 條資料在耗時不到 0.17 秒的時間完成 GROUP BY 聚合查詢:
寫入情況,這裡截了一張 Flink 寫入TDengine 資料庫圖片,3 個小時左右的時間裡寫入了 250 萬條採集資料,這樣的寫入量遠遠沒有達到 TDengine 的寫入瓶頸,對業務的增長留有充裕的空間。
下面是我們的部分應用展示:
三、TDengine 使用上的一些意見反饋
我們有些按小時、按天、按月的指標計算的時候如果當時的維表資料有誤需要重算,重算的資料需要覆蓋之前的資料或者把之前的資料刪除掉重新寫入。不過 TDengine 目前不支援資料刪除,希望未來能夠支援刪除功能。
目前更新只支援更新相同時間戳資料,希望 tag 和普通欄位能夠聯合篩選做 update;也有業務場景需要此類功能。
另外,目前排序還存在一定的限制,希望 tag 和普通欄位能夠進行自由升降序排列。
最後感謝濤思團隊開源出來 TDengine 這款優秀的時序資料庫系統,也要感謝一下濤思團隊對至數研發團隊的支援與幫助,祝福濤思資料越辦越好!
想了解更多 TDengine 的具體細節,歡迎大家在GitHub上檢視相關原始碼。