六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

時(shí)序數(shù)據(jù)庫(kù)數(shù)據(jù)建模實(shí)踐指南:從設(shè)計(jì)到實(shí)現(xiàn)的完整流程

數(shù)據(jù)建模是時(shí)序數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)的基礎(chǔ)環(huán)節(jié),合理的建模設(shè)計(jì)直接影響系統(tǒng)的性能和可維護(hù)性。本文將以智能電表為例,詳細(xì)介紹TDengine時(shí)序數(shù)據(jù)庫(kù)的數(shù)據(jù)建模實(shí)踐。

一、建模設(shè)計(jì)原則

1.1 核心設(shè)計(jì)理念

TDengine采用”一個(gè)數(shù)據(jù)采集點(diǎn)一張表”的設(shè)計(jì)理念,這一理念帶來(lái)以下優(yōu)勢(shì):

  • 寫(xiě)入性能最優(yōu):?jiǎn)伪韱螌?xiě)入者,無(wú)鎖寫(xiě)入
  • 查詢(xún)效率最高:數(shù)據(jù)連續(xù)存儲(chǔ),減少隨機(jī)IO
  • 壓縮率最高:列式存儲(chǔ),變化緩慢的數(shù)據(jù)壓縮率高

1.2 建模步驟

  1. 分析業(yè)務(wù)場(chǎng)景,識(shí)別數(shù)據(jù)采集點(diǎn)
  2. 確定采集量和標(biāo)簽
  3. 設(shè)計(jì)超級(jí)表結(jié)構(gòu)
  4. 創(chuàng)建數(shù)據(jù)庫(kù)
  5. 創(chuàng)建超級(jí)表和子表

二、創(chuàng)建數(shù)據(jù)庫(kù)

2.1 數(shù)據(jù)庫(kù)創(chuàng)建語(yǔ)法

CREATE DATABASE power PRECISION 'ms' KEEP 3650 DURATION 10 BUFFER 16;

2.2 參數(shù)詳解

參數(shù)說(shuō)明示例值
PRECISION時(shí)間戳精度‘ms’(毫秒)
KEEP數(shù)據(jù)保留天數(shù)3650(約10年)
DURATION數(shù)據(jù)文件時(shí)間跨度10(天)
BUFFER寫(xiě)入內(nèi)存池大小16(MB)

2.3 參數(shù)選擇建議

時(shí)間精度選擇

  • 毫秒(ms):適用于大多數(shù)物聯(lián)網(wǎng)場(chǎng)景
  • 微秒(us):適用于金融、高頻交易場(chǎng)景
  • 納秒(ns):適用于科學(xué)實(shí)驗(yàn)、精密測(cè)量

數(shù)據(jù)保留策略

  • 根據(jù)業(yè)務(wù)需求和存儲(chǔ)容量確定
  • 歷史數(shù)據(jù)可定期歸檔
  • 冷熱數(shù)據(jù)分層存儲(chǔ)

2.4 切換數(shù)據(jù)庫(kù)

USE power;

執(zhí)行后,后續(xù)的插入、查詢(xún)等操作都在當(dāng)前的power數(shù)據(jù)庫(kù)中進(jìn)行。

三、創(chuàng)建超級(jí)表

3.1 超級(jí)表創(chuàng)建語(yǔ)法

CREATE STABLE meters (
    ts timestamp, 
    current float, 
    voltage int, 
    phase float
) TAGS (
    location varchar(64), 
    group_id int
);

3.2 列定義規(guī)則

時(shí)間戳列

  • 第1列必須為時(shí)間戳列
  • 格式:列名 timestamp

采集量列

  • 從第2列開(kāi)始定義
  • 數(shù)據(jù)類(lèi)型可以是整型、浮點(diǎn)型、字符串等
  • 示例:current float、voltage int

標(biāo)簽列

  • 通過(guò)TAGS關(guān)鍵字定義
  • 數(shù)據(jù)類(lèi)型可以是任意類(lèi)型
  • 標(biāo)簽名不能與采集量列名相同

3.3 數(shù)據(jù)類(lèi)型選擇

數(shù)據(jù)類(lèi)型適用場(chǎng)景示例
TINYINT小范圍整數(shù)狀態(tài)碼
SMALLINT中等范圍整數(shù)溫度(整數(shù))
INT常規(guī)整數(shù)電壓值
BIGINT大整數(shù)設(shè)備ID
FLOAT單精度浮點(diǎn)電流值
DOUBLE雙精度浮點(diǎn)精確測(cè)量值
VARCHAR字符串位置信息
TIMESTAMP時(shí)間戳采集時(shí)間

