Apache IoTDB 发布 0.10.0!

经历了半年的时间,0.10.0 大版本终于发布了!下面来看看这个版本的功能吧~

正文 2652 字,预计阅读时间 7 分钟。

发布手册

参考:https://raw.githubusercontent.com/apache/incubator-iotdb/release/0.10.0/RELEASE_NOTES.md

新功能

  • 查询最新数据点,如 select last * from root

  • 新的 Group by 语法,例如 select avg(s1) from root.sg.d1.s1 GROUP BY ([1, 50), 5ms),每个区间可 前开后闭 或 前闭后开

  • 支持 GroupByFill 查询,在 group by 查询结果上补空值,如 select last_value(s1) from root.sg.d1 GROUP BY ([1, 10), 2ms) FILL(int32[previous])

  • 增加 PrefiousUntilLast 填充规则,仅填充到最新时间点为止

  • 新的 disable align 查询,不按照时间对齐结果集,如 select * from root disable align

  • align by device 查询中 select 可选择不存在的 Measurement 和常量

  • 增加 IN 谓词,如 where time in (1,2,3)

  • Show Timeseries 时允许使用 limie & offset

  • TsFile 集成 Apache Flink

  • IoTDB 集成 Apache Flink

  • 增加 MQTT 协议,默认关闭,可在配置文件中开启

  • 增加 Measurement 的别名

  • 可修改 Measurement 别名:upsert alias

  • 为时间序列元数据增加标签和属性

  • 可修改时间序列的标签和属性

  • 在时间序列路径中支持特殊字符:-/+&%$#@

  • 路径可以使用数字开头的字符串,如 root.sg.12a

  • 允许用户指定非默认的JAVA_HOME,允许JAVA_HOME带空格

  • 允许在 JDBC URL 中使用域名

  • 允许加载外部TsFIle

  • 支持通过 show flush task info 查看 flush 任务状态(运维用)

  • 将 Align by device 查询中的值过滤改为设备分别过滤

  • 增加 0.8.1、0.9.0、0.9.1 的 Dockerfile

  • 增加 RandomOnDiskUsableSpaceStrategy 多目录选择策略

  • Session 中增加 insertRecords 接口

  • Session 中增加 test 方法,可测试客户端和网络传输耗时

  • Session 中增加批量创建时间序列功能

  • Session 中增加判断时间序列是否存在的方法

  • Session 中增加 JDBC 的遍历方式,避免构造RowRecord

  • 在 CLI 中分批打印结果集

  • 在 Grafana 中增加指定时间精度

  • 在 Grafana 中支持 TEXT 类型数据展示

  • 使用脚本启动 IoTDB 时可手动指定配置文件

  • 热加载配置文件

  • 在 SQL 中增加 flush/merge 语法

  • 增加清空查询 cache 命令:clear cache

  • 0.9 版本可在线升级为 0.10

  • JDBC 支持 OSGI 

  • 打印 resource 的工具支持指定单一 resource 文件

  • count timeseries group by level=x 查询默认以 root 为前缀

  • 增加基于 OpenID 的 JWT 访问连接(代替用户名密码)

  • 可根据系统内存比例分配内存大小

  • 可配置自动注册时间序列时如何推断不同类型的 String 值

  • 可配置时间序列的最长缓存点数 avg_series_point_number_threshold

  • 在 insert 方法中支持某一列写入失败不影响其他列

  • 增加 NaN 的 Double 类型数据格式

不兼容旧版本的修改

  • 修改 last 和 first 聚合函数为 last_value 和 first_value

  • 更新 RPC 版本为 V2,不可连接 0.9 系列

  • TsFile 版本更新为第 2 版

  • Session 中方法改名:insertBatch-> insertTablet, insertInBatch -> insertRecords, insert -> insertRecord

  • 统一各种查询中 level 的含义,root 为 0 层

  • Client 改名为 Cli

其他修改

  • 语法解析从 Antlr 3 升级为 4

  • 查询列为空时不再抛异常

  • 统一 timestamp 和 time,都可以用

  • 官网增加设计文档

  • TsFile 尾部增加索引,优化单设备几十万测点的管理和查询

  • Session 中可通过 isNull 判断某个 Field 是否为空

  • PreviousFill 和 LinearFill 性能优化

  • 优化 Count timeseries 查询性能,并且可不加前缀,默认root

  • 优化 TsFileResource 的内存占用

  • 限制 log 日志文件最大数量和大小

Bug 修复

  • 【IOTDB-125】一边删除时间序列元数据,一遍写入数据,可能写入成功但是查询不到,再注册序列又可以查询到写入的数据。

  • 【IOTDB-185】windows 环境由于路径存在空格运行 start-client.bat 失败

  • 【IOTDB-370】修复解析sql的并发问题

  • 【IOTDB-392】修复导出 CSV

  • 【IOTDB-425】无法修改 root 密码 

  • 【IOTDB-470】0 字节 TsFile 引发的 IllegalArgumentException

  • 【IOTDB-529】Group by 中不能用 NOW()

  • 【IOTDB-531】Grafana 可视化 boolean 的异常

  • 【IOTDB-643】文件系统使用 HDFS 时的并发查询报 BufferUnderflowException

  • 【IOTDB-692】修复数据合并丢失数据

  • 【IOTDB-735】并发自动创建时间序列报空指针异常

  • 【IOTDB-738】修复 Measurement 存在空格时写入出现空指针

版本升级

0.10 的 数据文件格式升级了,先说如何从 0.9 升级到 0.10。可参考 http://iotdb.apache.org/Download/

(1)0.9 版本停止数据写入

(2)启动 CLI,执行 flush 命令,执行完成后关闭 server

(3)下载 0.10 版本,将配置文件中的各个目录指向 0.9 的各目录

(4)启动 0.10 版本,0.9 的数据即可查询

(5)客户端更新至 0.10 版本,即可继续写入

推荐提前备份数据。

总结

0.10 主要升级了查询引擎,为之后扩展查询功能打下了坚实的基础。同时规范了很多代码,我是盯着 PR 一个一个合进去的,亲眼见证了 IoTDB 的成长和完善(0.10 版本我最喜欢的功能是最新点查询)。透露一下,下个大版本会大幅提升查询性能,完善内存控制,届时各种 OOM 就基本不会遇到了。

欢迎大家点击原文链接到 github 上点个 star !

猜你喜欢

转载自blog.csdn.net/qiaojialin/article/details/107053853