版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
IoT物聯網TDengine時序數據庫實戰教程適配TDengine3.0+(TDengineCloud/開源社區版/企業版)TDengine定位:物聯網、設備采集、傳感器、IoT監控、工控、電梯/電力設備指標時序存儲;完美適配工業IoT場景。一、核心基礎概念TDengine獨創超級表(STable)+子表模型數據庫database:設置數據保留時長、分片參數、副本數超級表STable(SuperTable)一類設備的模板(例如:device_metric所有電梯采集指標)時間戳ts:主鍵,時序數據必須字段采集指標列(普通列):溫度、電壓、運行速度、樓層、告警狀態標簽tags(維度):設備唯一編號、樓宇編號、區域、設備類型(不可頻繁變更)子表SubTable每個設備一張自動生成子表,基于超級表創建;tags作為區分不同設備維度優勢:按設備天然分片;按標簽快速過濾;聚合查詢極快;自動分區;支持數據自動刪除。??最佳實踐:變動頻繁數值→普通列設備靜態屬性(設備ID、站點)→標簽tag數據模型示例(電梯物聯網)超級表:st_elevator_data表格字段類型說明類別tsTIMESTAMP采集時間戳主鍵speedFLOAT電梯運行速度普通列floorINT當前樓層普通列loadFLOAT載重百分比普通列alarm_codeINT告警碼普通列device_idNCHAR(32)設備編號TAGbuilding_idNCHAR(32)樓宇IDTAGcityNCHAR(16)城市TAG二、快速部署TDengine3.0方式1:Docker(推薦開發測試)bash#啟動容器dockerrun-d\--nametdengine\-p6030:6030-p6041:6041-p6043:6043\-vtd-data:/var/lib/taos\tdengine/tdengine:#進入客戶端dockerexec-ittdenginetaos方式2Linux二進制部署(生產)官方下載server包,systemd托管服務,端口:6030:原生TAOS連接(taosc驅動)6041:RESTAPI6043:WebSocket生產建議:優先使用原生驅動taosc,性能遠高于Restful。三、TDengineSQL實戰(客戶端直接執行)1.創建數據庫sql--數據庫:保留數據90天,分片間隔1天CREATEDATABASEIFNOTEXISTSiot_elevatorKEEP90DURATION1d;USEiot_elevator;參數說明:KEEP:數據保存最大天數,超期自動刪除DURATION:單個數據分片時間跨度2.創建超級表sqlCREATESTABLEIFNOTEXISTSst_elevator_data(tsTIMESTAMP,speedFLOAT,floorINT,loadFLOAT,alarm_codeINT)TAGS(device_idNCHAR(32),building_idNCHAR(16),cityNCHAR(16));3.自動創建子表并寫入數據方式1:自動建子表(推薦,業務最常用)子表命名規則t_${deviceId}sqlINSERTINTOt_elev_001USINGst_elevator_dataTAGS('elev_001','building_A','Langfang')VALUES(NOW(),1.6,8,45.2,0);執行邏輯:不存在t_elev_001自動創建子表,再寫入一行時序數據。4.基礎查詢sql--查詢單設備最近100條SELECT*FROMst_elevator_dataWHEREdevice_id='elev_001'ORDERBYtsDESCLIMIT100;--指定時間范圍SELECTts,floor,speedFROMst_elevator_dataWHEREdevice_id='elev_001'ANDts>'2026-08-0100:00:00'ANDts<NOW();5.降采樣聚合(時序核心能力!代替代碼內存聚合)場景:原始采集1Hz,前端展示需要5分鐘平均值sql--每5分鐘聚合:平均速度、平均載重SELECTTS,AVG(speed)avg_speed,AVG(load)avg_loadFROMst_elevator_dataWHEREdevice_id='elev_001'INTERVAL(5m)SLIDING(5m);INTERVAL采樣窗口SLIDING滑動步長6.常用聚合函數AVG,SUM,MAX,MIN,COUNT,FIRST,LASTsql--時間段內最高速度、最低樓層SELECTMAX(speed),MIN(floor)FROMst_elevator_dataWHEREdevice_id='elev_001'ANDts>NOW()-24h;7.標簽過濾多設備批量查詢sql--查詢廊坊市所有樓宇設備數據SELECT*FROMst_elevator_dataWHEREcity='Langfang'ANDts>=NOW()-1h;8.刪除過期數據無需手動刪除,數據庫KEEP參數自動清理;如需手動清理某設備歷史:sqlDELETEFROMst_elevator_dataWHEREdevice_id='elev_001'ANDts<'2026-01-01';四、多語言驅動實戰代碼4.1SpringBootJava(taos-jdbcdriver3.0,物聯網項目主流)maven依賴xml<dependency><groupId>com.taosdata.jdbc</groupId><artifactId>taos-jdbcdriver</artifactId><version></version></dependency>application.ymlyamlspring:datasource:driver-class-name:com.taosdata.jdbc.TSDBDriverurl:jdbc:TAOS://:6030/iot_elevatorusername:rootpassword:taosdata寫入工具示例java運行importjava.sql.*;publicclassTDWriteDemo{publicstaticvoidmain(String[]args)throwsSQLException{Stringurl="jdbc:TAOS://:6030/iot_elevator";Connectionconn=DriverManager.getConnection(url,"root","taosdata");Stringsql="INSERTINTOt_elev_001USINGst_elevator_dataTAGS(?,?,?)VALUES(?,?,?,?,?)";PreparedStatementpstmt=conn.prepareStatement(sql);//參數:tags(device_id,building_id,city)+ts,speed,floor,load,alarm_codepstmt.setString(1,"elev_001");pstmt.setString(2,"building_A");pstmt.setString(3,"Langfang");pstmt.setTimestamp(4,newTimestamp(System.currentTimeMillis()));pstmt.setFloat(5,1.5f);pstmt.setInt(6,10);pstmt.setFloat(7,30.0f);pstmt.setInt(8,0);pstmt.execute();pstmt.close();conn.close();}}生產批量寫入:使用SQL批量values、或者stmt批量寫入API(非PreparedStatement),千萬不要循環單行insert,吞吐量極低。4.2Go語言驅動(邊緣網關優選)go運行packagemainimport( "database/sql" "fmt" "time" _"/taosdata/driver-go/v3/taosSql")funcmain(){ db,err:=sql.Open("taosSql","root:taosdata@tcp(:6030)/iot_elevator") iferr!=nil{ panic(err) } deferdb.Close() now:=time.Now() sqlStr:=`INSERTINTOt_elev_001USINGst_elevator_dataTAGS('elev_001','building_A','Langfang')VALUES(?,?,?,?,?)` _,err=db.Exec(sqlStr,now,1.2,5,22.5,0) iferr!=nil{ fmt.Println(err) }}五、工業IoT落地最佳實踐1.數據流架構plaintext電梯終端采集→MQTT(Kafka)→Java服務→TDengine存儲前端可視化查詢(實時曲線/歷史趨勢/5min聚合報表)告警系統:查詢時序數據識別異常指標2.寫入規范(避坑重點)時間戳統一使用毫秒時間戳,全部服務UTC或者統一東八區,避免時區錯亂高頻采集(1~5Hz)禁止單條循環插入;批量攢包寫入(攢200~500條一次提交)TAG不要頻繁更新!TD標簽不適合經常修改;經常變化字段放普通列超級表不要建太多,同類設備盡量復用一張STable3.查詢規范查詢必須攜帶時間范圍!禁止不帶ts條件全表掃描,時序數據庫巨量數據會直接卡死?good:wherets>now-24handdevice_id='xxx'?bad:select*fromst_elevator_datawheredevice_id='xxx'歷史報表盡量使用INTERVAL服務端降采樣,不要原始數據全部拉到內存聚合六、性能優化清單開啟批量寫入:StmtAPI/多行VALUES合并合理設置DURATION分片,采集頻率1Hz級別建議DURATION1天磁盤:使用SSD;關閉磁盤同步刷盤參數(根據業務可靠性權衡)分庫規劃:設備量幾十萬以上,可以按城市分多個database冷熱分離:TD企業版支持冷熱分層;社區版只能依靠KEEP自動清理+定期導出冷數據至對象存儲索引:標簽自帶索引,無需額外建立索引;普通列不要隨意創建索引七、高頻問題&踩坑記錄Q:標簽可以update修改嗎?A:TDengine3.0支持ALTERTABLE修改tags,但是性能差,設計階段盡量避免動態標簽。Q:寫入很慢,吞吐量上不去?A:99%原因:循環單行Insert,沒有批量攢包。Q:時間查詢結果錯亂?時區問題A:所有服務統一時區;客戶端連接指定時區timezone=Asia/S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 牙骨雕刻工成果轉化模擬考核試卷含答案
- 排土犁司機復測水平考核試卷含答案
- 紡紗工崗位安全責任制水平考核試卷含答案
- 矯形器裝配工安全生產意識水平考核試卷含答案
- 制漿廢液回收利用工崗前技術落地考核試卷含答案
- 2026年11月企業骨干人才培養年終計劃
- 冬季消防安全教育指南
- 鼻出血患者健康宣教
- 宣傳落實安全生產政策講解
- 2026年深空探測任務風險緩解措施
- 2026年“麻醉藥品、精神藥品”管理和使用培訓考核試題(含答案)
- 2026年安徽省輔警(協警)招聘考試題庫及答案
- 2026年傳染性疾病控制副高試題及答案
- 幼兒教師招聘考試全套試題及答案
- 浙江省舟山市2025-2026學年高二下學期6月期末考試技術試題含答案
- (正式版)DB43∕T 262-2014 《住宅裝飾裝修工程質量驗收規范》
- 2026年山東省臨沂市重點中學小升初英語考試試卷及答案
- 2026年《保安員》上崗證考試題庫及答案
- 2025鄂爾多斯準格爾旗國眾人力資源服務有限責任公司招考129人筆試歷年參考題庫附帶答案詳解
- 餐飲儲值卡銷售合同
- 非遺宋錦珍珠扇沙龍
評論
0/150
提交評論