在萬(wan)物互聯的(de)時代,大到(dao)企業(ye)數字化轉(zhuan)型、數字城(cheng)市建設(she),小(xiao)到(dao)與(yu)生(sheng)(sheng)活息息相關的(de)家居生(sheng)(sheng)活、智(zhi)能(neng)駕駛、運(yun)動健康等,都(dou)離不開智(zhi)能(neng)物理設(she)備的(de)廣泛連接和(he)互通。AIoT(人工智(zhi)能(neng)物聯網)是人工智(zhi)能(neng)與(yu) IoT 技術(shu)的(de)融合,通過物聯網設(she)備產生(sheng)(sheng)和(he)收集來自不同維度的(de)海量數據,存儲于云端、邊(bian)緣端和(he)設(she)備端,再通過數據分析引擎及機器學(xue)習、神經網絡等高級技術(shu),實現萬(wan)物數據化和(he)萬(wan)物智(zhi)聯化。
作為一個全面的物聯網 SaaS 平臺,ThingLinks 致力于將物理設備無縫連接到云端,支持海量設備的接入和管理,簡化設備數據采集和遠程控制的過程。而在這背后,TDengine 作為時序數據庫(Time Series Database)的(de)選擇,為 ThingLinks 提供了強大的(de)數據存(cun)儲與處理能(neng)力,進(jin)一步提升(sheng)了平臺的(de)性能(neng)和(he)效(xiao)率。
場景與痛點
數(shu)據(ju)是數(shu)字(zi)化時(shi)(shi)代(dai)企業的核(he)心資產(chan)。ThingLinks 平臺維護(hu)著大量的智能(neng)設(she)備(bei),這(zhe)些(xie)設(she)備(bei)聯網(wang)后會根據(ju)設(she)備(bei)設(she)定的速率持(chi)續產(chan)生時(shi)(shi)序數(shu)據(ju)。例如,有(you)些(xie)設(she)備(bei)的采樣間隔是 5 秒。為了(le)應(ying)對龐大的數(shu)據(ju)存(cun)(cun)儲和(he)計算(suan)挑戰,ThingLinks 結(jie)合自身數(shu)據(ju)特點與(yu)業務(wu)需求,對多種工(gong)業時(shi)(shi)序數(shu)據(ju)庫進行了(le)技術選型。以下是我(wo)們在數(shu)據(ju)存(cun)(cun)儲方(fang)面(mian)的一(yi)些(xie)做法:數(shu)據(ju)存(cun)(cun)儲具有(you)較高的數(shu)據(ju)壓縮比(bi);節約存(cun)(cun)儲資源;降(jiang)低 T 級成本(ben)寫入(ru)和(he)查詢性能(neng)優異;數(shu)據(ju)庫底層邏輯的優化可以減少 CPU 開銷(xiao)支持(chi)數(shu)據(ju)預聚合;擁有(you)豐富的計算(suan)算(suan)子強(qiang)有(you)力的穩定架構。
ThingLinks 云物聯網(wang) SaaS 平(ping)臺提供了一個全面的(de)解決方案(an),用于(yu)將(jiang)物理設(she)備(bei)(bei)無縫連(lian)接到云端,支持海量設(she)備(bei)(bei)的(de)接入和管理。此平(ping)臺使設(she)備(bei)(bei)數據(ju)采集上云變得簡(jian)單高效,并(bing)允許用戶通過云端下發命(ming)令實現對設(she)備(bei)(bei)的(de)遠程控制(zhi)。ThingLinks 平(ping)臺的(de)核心特性包括(kuo):
- 強大的物聯網平臺 — 作為業務應用和設備之間的橋梁,ThingLinks 平臺屏蔽了設備接口的復雜性,實現了快速的設備接入。它還提供了強大的開放能力,支持用戶根據各自行業需求構建定制化的物聯網解決方案。
- 靈活的設備接入方式 — 設備可以通過固網、2G/3G/4G/5G、NB-IoT、Wifi 等多種網絡接入 ThingLinks 平臺。使用 LWM2M/CoAP、MQTT、HTTPS 等協議,設備能夠有效地上報業務數據,同時接收來自平臺的控制命令。
- 高效的業務應用集成 — 業務應用可通過調用 ThingLinks 平臺提供的 API 實現設備數據的采集、命令下發和設備管理等功能。這使得整個物聯網解決方案更加高效和可靠。

