TDengine:一款高性能时序数据库的架构设计

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1.
2.
3. TDengine 一款高性能时序数据库的设计 陶建辉 / 涛思数据创始人&CEO
4. 2019年7月12日 ArchSummit深圳 TDengine宣布开源
5. 2020年8月3日 TDengine开源集群版本
6. www.github.com/taosdata/TDengine TDengine核心代码全部开源 17,000+ 4,100+ Star 数 Fork 数 8,000+ PR & Issue 数 项目 开源时间 Star 数据 Fork 数据 InfluxDB 2013 22,400 3,100 OpenTSDB 2011 4,500 1,200 TimeScale 2017 12,000 630
7. 未来是物联网时代 物联网设备数量每5年 翻一倍 Gartner预计到2029年 将有超过150亿台物联网设 备连接至企业基础设施 据GSMA预测,2025年全 球物联网设备(包括蜂窝及 非蜂窝)联网数量将达到约 246亿个 大量物联网设备产生的数 据会呈指数级增⻓
8. 物联网、IT运维数据有其典型特征 应用特征 数据特征 1 所有采集的数据都是时序的 1 数据以写操作为主,读操作为辅 2 数据都是结构化的 2 数据很少有更新或删除操作 3 一个采集点的数据源是唯一的 3 数据一般是按到期日期来删除的 4 类似日志数据,无需事务处理 4 数据都有统计、聚合等实时计算操作 5 数据流量平稳,可以较为准确的计算 5 数据一定是指定时间段和指定区域查找的
9. 时序数据需要专门的处理工具 我们的答案
10. 消息队列 缓存 自带消息队列, 所有设备 无需 Kafka 或其他 MQ 最新记录实时返回 数据库 实时数据库,历史数据库操 作合一透明 流式计算 数据订阅 对一个或多个数据流 最新的数据 实时聚合计算 可实时推送到应用 TDengine: All in One的时序大数据平台 为时序数据处理提供全栈解决方案,无需再集成Kafka、Redis、Spark、HBase、 ZooKeeper等软件,大幅降低系统架构的复杂度,而且极大提高数据处理的性能
11. Grafana Telegraf Kafka OPC-UA Visualization Tool TDengine SCADA/HMI Industrial Automated Systems Python/Matlab/R Time-series Data Processing Engine Analytics, ML Application IoT Application MQTT Broker Java/C/C++/Restful Clustered Shell: Command Line Interface Web Based Management Tool
12. 选择TDengine的理由 10倍以上的性能 提升 总拥有成本大幅 下降 零学习成本 创新的数据存储结构, 无锁设计和多核技术 十倍性能,大幅减少计 算资源;通过列式存储 和先进的压缩算法,大 量节省存储 使用类SQL语法,支持各 种常⻅的编程语言
13. TDengine的技术创新
14. 创新之一 一个数据采集点一张表
15. 采集数据 很显著的特点 设备 ID 时间戳 标签 Device ID Time Stamp Current Voltage Phase Location Type d1001 1538548685000 3.13 220 0.31 BJ.chaoyang 1 • 数据是时序的,都带有时间戳 d1002 1538548685100 8.21 219 0.82 BJ.haidian 2 • 数据是结构化的,而且以数字型为主 d1001 1538548686000 3.11 219 0.35 BJ.chaoyang 1 d1003 1538548683000 5.41 110 0.53 BJ.daxing 1 d1002 1538548686100 8.11 223 0.81 BJ.haidian 2 d1002 1538548687130 8.15 215 0.85 BJ.haidian 2 d1001 1538548687000 3.15 223 0.32 BJ.chaoyang 1 d1003 1538548684000 5.51 112 0.54 BJ.daxing 1 d1003 1538548685000 5.60 109 0.53 BJ.daxing 1 d1002 1538548688100 8.19 218 0.87 BJ.haidian 2 d1003 1538548686000 5.62 108 0.56 BJ.daxing 1 d1001 1538548688500 3.19 221 0.31 BJ.chaoyang 1 • 除非固件更新,结构不会改变 • 每个采集点都带有静态属性标签 • 由于网络或其他原因,每个采集点的数据到达服 务器的时间是无法控制的,但每个采集点的采集 数据到达服务器的相对顺序是基本有保证的
16. 设备ID: D1001, 标签 loc: BJ.chaoyang type: 1 设备ID: D1003, 标签 loc: BJ.daxing type: 2 Time stamp Current Voltage Phase Time stamp Current Voltage Phase 1538548685000 3.13 220 0.31 1538548683000 5.41 100 0.53 1538548686000 3.11 223 0.35 1538548684000 5.51 109 0.54 1538548687000 3.15 219 0.32 1538548685000 5.60 112 0.53 1538548688500 3.19 221 0.33 1538548686000 5.62 108 0.56 设备ID: D1002, 标签 loc: BJ.haidian type: 2 一个采集点一张表带来的直接变化 Time stamp Current Voltage Phase 1538548685100 8.21 219 0.82 1538548686100 8.11 223 0.81 • 新数据记录的写入变成简单的追加操作 1538548687130 8.15 215 0.85 • 数值按列的变化范围更小 1538548688100 8.19 218 0.87 • 设备ID、标签不会重复存储 • 每张表里的记录按时间自动排序
17. 0 1 2 3 4 5 0 1 2 3 4 5 • 每张表的记录按块存储 • 每个数据块带有schema • 每个数据块包含一定数量的记录条数 • 一张表往往有多个数据块 • 每个数据块带有预计算 • 系统有块索引,根据起止时间,迅速找到数据块
18. Time stamp Current Voltage Phase 1538548685000 3.13 220 0.31 1538548686000 3.11 223 0.35 • 大幅提高分析性能:时序数据的分析,往往是针对一个 1538548687000 3.15 219 0.32 采集量在一个时间范围段进行的。如果行式存储,会读 1538548688500 3.19 221 0.33 取大量的无效数据 • 大幅提高压缩率:同一列数据相近,便于压缩;不同数 据类型可采用不同压缩算法 列式存储 行式存储 1538548685000 ✓ … 3.13 220 0.31 1538548687000 1538548686000 3.11 1538548686000 1538548688500 … 223 0.35 3.13 3.11 … 1538548687000 3.15 3.19 … 3.15 220 219 223 0.32 219 … … 221 1538548688500 0.31 3.19 0.35 221 0.32 0.33
19. • 一个数据采集点一张表 • 一张表的数据按块连续存储 • 数据块内采取列式存储 保证了单个数据采集点的插入 和查询效率是最好的
20. 创新之二 超级表: 多个数据采集点的高效聚合
21. • 超级表用以描述某一种类型的数据采集点 • 描述一张超级表,即一个数据采集点类型,需要定义 • 采集量的数据结构 schema • 静态标签的数据结构 schema • 为一个具体数据采集点创建表 • 以超级表为模板,表的schema就是超级表的采集量schema • 给静态标签指定具体值
22. 为智能电表这个设备类型建立一个 STable, 采集量有电流、电压和相位,标签有位置和类型 create table smeter (ts timestamp, current float, voltage int, phase float) tags (loc binary(20), type int); 用 smeter做模板,为6个智能电表创建6张表,地理位置标签为北京朝阳、海淀、上海浦东等 create table t1 using smeter tags(‘BJ.chaoyang’, 1); create table t2 using smeter tags(‘BJ.haidian’, 2); create table t3 using smeter tags(‘BJ.daxing’, 1); create table t4 using smeter tags(‘BJ.chaoyang’, 2); create table t5 using smeter tags(‘SH.pudong’,1); create table t6 using smeter tags(‘SH.Hongqiao’, 1);
23. 查询北京朝阳区所有智能电表的电压平均值和电流最大值 Select avg(voltage), max(current) from smeters where loc = “BJ.chaoyang” 查询北京类型为1的智能电表的电压平均值 Select avg(voltage) from smeters where type = 1 and loc like “BJ%” • 超级表可以象普通表一样查询,但可以指定标签的过滤条件 • 标签可以多至128个,每个标签代表一个维度 • 标签可以事后增加、删除、修改。这样数据建模时,可以先不确定标签或分析维度 • 每个标签,可以是一树状结构,比如 北京.朝阳.望京,这样便于缩小搜索范围
24. 标签存储策略: • 标签数据单独存储,与时序数据完全分离 • 采用Key-Value型存储,便于增删改操作 • 每个数据采集点一条标签记录 • 标签记录集中在一起存储,并建有索引 优势: • 与典型的NoSQL数据库相比,因为不重复存储标签值,大幅节省存储空间 • 做多维聚合分析时,先标签过滤,找到需要聚合的采集点,大幅减少聚合的数据集 • 标签记录总条数等于采集点的数目,但总量不大,可全内存处理,进一步提升查询效率
25. TDengine聚合计算流程 主要流程: Tag Data 3 App 1. App向TDengine发起查询请求 2. TDengine将标签过滤条件发往标签数据处理模块 2 6 1 3. 标签查询模块将符合过滤条件的采集点列表返回 4. TDengine通知时序数据处理模块对选择的采集点 Time Series Data 在指定的时间段进行聚合操作 4 TDengine 5 5. TDengine收到聚合后的结果 6. TDengine将结果返回给App • 本质上,Tag Data是Dimension Table, 而TS Data是Facts Table。 • 换一个角度看,超级表的设计是两级索引结构,一级索引是标签,用于过滤数据采集点。二级索引是时间戳,用于 过滤采集的时序数据
26. • 大幅节省标签的存储空间 • 大幅提升多个数据采集点的聚合效率 • 让多维分析方便、高效 TDengine 是一强大的多维分 析工具
27. 浙商银行微服务监控
28. 顺丰科技大数据监控
29. collectd/statd/Telegraf CPU RAM NGIX DB NET · · · · · · collectd/statd/Telegraf CPU RAM NET TDengine 集群 Grafana (替换OpenTSDB) (替换InfluxDB) · NGIX · · · · DB · · · · · · · collectd/statd/telegraf + TDengine + Grafana 组合, 无需代码、搭建一个高效的IT运维监测平台
30. 与OpenTSDB相比的优势 • 部 署:部署极其简单,不用HBase, Zookeeper等臃肿庞大的系统 • 写入速度:TDengine是OpenTSDB的10倍以上 • 查询速度:TDengine是OpenTSDB的10倍以上 • 存储效率:TDengine存储空间是OpenTSDB的10% • 缓 存:TDengine具备缓存,不需要安装redis • 流式计算:TDengine支持连续查询,无需第三方软件
31. 从OpenTSDB向TDengine迁移 01 将TDengine 与涛思数据提 供开源的 BLM 同时部署 0 2 将collectd/statd等Agent 0 3 在Grafana里配置涛思数据 指向OpenDB的URL改为 提供的对应dashboard, BLM即可 或自己重新配置 不用写任何代码,轻松搞定
32. 灯塔计划 对象:市值或估值在10亿美金以上的公司,有时序数据处理的场景和需求。 计划的价值: 1. 产品赋能:利用TDengine提升时序数据处理能力,大幅降低TOC 2. 原厂支持:涛思数据免费提供2年企业级技术支持,免除后顾之忧 3. 人才培养:涛思数据输送讲师,帮助企业专家深入掌握TDengine 4. 品牌推广:与参加企业联合进行品牌推广活动,提升影响力
33. 陶建辉 (Jeff Tao) jhtao@taosdata.com Weibo: 陶建辉-Jeff 微信公众号:爱倒腾的程序员 TDengine 公众号 微信:Jeff-Tao
34.
35.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-23 21:19
浙ICP备14020137号-1 $Map of visitor$