前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >tdengine入门详解

tdengine入门详解

作者头像
johnhuster的分享
发布于 2023-10-16 11:58:59
发布于 2023-10-16 11:58:59
2.2K0
举报
文章被收录于专栏:johnhusterjohnhuster
TDengine是什么?

TDengine 是一款开源、高性能、云原生时序数据库(Time Series Database, TSDB), 它专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计,基于C语言开发

什么是时序数据库?时序数据产生的背景是什么?

https://db-engines.com/

基础知识
采集量

采集量是指传感器、设备或其他类型采集点采集的物理量,比如电流、电压、温度、压力、GPS 位置等,是随时间变化的,数据类型可以是整型、浮点型、布尔型,也可是字符串。随着时间的推移,存储的采集量的数据量越来越大。智能电表示例中的电流、电压、相位就是采集量。

标签

标签是指传感器、设备或其他类型采集点的静态属性,不是随时间变化的,比如设备型号、颜色、设备的所在地等,数据类型可以是任何类型。

数据采集点

数据采集点是指按照预设时间周期或受事件触发采集物理量的硬件或软件。一个数据采集点可以采集一个或多个采集量,但这些采集量都是同一时刻采集的,具有相同的时间戳

TDengine 采用传统的关系型数据库模型管理数据,需要先创建库,然后创建表,之后才能插入或查询数据。TDengine 采取一个数据采集点一张表的策略,该策略会影响TDengine整体表结构的设计。

超级表

由于一个数据采集点一张表,导致表的数量巨增,难以管理,而且应用经常需要做采集点之间的聚合操作,聚合的操作也变得复杂起来。在 TDengine 的设计里,用来代表一个具体的数据采集点超级表用来代表一组相同类型的数据采集点集合。

子表

以超级表为模板创建的表

库是指一组表的集合。TDengine 容许一个运行实例有多个库,而且每个库可以配置不同的存储策略。不同类型的数据采集点往往具有不同的数据特征,包括数据采集频率的高低,数据保留时间的长短,副本的数目,数据块的大小,是否允许更新数据等等。

TDengine一些独特的设计点:

  1. 超级表,在 TDengine 的设计里,表用来代表一个具体的数据采集点(一个设备),超级表用来代表一组相同类型的数据采集点集合

Device ID

Timestamp

采集指标

标签

current

voltage

phase

location

groupid

d1001

1538548685000

10.3

219

0.31

California.SanFrancisco

2

d1002

1538548684000

10.2

220

0.23

California.SanFrancisco

3

d1003

1538548686500

11.5

221

0.35

California.LosAngeles

3

d1004

1538548685500

13.4

223

0.29

California.LosAngeles

2

d1001

1538548695000

12.6

218

0.33

California.SanFrancisco

2

d1004

1538548696600

11.8

221

0.28

California.LosAngeles

2

d1002

1538548696650

10.3

218

0.25

California.SanFrancisco

3

d1001

1538548696800

12.3

221

0.31

California.SanFrancisco

2

为充分利用其数据的时序性和其他数据特点,TDengine 采取一个数据采集点一张表的策略,要求对每个数据采集点单独建表(比如有一千万个智能电表,就需创建一千万张表,上述表格中的 d1001,d1002,d1003,d1004 都需单独建表),用来存储这个数据采集点所采集的时序数据。这种设计有几大优点:

  1. 无锁写入:由于不同数据采集点产生数据的过程完全独立,每个数据采集点的数据源是唯一的,一张表也就只有一个写入者,这样就可采用无锁方式来写,写入速度就能大幅提升。
  2. 追加式写入:对于一个数据采集点而言,其产生的数据是按照时间排序的,因此写的操作可用追加的方式实现,进一步大幅提高数据写入速度。
  3. 减少随机操作:一个数据采集点的数据是以块为单位连续存储的。如果读取一个时间段的数据,它能大幅减少随机读取操作,成数量级的提升读取和查询速度。
  4. 针对性压缩:一个数据块内部,采用列式存储,对于不同数据类型,采用不同压缩算法,而且由于一个数据采集点的采集量的变化是缓慢的,压缩率更高
功能点
建立连接方式

