无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

用實際案例告訴你,在 TDengine 如何進行數據建模

Shuqi Song

2022-07-04 / ,

小 T 導讀:在使用 TDengine 的(de)(de)時候,通過官(guan)網的(de)(de)技術文(wen)(wen)檔可以學習到(dao)建庫(database)、建表(table)的(de)(de)各種 SQL 語句,但是一旦要(yao)跟自(zi)己的(de)(de)具體業務場景結合,經(jing)驗(yan)不(bu)足的(de)(de)朋友可能會(hui)不(bu)知(zhi)道到(dao)底如何下手(shou),本文(wen)(wen)將分享一些常見(jian)的(de)(de)建模方式,希望幫(bang)助大家更好地落(luo)地 TDengine。

不同于 OpenTSDB、Prometheus 等時序數據庫(Time-Series Database),TDengine 允(yun)許一(yi)個表有多個列(即(ji)每條記錄中(zhong),多個采集(ji)量共用一(yi)個時(shi)(shi)間戳的(de)存儲(chu)方式(shi)),這(zhe)樣(yang)在建(jian)表時(shi)(shi)可以有更大的(de)靈活(huo)性。

智能(neng)電表是個典(dian)型(xing)的(de)可(ke)(ke)以按照設(she)備建表,多(duo)列(lie)存(cun)儲時序數(shu)據的(de)例子。但(dan)在實際使用過程(cheng)中,情(qing)(qing)況(kuang)可(ke)(ke)能(neng)會更復雜,一定要(yao)結合本身數(shu)據的(de)情(qing)(qing)況(kuang)來靈活設(she)計表結構。

按照設(she)備(bei)建表(biao),在官網(wang)文檔(dang)中已經有(you)詳細的(de)例子和介紹,本(ben)文除了介紹一個設(she)備(bei)一張表(biao)的(de)建模(mo)方式外,還會(hui)對另外幾種(zhong)建模(mo)方式做一個補充。

1、按照設備建表的標準情形

上文中的智能電表例(li)子就是一個設備一張表的標(biao)(biao)準情形。這(zhe)種標(biao)(biao)準情形有以下特點:

(1) 相(xiang)(xiang)同類型的設備,采集指(zhi)標完全相(xiang)(xiang)同。(比如上文(wen)例子中的智能電(dian)表,只采集電(dian)流、電(dian)壓、相(xiang)(xiang)位三個指(zhi)標)

(2) 就(jiu)同(tong)(tong)一(yi)個設備而言,各采集指(zhi)標同(tong)(tong)時采集,采集時間戳相同(tong)(tong)。

(3) 就(jiu)同(tong)一個設備而言,各(ge)采集指標每(mei)次采集的數據(ju)最好是在同(tong)一個消息中上報(bao)到 TDengine,而非分別上報(bao)。


這種情況的處理最簡(jian)單:

  1. 采用多列模式,即為每個類型的設備創建一張多列超級表。
  2. 為該類型的每個設備創建一張子表。
  3. 子表從第二列起,每一列均為一個采集指標。
TDengine Database
圖一:TDengine database 表設計

以智能電表為例:

TDengine Database
圖二:一個采集點一張表
TDengine Database
圖三:超級表使用實例

2、按照設備建表,但同類型設備的采集指標不完全相同

實際生產中,同類型的設(she)備有時候采集指(zhi)標也(ye)不完全相同,這(zhe)種情況下有以下特點:

(1) 相同類型的設備,采集指標大體相同,但每個設備可能有少量個性化的指標。(前提(ti):所(suo)有個(ge)性化指標總(zong)數加上共有指標總(zong)數不超過 1024 個(ge),2.1.7.0 版本后總(zong)數為不超過 4096 個(ge))

(2) 就(jiu)同(tong)一個設備而言(yan),各采集指標同(tong)時采集,采集時間戳相同(tong)。

(3) 就(jiu)同一個(ge)設備(bei)而(er)言,各(ge)采集指標每次采集的數據(ju)在同一個(ge)消息中(zhong)上(shang)報到 TDengine,而(er)非(fei)分(fen)別上(shang)報。


這種(zhong)(zhong)情況類似于(yu) 1,但區別是每個(ge)(ge)設備可能有個(ge)(ge)性化的采集指標。針對這種(zhong)(zhong)情形的處理思路常稱為“大寬表”:

  1. 創建一個多列超級表,包含所有不同的采集指標列,為所有采集指標的全集。
  2. 為每個設備創建一張子表。
  3. 子表從第二列起,每一列均為一個采集指標。
  4. 數據寫入時,對于該設備不具備的采集指標填入 null 值。


