在物聯(lián)網(wǎng)和工業(yè)場(chǎng)景中,采集的數(shù)據(jù)往往是結(jié)構(gòu)化的,如何高效存儲(chǔ)、快速寫(xiě)入并便捷查詢,成為時(shí)序數(shù)據(jù)庫(kù)面臨的核心挑戰(zhàn)。TDengine 創(chuàng)新性地采用“一個(gè)數(shù)據(jù)采集點(diǎn)一張表”的設(shè)計(jì)策略,在保留關(guān)系型數(shù)據(jù)庫(kù)易用性的同時(shí),充分發(fā)揮了時(shí)序數(shù)據(jù)的特性。
關(guān)系型模型,降低學(xué)習(xí)門(mén)檻
TDengine 沿用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)模型來(lái)管理結(jié)構(gòu)化數(shù)據(jù),用戶無(wú)需重新學(xué)習(xí)新的數(shù)據(jù)組織方式,即可輕松上手。這種設(shè)計(jì)既滿足了工業(yè)與物聯(lián)網(wǎng)用戶的數(shù)據(jù)結(jié)構(gòu)需求,也保障了與主流分析工具的兼容性。
一個(gè)數(shù)據(jù)采集點(diǎn)一張表
每個(gè)數(shù)據(jù)采集點(diǎn)在 TDengine 中對(duì)應(yīng)一張獨(dú)立的表。例如,如果系統(tǒng)中部署了一千萬(wàn)塊智能電表,則需在 TDengine 中創(chuàng)建一千萬(wàn)張表,每張表只記錄一塊電表的全部時(shí)序數(shù)據(jù)。表名通常以采集點(diǎn) ID 命名(如 d1001),采集的各項(xiàng)指標(biāo)(如電流、電壓、相位等)在表中以列形式存在。
這種設(shè)計(jì)方式帶來(lái)了顯著優(yōu)勢(shì):
- 無(wú)鎖寫(xiě)入,極致性能:每個(gè)采集點(diǎn)是獨(dú)立的數(shù)據(jù)源,只有一個(gè)寫(xiě)入者,天然避免了并發(fā)寫(xiě)入沖突,TDengine 可采用無(wú)鎖機(jī)制,顯著提升寫(xiě)入速度。
- 追加寫(xiě)入,順序優(yōu)化:時(shí)序數(shù)據(jù)按時(shí)間遞增產(chǎn)生,可順序追加寫(xiě)入,有效降低系統(tǒng)開(kāi)銷,加快處理效率。
- 塊狀存儲(chǔ),高效查詢:?jiǎn)蝹€(gè)采集點(diǎn)的數(shù)據(jù)在存儲(chǔ)上是連續(xù)的、以塊為單位組織,讀取特定時(shí)間段數(shù)據(jù)時(shí),幾乎無(wú)需隨機(jī) I/O,查詢性能提升數(shù)量級(jí)。
- 列式壓縮,節(jié)省空間:數(shù)據(jù)塊內(nèi)部采用列式存儲(chǔ),不同數(shù)據(jù)類型匹配不同壓縮算法,結(jié)合采集量變化的低頻特性,壓縮率遠(yuǎn)高于傳統(tǒng)方式。
如果采用傳統(tǒng)方式將多個(gè)數(shù)據(jù)采集點(diǎn)的數(shù)據(jù)寫(xiě)入同一張表,由于網(wǎng)絡(luò)延遲不可控,各采集點(diǎn)數(shù)據(jù)到達(dá)服務(wù)器的順序無(wú)法保障,系統(tǒng)必須引入鎖機(jī)制來(lái)確保寫(xiě)入一致性。同時(shí),不同采集點(diǎn)的數(shù)據(jù)難以實(shí)現(xiàn)連續(xù)存儲(chǔ),影響后續(xù)查詢效率與壓縮效果。相比之下,采用“一個(gè)數(shù)據(jù)采集點(diǎn)一張表”的方式,可最大程度保障每個(gè)采集點(diǎn)的數(shù)據(jù)寫(xiě)入和查詢性能,同時(shí)實(shí)現(xiàn)更優(yōu)的數(shù)據(jù)壓縮率。
在 TDengine 中,通常以數(shù)據(jù)采集點(diǎn)的名稱(如 d1001)作為表名。每個(gè)采集點(diǎn)可對(duì)應(yīng)多個(gè)采集量(如電流、電壓、相位等),每個(gè)采集量在表中占據(jù)一列,數(shù)據(jù)類型可以為整數(shù)、浮點(diǎn)數(shù)、字符串等。每張表的首列必須為時(shí)間戳(Timestamp 類型),TDengine 會(huì)基于該時(shí)間戳建立索引,并采用列式存儲(chǔ)方式進(jìn)行數(shù)據(jù)組織。對(duì)于結(jié)構(gòu)復(fù)雜的設(shè)備(如汽車(chē)),由于存在多個(gè)數(shù)據(jù)采集點(diǎn),通常需要為同一設(shè)備創(chuàng)建多張表分別管理。
搭配“超級(jí)表”,實(shí)現(xiàn)統(tǒng)一建模與靈活查詢
為了解決大規(guī)模數(shù)據(jù)管理中的結(jié)構(gòu)統(tǒng)一性問(wèn)題,TDengine 進(jìn)一步引入了“超級(jí)表”機(jī)制。在保留“一個(gè)數(shù)據(jù)采集點(diǎn)一張表”的基礎(chǔ)上,用戶只需定義一次表結(jié)構(gòu),即可通過(guò)超級(jí)表模板批量創(chuàng)建同類采集點(diǎn)的子表。同時(shí),每個(gè)子表可通過(guò)標(biāo)簽(如地理位置、設(shè)備型號(hào)、安裝時(shí)間等)區(qū)分,實(shí)現(xiàn)靈活篩選與聚合分析。
這一設(shè)計(jì)充分結(jié)合了“結(jié)構(gòu)統(tǒng)一 + 存儲(chǔ)獨(dú)立”的優(yōu)勢(shì),使 TDengine 在管理千萬(wàn)級(jí)、甚至十億級(jí)設(shè)備時(shí),仍然能夠保持高性能寫(xiě)入、低成本存儲(chǔ)與靈活查詢分析的能力。



互聯(lián)網(wǎng).png)



-1.png)




.png)


證.png)


伙伴.png)
伙伴.png)
伙伴.png)



