TDengine 如何进行数据建模

小 T 导读:在使用 TDengine 的时候,通过官网的技术文档可以学习到建库(database)、建表(table)的各种 SQL 语句,但是一旦要跟自己的具体业务场景结合,经验不足的朋友可能会不知道到底如何下手,本文将分享一些常见的建模方式,希望帮助大家更好地落地 TDengine。

不同于 OpenTSDB、Prometheus 等时序数据库(Time-Series Database),TDengine 允许一个表有多个列(即每条记录中,多个采集量共用一个时间戳的存储方式),这样在建表时可以有更大的灵活性。

智能电表是个典型的可以按照设备建表,多列存储时序数据的例子。但在实际使用过程中,情况可能会更复杂,一定要结合本身数据的情况来灵活设计表结构。

按照设备建表,在官网文档中已经有详细的例子和介绍,本文除了介绍一个设备一张表的建模方式外,还会对另外几种建模方式做一个补充。

1、按照设备建表的标准情形

上文中的智能电表例子就是一个设备一张表的标准情形。这种标准情形有以下特点:

(1) 相同类型的设备,采集指标完全相同。(比如上文例子中的智能电表,只采集电流、电压、相位三个指标)

(2) 就同一个设备而言,各采集指标同时采集,采集时间戳相同。

(3) 就同一个设备而言,各采集指标每次采集的数据最好是在同一个消息中上报到 TDengine,而非分别上报。

这种情况的处理最简单:

  1. 采用多列模式,即为每个类型的设备创建一张多列超级表。

  2. 为该类型的每个设备创建一张子表。

  3. 子表从第二列起,每一列均为一个采集指标。

图一:TDengine database 表设计

以智能电表为例:

图二:一个采集点一张表

图三:超级表使用实例

2、按照设备建表,但同类型设备的采集指标不完全相同

实际生产中,同类型的设备有时候采集指标也不完全相同,这种情况下有以下特点:

(1) 相同类型的设备,采集指标大体相同,但每个设备可能有少量个性化的指标。(前提:所有个性化指标总数加上共有指标总数不超过 1024 个,2.1.7.0 版本后总数为不超过 4096 个)

(2) 就同一个设备而言,各采集指标同时采集,采集时间戳相同。

(3) 就同一个设备而言,各采集指标每次采集的数据在同一个消息中上报到 TDengine,而非分别上报。
这种情况类似于 1,但区别是每个设备可能有个性化的采集指标。针对这种情形的处理思路常称为“大宽表”:

  1. 创建一个多列超级表,包含所有不同的采集指标列,为所有采集指标的全集。

  2. 为每个设备创建一张子表。

  3. 子表从第二列起,每一列均为一个采集指标。

  4. 数据写入时,对于该设备不具备的采集指标填入 null 值。

图示和图三接近,不同处在于建立超级表时,采集指标需要按照最多的设备去处理。

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

更复杂的场景中,设备的固定表结构很难抽象出来,或者表结构经常改变,无法固定,此时需要有更灵活的处理思路。以下任一个特点满足时,需考虑按指标建表的思路:

(1) 相同类型的设备,采集指标无法固定,或者每个设备有大量个性化的指标。(前提:所有个性化指标总数加上共有指标总数超过 1024,2.1.7.0 版本后为指标总数超过 4096 个)

(2) 就同一个设备而言,各采集指标有各自的采集时间戳。(即同一个设备的不同采集指标的采集时间、采集周期等无法保证相同)

(3) 就同一个设备而言,各采集指标每次采集的数据分多个消息上报到 TDengine,且时间延迟无法确定。


这种情形要求更高的灵活性。一般处理思路如下:

  1. 创建单列的超级表,即时间戳+采集值,而在标签项中增加采集指标 ID 这一标签。

  2. 每个设备的每个采集指标单独创建一张表,在标签项中增加具体的采集指标 ID。

  3. 不同数据类型的采集指标要划归不同超级表,比如数值型、布尔型和字符串型的数据应该分别归入三类对应的超级表。

图四:单列模型建模示例

示例如下:

图五:单列模型建模实例

4、按照采集指标建表-2

此场景可能出现在工业物联网 PLC 数据采集中。

(1) 相同类型的设备,采集指标无法固定。

(2) 就同一设备而言,各采集指标有各自的采集频率,不过采集频率是确定的,比如 PLC1~PLC10 的采集频率是 10ms,PLC11~PLC20 的采集频率是 20ms。

(3) 就同一设备而言,后续可能会动态添加 PLC 通道。期望可以在不修改代码的情况下动态增加超级表的列。

(4) 希望通过一个超级表来统一管理。


建模思路:

  1. 创建多列的超级表,采集字段不同的数据类型各设置建立一个。即时间戳+采集值 int+采集值 double+ 采集值 nchar……,而在标签项中增加采集指标 ID 这一标签。

  2. 每个设备的采集指标单独创建一张表,在标签项中增加具体的采集指标 ID。

  3. 其中时间戳必填的列,剩余列则要根据测点类型填写,比如测点上报的是整形数据,就只需要设置time、采集值 int 这两列,其余列为 null。

示例如下:

图六:按照采集指标建模实例

以上为几种常见建模方式,覆盖了大部分的实际场景,当然实际业务中的情况是多种多样的,如果以上建模思路不能满足,也欢迎和加入 TDengine 的用户社区,我们一起交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指针及其应用

