TDengine 是一款高性能、分布式、支持 SQL 的时序数据库



以下表格摘自于官网
| 设备ID | 时间戳 | 采集量 | 标签 | |||
|---|---|---|---|---|---|---|
| Device ID | Time Stamp | current | voltage | phase | location | groupId |
| d1001 | 1538548685000 | 10.3 | 219 | 0.31 | Beijing.Chaoyang | 2 |
| d1002 | 1538548684000 | 10.2 | 220 | 0.23 | Beijing.Chaoyang | 3 |
| d1003 | 1538548686500 | 11.5 | 221 | 0.35 | Beijing.Haidian | 3 |
| d1004 | 1538548685500 | 13.4 | 223 | 0.29 | Beijing.Haidian | 2 |
| d1001 | 1538548695000 | 12.6 | 218 | 0.33 | Beijing.Chaoyang | 2 |
| d1004 | 1538548696600 | 11.8 | 221 | 0.28 | Beijing.Haidian | 2 |
| d1002 | 1538548696650 | 10.3 | 218 | 0.25 | Beijing.Chaoyang | 3 |
| d1001 | 1538548696800 | 12.3 | 221 | 0.31 | Beijing.Chaoyang | 2 |
Time Stamp是TDengine规定的必有字段。current、voltage、phase分别是设备测量的数据,表示电流,电压,相位等数据location、groupId是设备的静态属性数据,location可以表示设备出厂厂家地址,groupId可以表示分组批次。总之标签属性可以作为设备的描述功能使用INTERVAL(1s, 500a),500毫秒开始统计1S间隔时间内的数据情况。TDengine中有几个关键名词【采集量】【标签】【采集点】TDengine中可以理解为【采集点】TDegine中的【标签】TDengine的写入性能会很高。TDengine是按照块进行存储读取的。因为物联网的特性,我们关注的也是一段时间内的数据。所以按块读取也能够提升我们的命中率。比如说用电量,我们不关注某一刻用多少点。我们更加关注的是1天用了多少,1月用了多少。TDengine的分表策略正好符合分库分表的需求。在结合TDengine的分布式特性。这就是一种分库分表的实践。关于分库分表我们这里不做赘述
select * from e1
union all
select * from e2
...
TDengine给我引出了超级表的概念。超级表是针对同一类型的设备而言的一种描述性表结构,我们在新添子表时也可以从模板中直接添加
CREATE TABLE ttt USING meters TAGS ("nanjing.liuhe", 2);
复制代码
TDengine理论性的东西,下面我们就来实际操作一把吧。想要能够操作前我们还的先安装好。官网推荐的方式时Docker 。 我这里也推荐使用Docker方式安装,但是Docker实在没啥可说的,这里我就演示安装包方式安装吧。sudo dpkg -i TDengine-server-2.4.0.18-Linux-x64.deb
复制代码
FQDN需要填写一致sudo dpkg -r tdengine # 卸载

TDengine的配置,在安装的时候需要我们配置FQDN,如果设置了又后悔了我们可以在cfg中找到配置。TDengine是通过systemed方式启动的。关于服务的管理大致我们需要以下命令即可| 功能 | 命令 |
|---|---|
| 启动 | systemctl start taosd |
| 关停 | systemctl stop taosd |
| 重启 | systemctl restart taosd |
| 状态 | systemctl status taosd |
taos即可。