四、創(chuàng)建子表

4.1 手動(dòng)創(chuàng)建子表

CREATE TABLE d1001 
USING meters (
    location,
    group_id
) TAGS (
    "California.SanFrancisco", 
    2
);

參數(shù)說(shuō)明:

  • d1001:子表名稱(chēng)
  • USING meters:使用超級(jí)表meters作為模板
  • TAGS后指定標(biāo)簽值

4.2 自動(dòng)建表

在寫(xiě)入數(shù)據(jù)時(shí)自動(dòng)創(chuàng)建子表:

INSERT INTO d1002 
USING meters 
TAGS (
    "California.SanFrancisco", 
    2
) VALUES (
    NOW, 
    10.2, 
    219, 
    0.32
);

當(dāng)子表d1002不存在時(shí),系統(tǒng)會(huì)先自動(dòng)創(chuàng)建子表,再寫(xiě)入數(shù)據(jù)。

4.3 部分標(biāo)簽指定

可以只指定部分標(biāo)簽值,未指定的標(biāo)簽值為NULL:

INSERT INTO d1005
USING meters (location)
TAGS ("beijing.chaoyang")
VALUES ("2018-10-04 14:38:07", 10.15, 217, 0.33);

五、創(chuàng)建普通表

5.1 普通表概念

普通表是不帶任何標(biāo)簽的表,與普通關(guān)系型數(shù)據(jù)庫(kù)中的表相似。

5.2 普通表與子表的區(qū)別

特性普通表子表
標(biāo)簽擴(kuò)展性無(wú)標(biāo)簽具有可變標(biāo)簽
表歸屬獨(dú)立存在隸屬于超級(jí)表
轉(zhuǎn)換限制不能相互轉(zhuǎn)換不能相互轉(zhuǎn)換

5.3 使用場(chǎng)景

普通表適用于:

  • 不需要標(biāo)簽分類(lèi)的數(shù)據(jù)
  • 單一數(shù)據(jù)源的場(chǎng)景
  • 與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)兼容的需求

六、建模最佳實(shí)踐

6.1 數(shù)據(jù)庫(kù)規(guī)劃

按數(shù)據(jù)特征分庫(kù)

  • 不同采集頻率的數(shù)據(jù)分庫(kù)
  • 不同保留策略的數(shù)據(jù)分庫(kù)
  • 不同業(yè)務(wù)域的數(shù)據(jù)分庫(kù)

示例

-- 高頻采集數(shù)據(jù)庫(kù)
CREATE DATABASE high_freq PRECISION 'ms' KEEP 365 DURATION 1;

-- 低頻采集數(shù)據(jù)庫(kù)
CREATE DATABASE low_freq PRECISION 'ms' KEEP 3650 DURATION 30;

6.2 超級(jí)表設(shè)計(jì)

同類(lèi)型設(shè)備歸為一張超級(jí)表

  • 相同采集量結(jié)構(gòu)
  • 相同的標(biāo)簽維度
  • 便于統(tǒng)一查詢(xún)和管理

標(biāo)簽設(shè)計(jì)原則

  • 選擇穩(wěn)定不變的屬性作為標(biāo)簽
  • 常用于篩選條件的屬性?xún)?yōu)先
  • 標(biāo)簽數(shù)量不宜過(guò)多(建議不超過(guò)10個(gè))

6.3 子表命名規(guī)范

推薦命名方式

  • 使用設(shè)備ID作為子表名
  • 保持命名規(guī)則的一致性
  • 避免使用特殊字符

示例

d1001, d1002, d1003...  -- 設(shè)備ID
meter_sf_001            -- 地區(qū)+序號(hào)
sensor_temp_001         -- 傳感器類(lèi)型+序號(hào)

6.4 采集量設(shè)計(jì)

列數(shù)控制

  • 單表列數(shù)不宜過(guò)多(建議不超過(guò)50列)
  • 相關(guān)采集量放在一起
  • 不常用的采集量可單獨(dú)建表

數(shù)據(jù)類(lèi)型選擇

  • 選擇合適的數(shù)據(jù)類(lèi)型,避免浪費(fèi)存儲(chǔ)
  • 浮點(diǎn)數(shù)注意精度要求
  • 字符串類(lèi)型指定合理長(zhǎng)度

七、完整建模示例

7.1 場(chǎng)景描述