1.定义 指针:也是一个变量,存放所指变量的地址,根据变量定义的不同,指针指向的类型也不同 注意:*是与前面类型一体的 int main(void) {int* p; //等价于int *p;//为了区分变量,C语言中一般将*放置于变量…

.NET 8.0 发布到 IIS

如何在IIS(Internet信息服务)上发布ASP.NET Core 8? 在本文中,我假设您的 Windows Server IIS 上已经有一个应用程序池。 按照步骤了解在 IIS 环境下发布 ASP.NET Core 8 应用程序的技巧。 您需要设置代码以支持 IIS 并将项目配…

智算让大模型触手可及

本文整理自2023年 12 月 20 日举办的「2023 百度云智大会智算大会」主论坛,百度智能云 AI 与大数据平台总经理忻舟的主题演讲《智算让大模型触手可及》。 在之前极客公园举办的创新大会上,百度集团董事长兼 CEO 李彦宏先生提到:卷 AI 原生应用…

【Linux】各目录说明

【常见目录说明】 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。 /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以…

智能助手的巅峰对决:ChatGPT对阵文心一言

在人工智能的世界里,ChatGPT与文心一言都是备受瞩目的明星产品。它们凭借先进的技术和强大的性能,吸引了大量用户的关注。但究竟哪一个在智能回复、语言准确性、知识库丰富度等方面更胜一筹呢?下面就让我们一探究竟。 首先来谈谈智能回复能力…

数据结构-排序

这篇文章主要记录各种排序算法的思想及实现代码,最后对各种算法的性能进行了对比。 目录 排序的概念及其运用 排序的概念 排序运用 常见的排序算法 常见排序算法的实现 插入排序 基本思想 直接插入排序 希尔排序 选择排序 基本思想 直接选择排序 堆排序…

C++设计模式-- 2.代理模式 和 外观模式

文章目录 代理模式外观模式角色和职责代码演示一:代码演示二:外观模式适用场景 代理模式 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合 或不能直接引用另一个对象,而代…

数据结构与算法:快速排序

数据结构与算法:快速排序 快速排序荷兰国旗问题霍尔版本递归优化小区间优化 PartSort优化三数取中 挖坑法前后指针法 非递归法 快速排序 荷兰国旗问题 想要理解快速排序,就先理解这个问题: [LeetCode75.颜色分类] 荷兰国旗是由红白蓝三色组…

10.云原生之在线开发调试

云原生专栏大纲 文章目录 vscode-server介绍VSCode Server 和云开发结合vscode-server安装code-server安装插件在线安装插件离线安装插件安装中文插件 配置开发环境在容器中安装开放环境Dockerfile制作镜像 git拉取项目 vscode-server介绍 VSCode Server(Visual S…

动态内存面试的经典题目

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

网络安全中的“三高一弱”和“两高一弱”是什么?

大家在一些网络安全检查中,可能经常会遇到“三高一弱”这个说法。那么,三高一弱指的是什么呢? 三高:高危漏洞、高危端口、高风险外连 一弱:弱口令 一共是4个网络安全风险,其中的“高危漏洞、高危端口、弱…

电脑怎么录制屏幕?看这一篇就够了

在数字时代,电脑屏幕录制已经成为人们日常生活中一个越来越重要的工具。无论是录制在线课程、游戏精彩时刻,还是远程会议、软件演示,屏幕录制都可以帮助我们更好地保存和分享这些信息。可是您知道电脑怎么录制屏幕吗?本文将介绍两…

旧电脑追加内存条

内存条基本知识 DDR4 2666 DDR(Double Data Rate)双倍速率 4 第四代 2666 内存主频2666MHz 内存时序 内存的延迟时间 传输带宽 MB/s 内存和CPU之间的传输速度 针脚数 数字-PIn 288-PIN就是288个针脚 选购内存条 …

【国产mcu填坑篇】华大单片机(小华半导体)一、SPI的DMA应用(发送主机)HC32L136

最近需要用华大的hc32l136的硬件SPIDMA传输,瞎写很久没调好,看参考手册,瞎碰一天搞通了。。。 先说下我之前犯的错误,也是最宝贵的经验,供参考 没多看参考手册直接写(即使有点烂仍然提供了最高的参考价值。…

iis配置asp网站

1.安装IIS的ASP win7和win10都是一样的 下安装IIS时ASP一般被默认不选中的状态,因此需要打开IIS检查功能视图栏中是否存在ASP选项,若没有则需要从控制面板->程序和 功能->打开或关闭Windows功能->Internet信息服务->万维网服务->应用程序…

数环通更新动态|新增连接器抖店自建、叮当OKR、千易ERP、货拉拉

更新快速预览 新增连接器4个 抖店自建 叮当OKR 千易ERP 货拉拉 应用更新2个 百度统计(2) 旺店通(1) 应用连接器 新增连接器 1.抖店自建 抖店是抖音官方打造的电商商家实现一站式经营平台,为商家提供全链路服务&#xf…

Selenium定位元素的方法css和xpath的区别

selenium是一种自动化测试工具,它可以通过不同的定位方式来识别网页上的元素,如id、name、class、tag、link text、partial link text、css和xpath。 css和xpath是两种常用的定位方式,它们都可以通过元素的属性或者层级关系来定位元素&#…

MacOS环境下Kali Linux安装及使用指导

Kali Linux是一个开源的、基于Debian的Linux发行版,面向各种信息安全任务,如渗透测试、安全研究、计算机取证和逆向工程,是最先进的渗透测试发行版,它的前身是BackTrack。 1. 我们为什么要用Kali Linux 由于Kali Linux具有以下特…

【脑筋急转弯系列】乒乓球称重问题

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

FDTD2018a安装问题记录

FDTD2018a安装问题记录 目录问题解决方案 目录 问题 解决方案 电脑名字如果是中文改成英文