ThingLinks 物(wu)聯網(wang)平臺充分考慮(lv)到設備接入的多(duo)樣性(xing)和(he)復(fu)雜性(xing),提供了(le)靈活(huo)多(duo)變的接入選項(xiang)和(he)高效的設備管理(li)能力。以下(xia)是平臺支(zhi)持的關鍵特性(xing):
- 多樣化接入方式 — 支持終端設備直接接入,以及通過工業網關或家庭網關接入,滿足不同場景的接入需求。
- 多網絡與多協議支持 — 適應多種網絡環境(如固網、無線網絡等)和多種通信協議(包括專業的工業協議和通用的網絡協議),確保設備能夠順利接入。
- 系列化 Agent 接入 — 提供一系列的 Agent 接入方案,解決了設備接入的復雜性和碎片化問題,使得各類設備能夠無縫集成到平臺中。
- 高效的設備管理 — 提供豐富完備的設備管理功能,簡化海量設備的管理工作,提升管理效率和安全性。
技術選型
在(zai) ThingLinks 2020 年(nian)開源初期,我們對幾種(zhong)業界主(zhu)流的時(shi)序(xu)數據庫(ku)(ku)做了(le)(le)分析和測試,最終(zhong)選擇(ze)了(le)(le) TDengine 作為(wei)平(ping)臺的首選時(shi)序(xu)數據庫(ku)(ku)。相比(bi)其(qi)他方案(an),TDengine 在(zai)性能(neng)、成(cheng)本、運維(wei)難(nan)度等(deng)方面表現出色,支持橫向(xiang)擴展且高可(ke)用(yong)。
架構設計
產(chan)品主要依托(tuo) TDengine 為數(shu)(shu)據核心,承載(zai)實時和(he)歷史數(shu)(shu)據寫入、存儲和(he)查詢(xun)的(de)(de)工作(zuo),是堅(jian)實的(de)(de)數(shu)(shu)據底(di)座,保(bao)證了上(shang)層(ceng)應用生態的(de)(de)繁(fan)榮發展。


數據模型
在(zai)數據(ju)模(mo)(mo)型方(fang)面,TDengine 數據(ju)模(mo)(mo)型需根據(ju) ThingLinks 的(de)產(chan)品(pin)模(mo)(mo)型進行設計,以(yi)實(shi)現(xian)最佳性能和功能。ThingLinks 的(de)產(chan)品(pin)模(mo)(mo)型定義(yi)包括(kuo)產(chan)品(pin)信(xin)息和服務(由屬性和命(ming)令組成)兩部分,旨在(zai)描述產(chan)品(pin)的(de)基本信(xin)息和業務能力。基于這些模(mo)(mo)型,ThingLinks 可以(yi)確保所有設備按照統一的(de)結構工作。
為了更(geng)好地利(li)用 TDengine 的(de)性能和功能,我們基于(yu) ThingLinks 的(de)產品模型(xing)設計了超級(ji)表的(de) Schema。這一(yi)設計使得設備(bei)的(de)數據(ju)存(cun)儲(chu)和處理更(geng)加高(gao)效和可(ke)靠。
超級表設計概念
每(mei)個(ge)設備對(dui)應(ying)一張子(zi)表(biao),每(mei)類(lei)設備(產(chan)品服務)對(dui)應(ying)一個(ge)超(chao)級表(biao)基于產(chan)品類(lei)型和物(wu)(wu)模(mo)型屬(shu)性創建(jian)超(chao)級表(biao),數據(ju)聚合以子(zi)表(biao)為維(wei)度(du),按(an)照物(wu)(wu)模(mo)型及數據(ju)特性選擇不同的聚合算子(zi)進行聚合。 具(ju)體的超(chao)級表(biao)設計示例如下:
CREATE STABLE `common_4001308136820736_default_attributes_controls` (
`ts` TIMESTAMP ENCODE 'delta-i' COMPRESS 'lz4' LEVEL 'medium',
`event_time` TIMESTAMP ENCODE 'delta-i' COMPRESS 'lz4' LEVEL 'medium',
`battery` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
`device_temperature` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
`linkquality` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
`power_outage_count` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
`voltage` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
`vibration` BOOL ENCODE 'bit-packing' COMPRESS 'lz4' LEVEL 'medium',
`strength` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
`angle_x` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
`angle_y` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
`angle_z` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
`x_axis` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
`y_axis` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
`z_axis` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium'
) TAGS (`device_identification` VARCHAR ( 64 )) SMA (`ts`,`event_time`)
平臺側創建產品服務

