千億級工業大資料的最優方案!智光電氣的時序資料庫應用
小T導讀:
此前,智光電氣(股票程式碼:002169)子公司智光研究院在工業專案中使用基於 Apache Hadoop 的 CDH 叢集來做時序業務資料的處理,但由於資料量級太大,處理佔用了大量資源,導致叢集有發生崩潰的風險。在此背景下,智光研究院選擇應用 TDengine 進行技術升級,併產出本文分享應用經驗。
作者:陳曉琪,智光研究院架構師,行業內多年開發與架構經驗。
當前 TDengine 已成功應用於我司多個工業專案中,涵蓋數萬臺各類工業裝置的資料儲存與查詢。作為資料中臺,TDengine 為上層應用提供了高效的歷史資料查詢,精確到秒級和分鐘級粒度,幫助我們大幅提升了應用效率,同時減少了硬體和人力資源的消耗。
選型背景
在使用 TDengine 之前,我們使用的是基於 Apache Hadoop 的 CDH 叢集。但是由於時序業務資料的量級太大,處理它們佔用了太多的資源,這也導致叢集的不穩定性增加,有頻繁發生崩潰的風險。
因此,我們急需一款時序資料庫(Time Series Database,TSDB)進行技術升級。經過充分測試後,團隊最終決定把由 HBase 處理的、資料量最大的時序資料業務抽離出來,引入 TDengine 來降低 Hadoop 叢集的壓力,成為獨立出來的資料中臺。
我們的裝置資料首先透過邊緣閘道器進行採集,然後透過 MQTT 協議上報到工業網際網路平臺,報上來的資料經過物模型解析後傳送到 Kafka 叢集,再把原始資料和經過降取樣計算的分鐘級資料寫入到 TDengine 叢集當中,以實現高效的資料儲存和查詢。
經驗分享
從一個時序資料庫的初學者到使用者,我們最大的心得就是:
資料建模可以說是最重要的一個環節,也是關乎是否能夠順利用好 TDengine 的根基。
考慮到對降取樣查詢的大量需求,我們經過實際測試後發現,將這些計算量完全交給 TDengine 來做實時計算是不現實的。在此背景下我們選擇在應用層先做好一層降取樣計算,再寫入資料庫。為此我們將資料分為了原始資料和分鐘級資料兩類,對應到 TDengine 當中:iotdb 是原始資料,processeddb 是分鐘級庫。這種資料分類和儲存方式也更加符合我們的需求。
當全量資料匯入之後(幾千億行),我們又發現了新的查詢效能問題,當時還以為 TDengine 的效能已經封頂了。之後在 TDengine 官方團隊的協助定位下才找到核心問題——分鐘級庫與原始資料的寫入頻率差異過大,不能公用一套引數配置。
為了解決這一問題,後面官方根據我們實際的業務場景,分別對不同型別的資料進行建庫建表,做了針對性的建模最佳化。然後我們又耐下心來,再次重新匯入全量資料。
改造效果
經過官方協助最佳化後,資料塊變得更加緊密,壓縮率和查詢寫入效能均得到了大幅提升。
最終的成果如下:
寫入儲存方面,同樣是列式儲存,以半年的資料作為比較,三副本的 HBase 的總資料量佔用是 10TB,TDengine 三副本的磁碟佔用只有 2TB,儲存成本僅為 HBase 的 20 %。(由於和其他應用共用,記憶體、CPU 方面不好估算,但成本均大幅降低)
在查詢上,我們的業務主要就是針對 rundata_t1m(分鐘級資料)、rundata(原始資料)這兩張千億級別的大型超級表的篩選、過濾、降取樣。應用的查詢效能和 SQL 篩選的時間範圍相關較大,整體上的耗時大概在毫秒級至 2 秒內。
具體展示如下:
- 分鐘級資料的 5 分鐘級資料查詢(取 5 分鐘內最後的值)
select tbname, _wend - 1 as ts, LAST(val) AS val from rundata_t1m where tbname in ('b5Sk4IV6ld6-LErYYdQ1-ProcUsedPercent') and ts >= 1698768000000 and ts <= 1701100799000 partition by tbname interval(5m, 1a);
- 分鐘級資料的 15 分鐘級資料查詢(取 15 分鐘內最後的值)
select tbname, _wend - 1 as ts, LAST(val) AS val from rundata_t1m where tbname in ('b5Sk4IV6ld6-LErYYdQ1-ProcUsedPercent') and ts >= xxx and ts <= xxx partition by tbname interval(15m, 1a);
- 原始資料的秒級資料查詢
select tbname, _wend - 1 as ts, LAST(val) AS val from rundata where tbname in ('b5Sk4IV6ld6-LErYYdQ1-ProcUsedPercent') and ts >= xxx and ts <= xxx partition by tbname interval(1s, 1a);
寫在最後
TDengine 作為一款出色的國產時序資料庫,在實際應用中真正地為我們提供了巨大幫助。因此,我們決定整理成文,希望能夠吸引更多的企業和開發者加入我們的行列,共同探索 TDengine 的優勢和潛力。讓我們一起共同推動國產資料庫技術的發展!
企業簡介:
智光研究院(廣州)有限公司【智光電氣(股票程式碼:002169)下屬子公司】,是一家在能源動力技術領域具有深厚行業背景和創新研發能力的應用技術研究機構。憑藉豐富的行業背景和創新研發能力,智光研究院在綜合能源工業網際網路平臺應用、大型工業裝置狀態監測和智慧運維管理、能源系統數字化管理和能量最佳化、新能源、儲能、電動化等方面取得了多項成果。目前已成功投入使用綜合能源服務工業網際網路平臺和多個垂直領域應用系統。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70014783/viewspace-3000470/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 時序資料庫的叢集方案?資料庫
- Prometheus時序資料庫-資料的查詢Prometheus資料庫
- 實時資料庫與時序資料庫資料庫
- 時序資料庫資料庫
- DKH企業級大資料解決方案的優勢分析大資料
- Hive千億級資料傾斜解決方案Hive
- 時序資料庫influxdb資料庫UX
- 投票|選出你心中最優秀的時序資料庫資料庫
- 【工業大資料】製造業大資料標準化應用及成功案例分析大資料
- 物件代理資料庫:大資料時代下的應需之作物件資料庫大資料
- 資料庫應用優化(一)資料庫優化
- 時間序列化資料庫選型?時序資料庫的選擇?資料庫
- 工業大資料分析平臺的應用價值探討大資料
- 初識時序資料庫資料庫
- 時序資料庫之InfluxDB的基本操作資料庫UX
- 時序資料庫InfluxDB的基本語法資料庫UX
- 時序資料庫的秘密 —— 快速檢索資料庫
- 金航數碼選擇應用 TDengine 時序資料庫,改造現有資料庫架構資料庫架構
- 時序資料庫-01-時序資料庫有哪些?為什麼要使用資料庫
- 碼教授教你大資料時代的應對方案大資料
- 【工業大資料】工廠大資料之資料來源分析;如何挖掘並駕馭大資料的價值,成為“大資料企業”?大資料
- 大資料技術在電商的應用大資料
- 【資料分析】針對家庭用電資料進行時序分析(1)
- 爬蟲在大資料時代的應用爬蟲大資料
- 圖資料庫——大資料時代的高鐵資料庫大資料
- Prometheus時序資料庫-報警的計算Prometheus資料庫
- QuestDB時序資料庫介紹資料庫
- 1.1 大資料簡介-hadoop-最全最完整的保姆級的java大資料學習資料大資料HadoopJava
- 築夢2025工業大資料產業應用聯盟成立大資料產業
- Sqlserver關於tempdb臨時資料庫最優檔案個數的最優實踐SQLServer資料庫
- 百度大規模時序資料儲存(一)| 監控場景的時序資料
- 百萬級資料庫優化資料庫優化
- 大資料金融應用案例:融資租賃業與大資料的深度結合大資料
- 用好工業大資料的基礎是資料質量大資料
- iOS 資料庫升級資料遷移解決方案iOS資料庫
- 【工業閘道器應用方案】資料庫機房遠端監控如何實現?資料庫
- oracle資料庫資料字典應用Oracle資料庫
- 高頻時序資料的儲存與統計方案