连接器建立连接的方式,TDengine 提供两种:

  1. 通过 taosAdapter 组件提供的 REST API 建立与 taosd 的连接,这种连接方式简称“REST 连接”,
  2. 通过客户端驱动程序 taosc 直接与服务端程序 taosd 建立连接,这种连接方式简称“原生连接”。这种方式对驱动的匹配性要求较严。
  3. 优点:跨平台性好,不需要创建的docker镜像涵盖taosd驱动 缺点:性能比原生连接慢,性能降幅在30%左右。
查询数据
  1. 标准 SQL,含嵌套查询
  2. 时序数据特色函数
  3. 时序数据特色查询,例如降采样、插值、累加和、时间加权平均、状态窗口、会话窗口等
  4. 用户自定义函数(UDF)
多列模型与单列模型
  1. 多列模型适用于设备对应属性同时采集的场景(最初版本的内置网关),这样可以有较高的插入效率与存储效率
  2. 单列模型适用于设备对应属性不一定同时采集的场景(现在的内置网关采集模式)
查询功能

TDengine 支持如下查询功能:

  • 单列、多列数据查询
  • 标签和数值的多种过滤条件:>, <, =, <>, like 等
  • 聚合结果的分组(Group by)、排序(Order by)、约束输出(Limit/Offset)
  • 时间窗口(Interval)、会话窗口(Session)和状态窗口(State_window)等窗口切分聚合查询
  • 数值列及聚合结果的四则运算
  • 时间戳对齐的连接查询(Join Query: 隐式连接)操作
  • 多种聚合/计算函数: count, max, min, avg, sum, twa, stddev, leastsquares, top, bottom, first, last, percentile, apercentile, last_row, spread, diff 等
实例SQL演示
  1. 建库

create database if not exists meter vgroups 10 buffer 10 keep 30d;

  1. 统计指定时间范围数据量

select _wstart, _wend,count(*) from meter.meters

where id = '89c64310-7bf0-36ba-8c16-ef9648ef88f2' interval(10m);

  1. 获取设备属性最新值/最老值

select last(*) from meter.meters where id = '89c64310-7bf0-36ba-8c16-ef9648ef88f2';

select first(*) from meter.meters where id = '89c64310-7bf0-36ba-8c16-ef9648ef88f2';

  1. 插入记录时自动建表

insert into meter.meters_89c64310-7bf0-36ba-8c16-ef9648ef88f2 using meter.meters tags('89c64310-7bf0-36ba-8c16-ef9648ef88f2') values(now(), 15, 222, 0.5);

  1. 同时向多个表写入数据

insert into meter.meters_89c64310-7bf0-36ba-8c16-ef9648ef88f2 using meter.meters tags('89c64310-7bf0-36ba-8c16-ef9648ef88f2')

values(now(), 15, 222, 0.5)

meter.meters_cdf2373e-457b-312c-8553-36d6c1a09c93 using meter.meters tags('cdf2373e-457b-312c-8553-36d6c1a09c93')

values(now(), 18, 235, 0.46);

  1. 流计算-https://docs.taosdata.com/taos-sql/stream/

create stream if not exists s1 fill_history 1 into meter.st1 as select count(*) from meter.meters interval(1h);

select * from meter.st1 ;

// 删除流

DROP STREAM IF EXISTS s1 ;

  1. 数据切分查询(PARTITION BY part_list)

select location,max(current),count(*) from test.meters partition by location;

  1. 时间窗口切分查询

select _wstart,count(*) from meter.meters

where id = 'cdf2373e-457b-312c-8553-36d6c1a09c93' and ts > '2023-07-30 13:00:00'

interval(10m);

  1. 状态窗口查询

select * from meter.status;

SELECT COUNT(*), FIRST(ts), status FROM meter.status STATE_WINDOW(status);

整体架构
主要逻辑单元

物理节点(pnode): pnode 是一独立运行、拥有自己的计算、存储和网络能力的计算机,可以是安装有 OS 的物理机、虚拟机或 Docker 容器

数据节点(dnode): dnode 是 TDengine 服务器侧执行代码 taosd 在物理节点上的一个运行实例,一个工作的系统必须有至少一个数据节点。dnode 包含零到多个逻辑的虚拟节点(vnode),零或者至多一个逻辑的管理节点(mnode),零或者至多一个逻辑的弹性计算节点(qnode),零或者至多一个逻辑的流计算节点(snode)。