圖示和圖三接近,不同處(chu)(chu)在于建(jian)立超級表時,采集指標需要按(an)照(zhao)最多的設備去(qu)處(chu)(chu)理。

3、按照采集指標建表-1

更復雜的(de)場景中,設備的(de)固定表結構(gou)很難(nan)抽象出(chu)來(lai),或者表結構(gou)經常改變,無(wu)法固定,此時需(xu)要有更靈(ling)活的(de)處理思路。以下任(ren)一個特點滿足時,需(xu)考慮按指標建表的(de)思路:

(1) 相同(tong)類型(xing)的設(she)備(bei),采集指標無法(fa)固定(ding),或者每個(ge)(ge)設(she)備(bei)有(you)大量個(ge)(ge)性化(hua)的指標。(前提:所有(you)個(ge)(ge)性化(hua)指標總數加上(shang)共有(you)指標總數超(chao)過 1024,2.1.7.0 版本后(hou)為指標總數超(chao)過 4096 個(ge)(ge))

(2) 就同(tong)一個(ge)設(she)(she)備而言,各采(cai)集指標(biao)有各自的(de)(de)采(cai)集時間戳。(即同(tong)一個(ge)設(she)(she)備的(de)(de)不同(tong)采(cai)集指標(biao)的(de)(de)采(cai)集時間、采(cai)集周(zhou)期等無法保證(zheng)相同(tong))

(3) 就同一個(ge)(ge)設備而言(yan),各(ge)采集指(zhi)標每(mei)次采集的(de)數據(ju)分(fen)多(duo)個(ge)(ge)消息(xi)上報到 TDengine,且時間延遲無法確定。


這種情形要(yao)求(qiu)更(geng)高的靈活性。一般處理思路如下:

  1. 創建單列的超級表,即時間戳+采集值,而在標簽項中增加采集指標 ID 這一標簽。
  2. 每個設備的每個采集指標單獨創建一張表,在標簽項中增加具體的采集指標 ID。 
  3. 不同數據類型的采集指標要劃歸不同超級表,比如數值型、布爾型和字符串型的數據應該分別歸入三類對應的超級表。
TDengine Database
圖四:單列模型建模示例

示例如下:

TDengine Database
圖五:單列模型建模實例

4按照采集指標建表-2

此場景可(ke)能出(chu)現在工業物聯網(wang) PLC 數(shu)據采(cai)集中(zhong)。

(1) 相(xiang)同類型(xing)的設備(bei),采集(ji)指(zhi)標無(wu)法固定。

(2) 就同一設備而言(yan),各采集(ji)指標(biao)有各自的(de)采集(ji)頻(pin)率(lv),不過采集(ji)頻(pin)率(lv)是確定(ding)的(de),比如 PLC1~PLC10 的(de)采集(ji)頻(pin)率(lv)是 10ms,PLC11~PLC20 的(de)采集(ji)頻(pin)率(lv)是 20ms。

(3) 就同(tong)一設備而言,后續可能會動態(tai)添加 PLC 通道。期望可以(yi)在(zai)不修改代碼的(de)情況(kuang)下動態(tai)增加超級表的(de)列。

(4) 希望通過一個超級表來統(tong)一管理。


建模思路:

  1. 創建多列的超級表,采集字段不同的數據類型各設置建立一個。即時間戳+采集值 int+采集值 double+ 采集值 nchar……,而在標簽項中增加采集指標 ID 這一標簽。
  2. 每個設備的采集指標單獨創建一張表,在標簽項中增加具體的采集指標 ID。
  3. 其中時間戳必填的列,剩余列則要根據測點類型填寫,比如測點上報的是整形數據,就只需要設置time、采集值 int 這兩列,其余列為 null。

示例如下:

TDengine Database
圖六:按照采集指標建模實例

以(yi)上(shang)為幾種常見建(jian)模(mo)方式,覆蓋(gai)了大(da)部分的(de)實(shi)際(ji)場景,當然實(shi)際(ji)業(ye)務(wu)中(zhong)的(de)情況(kuang)是多種多樣的(de),如果(guo)以(yi)上(shang)建(jian)模(mo)思路不能滿足,也歡迎和加入 TDengine 的(de)用戶社區,我們一(yi)起交流。