定義該服(fu)務下具有的服(fu)務屬性


操作產品(pin)賦(fu)能即(ji)可對(dui) TDengine 數據模型(xing)做同步更新(xin),對(dui)屬性變更,SQL 執行結果(guo)可視化(hua)展示(shi)。

在實際應(ying)用(yong)中,可以有多個服務,每個服務都有不同的屬(shu)性和命令,例如(ru)水表應(ying)用(yong)場景等(deng):
- 基礎(waterMeterBasic):定義水表上報的水流量、水溫、水壓等參數
- 告警(waterMeterAlarm):定義水表需要上報的各種告警場景的數據
- 電池(battery):定義水表的電壓、電流強度等數據
- 傳輸規則(deliverySchedule):定義水表的一些傳輸規則
- 連接(connectivity):定義水表連接參數
通(tong)過 ThingLinks 可以快速(su)生成(cheng) TDengine 超級表,設備上報(bao)數據自動生成(cheng)子(zi)表,實現高效(xiao)數據管理。
多租戶數據隔離
在多(duo)租(zu)戶(hu)環境下,ThingLinks 采用(yong)每個(ge)租(zu)戶(hu)一個(ge)時(shi)序庫的(de)(de)設計,確保數(shu)據的(de)(de)隔(ge)離(li)性(xing)和安全(quan)性(xing)。每個(ge)租(zu)戶(hu)的(de)(de)數(shu)據獨立(li)存儲(chu)在其專(zhuan)屬的(de)(de) TDengine 數(shu)據庫中(zhong),通(tong)(tong)過獨立(li)的(de)(de)數(shu)據源實現大租(zu)戶(hu)的(de)(de)數(shu)據隔(ge)離(li),而小租(zu)戶(hu)則通(tong)(tong)過列級別的(de)(de)權限(xian)管(guan)理進行數(shu)據隔(ge)離(li)。
這種設(she)計不(bu)僅提高了數據(ju)(ju)管(guan)理(li)的(de)(de)靈活(huo)性,還確保了各租戶(hu)(hu)的(de)(de)數據(ju)(ju)隱私和安全。大租戶(hu)(hu)可以(yi)在其(qi)獨(du)立的(de)(de)數據(ju)(ju)庫中(zhong)進(jin)行復(fu)雜的(de)(de)數據(ju)(ju)操(cao)作和分析,而(er)小(xiao)租戶(hu)(hu)則(ze)享有細(xi)粒度的(de)(de)權限管(guan)理(li),確保數據(ju)(ju)的(de)(de)安全訪(fang)問。

落地實施
在實(shi)際落地(di)實(shi)施過(guo)程中,ThingLinks 平臺(tai)結合業務需求與數(shu)據特點,充分(fen)利用 TDengine 的高(gao)性能和高(gao)可用性,實(shi)現(xian)了以下方案:
- 設備數據采集:設備通過 MQTT、CoAP、HTTPS 等協議將數據上報到 ThingLinks 平臺。
- 數據解析與匹配:ThingLinks 平臺接收到設備上報的數據后,進行數據解析并與相應的產品模型進行匹配,確保數據結構的一致性。
- 數據存儲:解析和匹配后的數據首先存儲在 TDengine 中,保證數據的實時性和完整性。
總結
TDengine 賦能 ThingLinks,提供(gong)了強大的(de)(de)數據存儲(chu)和處理能力(li),使得 ThingLinks 能夠更加高(gao)效、可靠地(di)服(fu)務于(yu)物聯(lian)網(wang)(wang)應用(yong)。無論是設(she)備接入的(de)(de)靈(ling)活性(xing)(xing),還是業務應用(yong)的(de)(de)高(gao)效集(ji)成(cheng),ThingLinks 都(dou)表現出了卓越的(de)(de)性(xing)(xing)能和適應性(xing)(xing)。通過這種協同工作(zuo),ThingLinks 為用(yong)戶提供(gong)了一個全面、高(gao)效的(de)(de)云(yun)物聯(lian)網(wang)(wang) SaaS 平臺(tai)解決方案(an),推動了各行業的(de)(de)數字(zi)化(hua)轉(zhuan)型(xing)。


