虚拟节点(vnode): 为更好的支持数据分片、负载均衡,防止数据过热或倾斜,数据节点被虚拟化成多个虚拟节点(vnode,图中 V2,V3,V4 等)。每个 vnode 都是一个相对独立的工作单元,是时序数据存储的基本单元,具有独立的运行线程、内存空间与持久化存储的路径。

管理节点(mnode): 一个虚拟的逻辑单元,负责所有数据节点运行状态的监控和维护,以及节点之间的负载均衡(图中 M)。同时,管理节点也负责元数据(包括用户、数据库、超级表等)的存储和管理,因此也称为 Meta Node。mnode 支持多副本,采用 RAFT 一致性协议,保证系统的高可用与高可靠,任何数据更新操作只能在 Leader 上进行。

计算节点(qnode): 一个虚拟的逻辑单元,运行查询计算任务,也包括基于系统表来实现的 show 命令(图中 Q)。集群中可配置多个 qnode,在整个集群内部共享使用(图中 Q1,Q2,Q3)。qnode 不与具体的 DB 绑定,即一个 qnode 可以同时执行多个 DB 的查询任务。每个 dnode 上至多有一个 qnode,由所属的数据节点的 EP 来唯一标识。

流计算节点(snode): 一个虚拟的逻辑单元,只运行流计算任务(图中 S)。集群中可配置多个 snode,在整个集群内部共享使用(图中 S1,S2,S3)。snode 不与具体的 stream 绑定,即一个 snode 可以同时执行多个 stream 的计算任务。

虚拟节点组(VGroup): 不同数据节点上的 vnode 可以组成一个虚拟节点组(vgroup),采用 RAFT 一致性协议,保证系统的高可用与高可靠。写操作只能在 leader vnode 上进行,系统采用异步复制的方式将数据同步到 follower vnode,这样确保了一份数据在多个物理节点上有拷贝。

Taosc taosc 是 TDengine 给应用提供的驱动程序(driver),负责处理应用与集群的接口交互,用都是通过 taosc 而不是直接连接集群中的数据节点与整个集群进行交互的。这个模块负责获取并缓存元数据;将插入、查询等请求转发到正确的数据节点;在把结果返回给应用时,还需要负责最后一级的聚合、排序、过滤等操作。

存储模型

TDengine 存储的数据包括采集的时序数据以及库、表相关的元数据、标签数据等,这些数据具体分为三部分:

  1. 时序数据:存放于 vnode 里,由 data、head 和 last 三个文件组成,数据量大,查询量取决于应用场景。容许乱序写入,但暂时不支持删除操作。
  2. 数据表元数据:包含标签信息和 Table Schema 信息,存放于 vnode 里的 meta 文件,支持增删改查四个标准操作。支持多核多线程并发查询。只要计算内存足够,元数据全内存存储,千万级别规模的标签数据过滤结果能毫秒级返回。在内存资源不足的情况下,仍然可以支持数千万张表的快速查询。
  3. 数据库元数据:存放于 mnode 里,包含系统节点、用户、DB、STable Schema 等信息,支持增删改查四个标准操作。这部分数据的量不大,可以全内存保存,而且由于客户端有缓存,查询量也不大。

与典型的 NoSQL 存储模型相比,TDengine 将标签数据时序数据完全分离存储,它具有两大优势:

  1. 能够极大地降低标签数据存储冗余度:一般的 NoSQL 数据库或时序数据库,采用的 K-V 存储,其中的 Key 包含时间戳、设备 ID、各种标签。
  2. 能够实现极为高效的多表聚合查询:做多表之间聚合查询时,先把符合标签过滤条件的表查找出来,然后再查找这些表相应的数据块,这样大幅减少要扫描的数据集,从而大幅提高查询效率。
数据分片

TDengine 是通过 vnode 来实现数据分片的,通过一个时间段一个数据文件来实现时序数据分区的。

vnode(虚拟数据节点)负责为采集的时序数据提供写入、查询和计算功能。为便于负载均衡、数据恢复、支持异构环境,TDengine 将一个数据节点根据其计算和存储资源切分为多个 vnode。这些 vnode 的管理是 TDengine 自动完成的,对应用完全透明。

数据分区