某智能電表系統(tǒng),需要存儲(chǔ)以下數(shù)據(jù):

  • 設(shè)備數(shù)量:10000臺(tái)
  • 采集頻率:每10秒一次
  • 采集量:電流、電壓、相位
  • 標(biāo)簽:位置、分組ID

7.2 建模實(shí)現(xiàn)

-- 1. 創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE power 
PRECISION 'ms' 
KEEP 365 
DURATION 10 
BUFFER 96;

-- 2. 切換數(shù)據(jù)庫(kù)
USE power;

-- 3. 創(chuàng)建超級(jí)表
CREATE STABLE meters (
    ts timestamp, 
    current float, 
    voltage int, 
    phase float
) TAGS (
    location varchar(64), 
    group_id int
);

-- 4. 寫(xiě)入數(shù)據(jù)(自動(dòng)創(chuàng)建子表)
INSERT INTO d1001 USING meters TAGS ("California.SanFrancisco", 2) 
VALUES (NOW, 10.3, 219, 0.31);

7.3 查詢(xún)驗(yàn)證

-- 查詢(xún)所有設(shè)備
SELECT COUNT(*) FROM meters;

-- 按地區(qū)分組統(tǒng)計(jì)
SELECT location, COUNT(*), AVG(voltage) 
FROM meters 
GROUP BY location;

-- 時(shí)間窗口聚合
SELECT tbname, _wstart, avg(voltage) 
FROM meters 
WHERE ts >= NOW - 1h 
PARTITION BY tbname 
INTERVAL(1m);

八、建模常見(jiàn)問(wèn)題

8.1 表數(shù)量過(guò)多

問(wèn)題:設(shè)備數(shù)量巨大,擔(dān)心表數(shù)量過(guò)多

解決方案:TDengine專(zhuān)門(mén)優(yōu)化了海量表管理,千萬(wàn)級(jí)表數(shù)量不影響性能

8.2 標(biāo)簽修改需求

問(wèn)題:設(shè)備標(biāo)簽可能需要修改

解決方案:TDengine支持標(biāo)簽的修改、添加、刪除操作

8.3 歷史數(shù)據(jù)遷移

問(wèn)題:如何遷移歷史數(shù)據(jù)

解決方案

  • 使用批量INSERT語(yǔ)句導(dǎo)入
  • 通過(guò)第三方工具(如DataX)遷移
  • 利用TDengine的導(dǎo)入功能

九、性能優(yōu)化建議

9.1 寫(xiě)入優(yōu)化

  • 使用批量寫(xiě)入代替單條寫(xiě)入
  • 利用自動(dòng)建表機(jī)制
  • 合理設(shè)置BUFFER參數(shù)

9.2 查詢(xún)優(yōu)化

  • 查詢(xún)時(shí)指定時(shí)間范圍
  • 使用PARTITION BY并行查詢(xún)
  • 合理使用SLIMIT控制結(jié)果

9.3 存儲(chǔ)優(yōu)化

  • 選擇合適的KEEP參數(shù)
  • 定期清理過(guò)期數(shù)據(jù)
  • 監(jiān)控壓縮率

十、監(jiān)控與維護(hù)

10.1 查看壓縮率

SELECT * FROM INFORMATION_SCHEMA.INS_DISK_USAGE 
WHERE db_name = 'power';

10.2 查看表分布

SHOW TABLE DISTRIBUTED meters;

10.3 數(shù)據(jù)庫(kù)狀態(tài)

SHOW DATABASES;
SHOW STABLES;
SHOW TABLES;

總結(jié)

數(shù)據(jù)建模是時(shí)序數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)的基礎(chǔ),合理的建模設(shè)計(jì)能夠充分發(fā)揮TDengine的性能優(yōu)勢(shì)。通過(guò)”一個(gè)數(shù)據(jù)采集點(diǎn)一張表”的設(shè)計(jì)理念,配合超級(jí)表模板機(jī)制,開(kāi)發(fā)者可以高效管理海量設(shè)備數(shù)據(jù)。本文介紹的建模實(shí)踐,包括數(shù)據(jù)庫(kù)創(chuàng)建、超級(jí)表設(shè)計(jì)、子表管理等,為構(gòu)建工業(yè)數(shù)據(jù)管理平臺(tái)(IDMP)和實(shí)時(shí)數(shù)據(jù)庫(kù)應(yīng)用提供了完整的指導(dǎo)。TDengine憑借其專(zhuān)業(yè)的時(shí)序數(shù)據(jù)建模能力,成為物聯(lián)網(wǎng)和工業(yè)場(chǎng)景的理想選擇。