Apache IoTDB
IoTDB 是清华大学主导的 Apache 孵化项目,是一款聚焦工业物联网、高性能轻量级的时序数据管理系统,提供数据采集、存储、分析的功能。IoTDB 提供端云一体化的解决方案,在云端,提供高性能的数据读写以及丰富的查询能力,针对物联网场景定制高效的目录组织结构,并与 Apache Hadoop、Spark、Flink 等大数据系统无缝打通;在边缘端,提供轻量化的 TsFile 管理能力,端上的数据写到本地 TsFile,并提供一定的基础查询能力,同时支持将 TsFile 数据同步到云端。
IoTDB 具备低存储成本、高速数据写入(百万数据点秒级写入)、快速查询(TB级数据毫秒级查询)、功能完备(数据的增删改查、丰富的聚合函数、相似性匹配)、查询分析一体化(一份数据,满足实时查询与分析挖掘)、简单易用(采用标准的 JDBC 接口、类 SQL 查询语言)等特点。
基准测试表明IoTDB读写性能均优于现有的时序数据库InfluxDB、OpenTSDB、Cassandra以及GE的工业大数据平台Predix。根据中国软件评测中心和中国人民大学的性能对标测试,IoTDB的各项性能指标均明显优于当今国际最优的时序数据库系统。
产品功能
查询引擎
IoTDB 内置查询引擎负责所有用户命令的解析、生成计划、交给对应的执行器、返回结果集。IoTDB 通过查询引擎提供了 JDBC 访问 API,简单易用。
元数据管理
IoTDB 的元数据模型采用树状结构组织,一个实例包含多个 Storage Group (类似于 Namespace、Database 的概念),一个 Storage Group 里包含多个 Device ,每个 Device 包含多个 Measurement , Measurement 对应的时间序列数据最终存储在 TsFile Chunk 里。另外,为了方便数据过期,每个 Stroage Group 的数据会以时间范围的形式切分存储,默认以周为单位,使用不同的目录存储。
存储引擎
IoTDB 存储引擎基于 LSM Tree 结构设计,写入的数据先记录 WAL,再写到内存 memtable,在后台逐步刷到磁盘 TsFile;磁盘上的 TsFile 通过一定的规则进行 Compaction,保证查询效率。
同步工具
IoTDB 支持在边缘侧、云端部署,通常在边缘侧采集的数据有同步到远端进一步分析处理的需求;IoTDB 提供了同步工具,支持将端/设备上的 TsFile 数据往云端同步。
连接器
IoTDB 支持与现有的大数据处理系统,包括 Hive、Spark 等无缝连通,IoTDB 提供了 hive-tsfile 、 spark-tsfile 、 spark-iotdb 等连接器,让 Hive、Spark 能直接访问 tsfile 格式的数据,以及访问 IoTDB 的数据。
产品优势
针对物联网模型做了定制化,提供 JDBC 访问方式,支持边云一体化部署。
存储使用 Hadoop File system,并提供多种 connector,与现有大数据生态无缝打通。
开放的 TsFile 存储格式,设备模型简单易理解。
IoTDB 架构图
IoTDB 于 2017 年 1 月正式在 Github 上开放 IoTDB 底层文件存储格式 TsFile。2017年至2018年,IoTDB保持持续开发,先后发布0.3,0.4,0.5,0.6,0.7等五个版本。
目前,IoTDB已完成与开源大数据生态(Hadoop、Spark)的集成,实现了相关的编程SDK(JDBC形式)、导入导出工具、可视化工具、命令行交互工具、数据回传工具等多项 IoTDB 辅助工具,大幅度提升了IoTDB的适应力。截止目前,IoTDB核心模块有效代码达7万余行,通过DSL语言生成代码6万余行。IoTDB代码提交更新次数超过1300次,用户反馈、建议与回复200余次。
应用场景
云数据管理
在高速网络(车联网等)的场景中,安装有传感器的汽车可以以一定频率收集自身的监视信息(行驶状态等)。 通常,这些汽车设备的硬件配置有限,并且难以进行复杂的应用。 轻量级的IoTDB(IoTDB客户端)应运而生。 借助JDBC API(或MQTT),它可以使用窄带IoT或4G/5G发送数据,从而将设备和云连接在一起。
高端设备
在高端制造业中,有很多设备配备有传感器来收集工作状态数据,例如气象站,风力涡轮机是常见的高端设备。这些设备如果支持Java或Go(正在开发中),则可以运行TsFile在本地存储数据。通过这种方式,TsFile可以提供具有高吞吐、高压缩率和毫秒级查询延迟的数据管理功能。结合TsFile-Sync工具,可以将TsFiles同步到数据中心。
本地控制器
在工厂现场,LAN网络下有数十台设备。 IoTDB可以安装在工厂的本地控制器服务器上,以从这些设备接收数据。 安装有IoTDB的本地服务器(普通PC或工作站)可以使用类SQL存储和查询数据。 此外,使用TsFile-Sync工具,可以将本地控制器上的TsFile文件传输到云上安装有IoTDB实例的数据中心。
发展历程
2018年,IoTDB进入了开源孵化期。同年11月,IoTDB 成为Apache旗下孵化器项目,先后吸引了来自德国、美国、澳大利亚等国际同行关注。
2019年IoTDB 实现快速成长。项目相继获得优秀大数据产品、中国优秀开源项目一等奖,并在中国工业互联网峰会作为重要成果作主题发布。
2020年IoTDB 成功毕业。Apache IoTDB 升为全球顶级项目,这标志着 IoTDB 建成了全球认可的国际开源社区,并成为我国高校在Apache 社区主导的唯一孵化成功的项目。
2021年IoTDB入选十三五成果。Apache IoTDB参加国家“十三五”科技创新成就展。
相关资料
IoTDB官方网站:http://iotdb.apache.org/zh/
IoTDB开源地址:https://github.com/apache/iotdb