TDengine 除 vnode 分片之外,还对时序数据按照时间段进行分区。每个数据文件只包含一个时间段的时序数据,时间段的长度由 DB 的配置参数 days 决定。这样分区便于高效实现数据的保留策略,只要数据文件超过规定的天数(系统配置参数 keep),将被自动删除

负载均衡

每个 dnode 都定时向 mnode(虚拟管理节点)报告其状态(包括硬盘空间、内存大小、CPU、网络、虚拟节点个数等),因此 mnode 了解整个集群的状态。基于整体状态,当 mnode 发现某个 dnode 负载过重,它会将 dnode 上的一个或多个 vnode 挪到其他 dnode。

多级存储

多级存储功能仅企业版支持,

生态
使用注意事项
  1. 时间戳:
    1. 所有表的第一列都必须是时间戳类型,且为其主键,TDengine 要求插入的数据必须要有时间戳
    2. 时间戳不同的格式语法会有不同的精度影响。字符串格式的时间戳写法不受所在 DATABASE 的时间精度设置影响;而长整形格式的时间戳写法会受到所在 DATABASE 的时间精度设置影响。例如,时间戳"2021-07-13 16:16:48"的 UNIX 秒数为 1626164208。则其在毫秒精度下需要写作 1626164208000,在微秒精度设置下就需要写为 1626164208000000,纳秒精度设置下需要写为 1626164208000000000。
    3. 一次插入多行数据时不要把首列的时间戳的值都写 NOW。否则会导致语句中的多条记录使用相同的时间戳,于是就可能出现相互覆盖以致这些数据行无法全部被正确保存。其原因在于,NOW 函数在执行中会被解析为所在 SQL 语句的客户端执行时间,出现在同一语句中的多个 NOW 标记也就会被替换为完全相同的时间戳取值。
    4. 允许插入的最老记录的时间戳=now - KEEP 值,超过该范围无法插入
  2. json格式,目前版本json只支持tag,不支持其他数据列
  3. 长度调整,只支持调大,不支持调小
  4. 同一条sql写入vnode,彼此间执行结果不影响

这是因为多个子表可能分布在不同的 VNODE 上,客户端将 INSERT 语句完整解析后,将数据发往各个涉及的 VNODE 上,每个 VNODE 独立进行写入操作。如果某个 VNODE 因为某些原因(比如网络问题或磁盘故障)导致写入失败,并不会影响其他 VNODE 节点的写入。

性能对比

TDengine vs Cassandra性能对比 https://www.taosdata.com/engineering/573.html

