- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Apache IoTDB 的物联网时序数据新场景探索及实践-侯昊男
Apache IoTDB 的物联网时序数据新场景探索及实践
本次分享 Apache IoTDB 社区对物联网时序数据管理新场景的探索及实践,包括新型元数据管理、UDF、数据清洗等,及 Apache IoTDB 在多个场景的实践案例及调优方法。
侯昊男,Apache IoTDB PMC,现就职于大数据系统软件国家工程实验室。数据库内核开发工程师。负责 Apache IoTDB 的文件结构、写入内存控制、在线升级、线上部署实施等工作。
展开查看详情
1 .Apache IoTDB 物联网时序新场景 探索与实践 清华大学软件学院 大数据系统软件国家工程实验室 侯昊男
2 . 面向工业物联网的高性能轻量级时序数据库 “清华数为” Apache IoTDB IoTDB 2011年 2017年3月 2018年11月经投票 2020年9月经投票 863计划攻关 在Github公开 进入Apache孵化器 晋升为Apache顶级项目 历练于工业用户、 n首个入选Apache的工业物联网时序数据库项目 成长成熟于开源社区 n首个由中国高校开源并运营的Apache顶级项目 Apache顶级项目官方认证
3 . IoTDB:从时序数据查询到时序数据处理 select s1 from root.sg.device1 where time > ? and s1>? group by ([?, ?, 1m]) !"#$%& '()*+,-. '(/012 B0OP'E#$QRST, !"#$%&'() 3456789:;<0=>#$ '?@A6;/B0CD EFCG6HICD 滑动窗口聚合 FlatFIT [1] 快速构建 快速构建 高效查询 摘要 min:1 max:4 count:4 一级索引 min:5 max:8 count:4 min:9 max:10 count:2 多级索引 高效查询 JEFKL6MNCD 摘要表[2] 灵活聚合 时间分区树[3] 任意窗口
4 . IoTDB:从规则负载到复杂负载 ./,- *+,- !"#$%&'()*+ 5!"=>#$ !"ID #$ %&1 %&2 … %&1000 ?@.,1./ ,-./0 ,12345 !202001 6#$78,-&9:;< !" #$1 #$2 #$3 ABCDEA t1 v v v … t2 v v v … !202003 tn v v v
5 . IoTDB:开源生态集成 Z[VW \YVW 4UVW XYVW CDVW
6 . 用户交互友好:工作台、命令行、可视化 工 作 台 命 可 令 视 行 化
7 . 数据模型 !"#$%&'()*+,-./ 012345/6789/:;/ ,-<* =><*(E.F.codd) -> =>,-. ?@,-.(HBase) ->?@<* A<*(Neo4j) -> A,-. BC<* -> BC,-.
8 . 场景1:风电场监控 l U]^_ l `a l `bcde l %& l '() l '*) l +, l -,.
9 . 场景2:车辆驾驶行为分析 l !"ID l !"#$ l /, l 01234 l 5( l 6. l 7.
10 . IoTDB 模型 l %&'()*+,-+./+0'123'456789.':; l <=%&'2<>?@AB l CD+EFG+EH+IJKL+MN+!N+O3+P3 l Q=%&'2<>RSAB l GPS(O3+P31 物理量 时间 风速传感器
11 . 存储模型 <=%&' *( +( GPS Q=%&' !" '( )( -. #$ , #$ , #$ , ,
12 . 实体模型 l TU(VW1 l XYZ[%&'9VW\45]6[%&'^[_`9TU l /0123456/786/9: l abc(Storage group1 l QdTU9Be]fghijkl%&mno
13 . 数据模型 l Spqr(TU+%&'1 l <=qr(TU+<=%&'1 l s21tMu9MN+!"19vwxF+yz{@|}9~0 l Q=qr(TU+Q=%&'1 l s2!"19GPS(O3+P31
14 . 存储模型 891 892 GPS Q=%&' <=%&' *( +( •' !" '( ;( Q=qr <=qr #$ , #$ , #$ , ,
15 . 层级元数据管理 root 存储组 北京 河北 实体 燃油车 新能源车 VIN3 VIN1 VIN2 GPS 陀螺仪 油耗 一元物理量 多元物理量 GPS 陀螺仪 分量 经 纬 x y 速 油 加 角 度 度 度 量 速 速 度 度 经 纬 x y 度 度
16 . 一元、多元序列的适用场景 €• TUQd./‚RSAB TUQd./RSAB :;<=> <=qr ?@ABC DE,.F 😁 😯 :;<=> Q=qr 😯 ?@ABC DE,.F 😁
17 . 物理量模板:起源 2DEF()*+GHIJKGHLM(+NOFPQ 燃油车 VIN1 VIN2 VIN3 VIN4 ...... 速 油 加 角 速 油 加 角 速 油 加 角 速 油 加 角 度 量 速 速 度 量 速 速 度 量 速 速 度 量 速 速 度 度 度 度 度 度 度 度
18 . 物理量模板:起源 2DEF()*+GHIJKGHLM(+NOFPQI STUM(*V+WITUM(*V+XYZ [\]^_,-/ NOF<R
19 . 物理量模板:直观理解 2DEF()*+GHIJKGHLM(+NOFPQ 燃油车 VIN1 VIN2 VIN3 VIN4 ...... GH 速 油 加 角 度 量 速 速 度 度
20 . 推荐建模方式 l abcg'ƒu„…g†R]10-50dv‡ l <dabcˆ‰Š&‚‹Œ50•qr l ‹Œ10•VWŽ••‘5(0.12’“) time_index_level=FILE_TIME_INDEX l ”'•–%&'—˜C™šQ=SpqrC™
21 . 为什么需要自动创建元数据? l`abcGHdefI`aghi< ljklmni_,- !"#$%&'() enable_auto_create_schema=true *+
22 . 自动创建序列(推断类型) l Session2String value l insert into root.turbine.1001(time, s1, s2, s3, s4) values(1, true, 1, 1.2, NaN, 'text') DEI4J MNOPQ iotdb-engine.properties RST URSI) KStringL true boolean boolean_string_infer_type BOOLEAN 1 integer integer_string_infer_type INT32VINT64 1.2 floating floating_string_infer_type FLOATVDOUBLE NaN nan nan_string_infer_type DOUBLE 'I am text' text W
23 . IoTDB 数据模型优势 ,-./01234./(5612789:;<= >?@A0BCDEF"#$%&'GHIJKLMN
24 . 工厂案例 root 工厂 ChangDe XYZ[\I4J]Y^_ 车间 T000100010001 T000100010002 T000100010003 T000100010004 `abcdefdgh 区域编码 Z4K Z3K 产线编码 ZSX01 ZSX02 ZSX03 ZSX04 制造单元 89 YZA1 YZA2 YZE1 YZE2 (设备) 测点 TotalProduction ShiftCode
25 . 电厂 OPC 案例 电厂 OPC 数据示例 IoTDB 建模:属性为路径 root HM TC 89 DCS1 N1DCS 10ATCFMTSIAI003 10ATCFMTSIAI004 10CFB01HPCDEG #$
26 . 标签模型 -> IoTDB 模型 InfluxDB 数据示例 IoTDB 建模:属性为路径 Tag Tag Tag Field Field Tag ijk "# 温度 $# %& '()* +, %- A1 B1 C1 产量 1 A1 B1 C1 16.9 142 root 温度 1 A1 B1 C1 16.5 108 B2 C2 产量 2 A2 B2 C2 13.0 130 A2 温度 B3 C3 3 A2 B3 C3 13.5 80 产量
27 . !"#$%&'()*+ github.com/thulab/iotdb-quality lIoTDBmn=op4Jqkrst https://thulab.github.io/iotdb-quality
28 . • 效果: • 思路: /u 11210 10821 10053 • 问题:频繁报警 25 860 863 x}4 yz{| v=wx 3 87 • 利用时间序列相似度匹配技术 • 报警:观测值低于指定阈值 145 z~ |x}4* v=wxy • 历史上出现过的类似虚警情况,不再报警 • 历史上出现过的类似真警情况,直接报警 ‚ 83.1% 89.9% 88.0% •€•g 0 1 2 3 4 5 6 7 8 0 1 2 3 4 0.5 1.5 2.5 3.5 1 虚警过滤 1 385 338 769 675 1153 1012 1537 1349 1921 1686 2305 2023 2689 2360 3073 2697 3457 3034 3841 3371 4225 3708 4609 4045 4993 4382 5377 4719 5761 5056 6145 5393 6529 value value 5730 6913 6067 7297 6404 7681 6741 8065 7078 8449 7415 8833 11210%&#$ 10053!"#$ 7752 9217 threshold threshold 8089 9601 8426 9985 8763 10369 9100 10753 9437 11137 9774 11521 10111 11905 10448 12289 10785 12673 11122 13057 11459 13441 11796 13825 12133 14209 12470 14593 github.com/thulab/iotdb-quality
29 . 虚警过滤方案 • 1. 跳变清除:删除速度、加速度异常单点 • ksigma • 2. 阈值过滤:查找低于阈值的疑似子序列(一分钟长度) • range • 3. 匹配真警:疑似子序列匹配真实报警库(历史观测到的真实报警子序列) • pattern_match • 4. 异常过滤:疑似子序列LOF异常度计算(历史出现过的类似低电压子序列不属于异常) • lof • 5. 异常报警:返回异常度最高的疑似子序列(供人工确认,如属实,则加入报警库) • max_value github.com/thulab/iotdb-quality