扩展阅读
  1. https://db-engines.com/en/blog_post/71 时序数据库产生的背景
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
时序数据库:TDengine整体架构
TDengine 的设计是基于单个硬件、软件系统不可靠,基于任何单台计算机都无法提供足够计算能力和存储能力处理海量数据的假设进行设计的。因此 TDengine 从研发的第一天起,就按照分布式高可靠架构进行设计,是支持水平扩展的,这样任何单台或多台服务器发生硬件故障或软件错误都不影响系统的可用性和可靠性。同时,通过节点虚拟化并辅以自动化负载均衡技术,TDengine 能最高效率地利用异构集群中的计算和存储资源降低硬件投资。
Freedom123
2024/03/29
3.2K0
时序数据库:TDengine整体架构
tdengine 常用命令
2.4后,taosadapter拆分,想提供restful功能的6041端口需要安装后重启
leon公众号精选
2022/04/27
9330
时序数据库:TDengine简介
TDengine是一个高效的存储、查询、分析时序大数据的平台,专为物联网、车联网、工业互联网、运维监测等优化而设计。您可以像使用关系型数据库MySQL一样来使用它,但建议您在使用前仔细阅读一遍下面的文档,特别是 数据模型 与 数据建模。除本文档之外,欢迎 [下载产品白皮书](https://www.taosdata.com/downloads/TDengine White Paper.pdf)。
Freedom123
2024/03/29
6270
时序数据库:TDengine简介
一篇文章让你全面了解TDengine
TDengine是一个高效的存储、查询、分析时序大数据的平台,专为物联网、车联网、工业互联网、运维监测等优化而设计。你可以像使用关系型数据库MySQL一样来使用它,简单又方便。
谙忆
2022/05/10
1.9K1
如何帮助我们改造升级原有架构——基于TDengine 平台
TDengine 社区版是一开源版本,采用的是 AGPL 许可证,它具备高效处理时序数据所需要的所有功能,包括:
芯动大师
2024/09/26
2910
如何帮助我们改造升级原有架构——基于TDengine 平台
TDengine是怎么解决物联网大数据处理问题的
物联网平台里模块很多,但其中很重要的一块就是数据处理,包括采集、存储、查询、分析和计算,是整个物联网行业里面比较共性的部分,个性化程度不高。
春哥大魔王
2019/12/19
2K0
使用GoFrame连接和操作TDengine时序数据库
TDengine是一个高性能、可扩展的时序数据库,特别适用于物联网、工业互联网、车联网等场景下的大规模时序数据存储和分析。本文将介绍如何使用GoFrame框架连接和操作TDengine数据库,实现时序数据的插入、查询和分析。
每周聚焦
2024/09/04
2320
使用GoFrame连接和操作TDengine时序数据库
彻底开源、十倍性能的背后:TDengine 核心技术首度公开
曾几何时,“万物互联”还只是人们对未来美好的设想和愿望。但随着物联网产业的快速进化,尤其是受到传统工业数字化转型浪潮的推动,接入物联网的设备总量已经呈井喷趋势。从路灯到电表,从生产线传感器到智能家居设备,物联网正深入到社会生产生活的方方面面,逐渐成为数字化经济时代关键的底层基础设施。
深度学习与Python
2020/11/16
1.5K0
彻底开源、十倍性能的背后:TDengine 核心技术首度公开
时序数据库Apache IoTDB单元与多元时间序列写入与查询性能对比——田原
随着物联网的普及和工业技术的不断发展,高效管理海量时间序列的需求越来越广泛,数据量越来越庞大。时间序列主要分为两种,即单元时间序列和多元时间序列。单元时间序列是指一个具有单个时间相关变量的序列,单元时间序列只包含一列时间戳和一列值。多元时间序列是指一个具有多个时间相关变量的序列,多元时间序列包含多个一元时间序列作为分量,各个一元时间序列的采样时间点相同,所以数据可以用矩阵形式表示,每行为一个时间点,每列为一个一元时间序列。
Apache IoTDB
2022/09/02
1.9K2
时序数据库Apache IoTDB单元与多元时间序列写入与查询性能对比——田原
如何在树莓派上运行TDengine
早在 TDengine 还在开发阶段,就知道了它是主要运用在物联网领域的数据库。它的创始人是一位充满热情的资深程序员--陶建辉老师。很早以前在极客时间的一个直播上认识了这位老师,他对编程以及创业的热情深深的感染了我,也打破了那个“程序员只能干到 35 岁”的谬论。TDengine,便是陶老师创办的涛思数据的一个产品。
IT蜗壳-Tango
2023/12/14
3750
如何在树莓派上运行TDengine
通过ETL工具实现TDengine数据库查询与数据迁移
TDengine 是一款开源、云原生的时序数据库,专为物联网、工业互联网、金融、IT 运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警。
应用及数据集成专家
2024/07/17
3370
tdengine在持久化存储方面的设计
TDengine采用数据驱动的方式让缓存中的数据写入硬盘进行持久化存储。当vnode中缓存的数据达到一定规模时,为了不阻塞后续数据的写入,TDengine也会拉起落盘线程将缓存的数据写入持久化存储。TDengine在数据落盘时会打开新的数据库日志文件,在落盘成功后则会删除老的数据库日志文件,避免日志文件无限制地增长。
johnhuster的分享
2022/03/28
1.3K0
时序数据库:TDengine与其他时序数据库比对测试
TDengine Database开源项目里已经包含了性能对比测试的工具源代码。https://github.com/taosdata/TDengine/tests/comparisonTest,并基于这个开源的测试工具开展了TDengine和InfluxDB对比测试,TDengine和OpenTSDB对比测试,TDengine和Cassandra对比测试等一系列性能对比测试。为了更客观的对比TDengine和其他时序数据库(Time-Series Database)的性能差异,本项目采用由InfluxDB团队开源的性能对比测试工具来进行对比测试,相同的数据产生器,相同的测试用例,相同的测试方法,以保证测试的客观公平。
Freedom123
2024/03/29
1.8K0
性能提升10倍以上!开源物联网大数据平台TDengine如何实现超强性能?| TVP十日谈预告
硬核分享简介 10.28丨《开源的物联网大数据平台TDengine的超强性能是如何实现的?》 硬核大咖:陶建辉 北京涛思数据科技有限公司 CEO 硬核简介:基于物联网大数据特点,针对通用大数据平台的遇到的挑战,TDengine采取了一创新的存储模型,从两个维度切分数据,进行分区、分片,通过标签数据与时序数据分离存储的方式,提供了一更高效的多维数据聚合计算、分析的能力。 硬核大纲: 1.物联网数据特点 2.通用大数据平台遇到的挑战 3.创新的数据模型:一个采集点一张表 4.数据的切分:分区、分片 5.超级
TVP官方团队
2023/03/30
3180
性能提升10倍以上!开源物联网大数据平台TDengine如何实现超强性能?| TVP十日谈预告
从技术创新到设计思想,解密“TDengine”爆红始末 | Q推荐
作为一名 Coder,你一定知道鼎鼎大名的 GitHub。这个拥有 143 万开发者的社区目前托管了 431 万个 git 项目,除了 Ruby on Rails、jQuery、Ruby、Erlang/OTP 等众多知名的开源项目外,近三年流行的开源库往往也都选择在 GitHub 首发,如:BootStrap、Node.js、CoffeScript 等。
深度学习与Python
2020/11/06
9490
从技术创新到设计思想,解密“TDengine”爆红始末 | Q推荐
在SpringBoot项目中集成TDengine,并通过SQL对数据进行增删改查
本篇文章介绍SpringBoot项目集成TDengine后,如何通过MyBatis的mapper操作数据的增删改查,以及数据库,表的创建。
谙忆
2022/09/29
4.9K0
在SpringBoot项目中集成TDengine,并通过SQL对数据进行增删改查
从TDengine的开源说起技术选型
如果一艘快艇足够承载下你的所有货物到达彼岸,那么你不需要使用一艘轮船出行。产品设计和技术选型也是一样,我们经常会说:“我需要一个能够处理百万规模并发读写操作的,低延时,高可用的系统。” 如果按照这样的需求去设计系统,你可能得到的是一个设计复杂,代价昂贵的通用方案。但是如果仔细分析一下需求,你可能省略了需求背后的一些前提条件,比如真实的需求可能是这样的:“我需要一个能够处理百万规模的并发(只是理论峰值,平均情况小于10万并发)读写操作(读写比例1:9,只有追加写,没有修改操作)的低延时,高可用的(可以接受一定程度数据不一致性的)系统。” 那么你可能可以为这个特定的需求设计一个简单的,高效又低成本的系统。
曲奇泡芙
2019/08/16
3.2K0
从TDengine的开源说起技术选型
【CIO人物展】阿诗特CIO王飞:给新能源安上“云翼”,用更专业的数据库处理海量设备数据
伴随新能源物联网的发展,生产、分配、消耗等各个方面由设备及传感器所产生的时序数据量越来越大,严重挑战传统的以关系型数据库为核心的解决方案,数据处理性能低下、数据架构臃肿、存储成本高昂等问题频发,如何应对大数据量下的数据存储、查询、分析,成为了能源企业目前迫切需要解决的难点,数字化转型升级迫在眉睫。我所在的公司江苏阿诗特作为一家具有20多年储能逆变器和户用储能研发能力的企业,在此背景下也开始探索数据架构升级的有效路径。
数据猿
2023/11/02
2160
【CIO人物展】阿诗特CIO王飞:给新能源安上“云翼”,用更专业的数据库处理海量设备数据
FreeSWITCH TDengine模块
FreeSWITCH是一个开源、高性能的多协议的媒体引擎和通信平台。TDengine是一个开源、高性能、分布式,支持SQL的时序数据库。
杜金房
2022/03/31
1.2K0
Apache IoTDB 建模方式详解
之前写过一个 IoTDB 数据模型 的介绍 ,但是实际例子举得不多,所以部分用户对于一个实际系统如何建模还比较困惑,今天主要介绍一下建模实例。
Apache IoTDB
2020/12/01
1.4K0
Apache IoTDB 建模方式详解
推荐阅读
相关推荐
时序数据库:TDengine整体架构
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档