在6月8日举办的【墨天轮数据库沙龙第七期—开源生态专场】中,清华大学博士,助理研究员,Apache IoTDB PMC 乔嘉林老师分享了《Apache IoTDB,源于清华,建设开源生态之路》主题演讲,本文为整理内容。

导读

大家好,我是来自清华大学的乔嘉林。Apache IoTDB是一个开源项目,起源于清华大学实验室,后续开源并捐给了Apache 基金会。今天我分享的内容主要分为四个方面:IoTDB 背景起源、IoTDB 介绍、开源建设以及如何加入我们。

背景起源

1、时序数据是什么

首先,IoTDB管理的是时序数据,即随着时间轴而不断变化的曲线数据,比如股票中的K线就是很典型的时序数据。时序数据在物联网领域中占据了很大的体量,它是设备物理量的数字化记录,是物理世界的真实刻画。



图1 时序数据示意

时序数据的用途主要分为四个场景:监控、告警、预测、追溯。

首先是监控场景的应用:大家都希望可视化监控软件,从而清晰看到它的运行状态。

其次时序数据能够用于告警场景。工业企业对机器设备进行监控时,很难用肉眼去分辨软件运行中的异常,因此我们需要去设置一些有效的规则,当数据超过预设的阈值时,实现报警的功能。

时序数据还能实现预测。当设备运行状态不好时,我们可以根据根据历史经验与数据变化的趋势,来预测这个设备是否会坏掉,从而帮助企业避免不必要的损失。

最后时序数据还能实现追溯。当我们发现故障,可以通过历史数据故障发生的原因来分析历史数据的变化规律,从而得到一些有用的知识,来避免后续的故障复现。



图2 时序数据的用途

2、IoTDB 发展起源

IoTDB 的发展一共历经了六个阶段。

2011年蕴育期:在国家 863 计划课题中,在三一重工等企业实践海量机器数据管理解决方案。

在工业物联网背景下,需要做到复杂元数据管理、海量数据存储、丰富的数据处理、边云协同,这些对数据管理都是极大的挑战。



图3 工业物联网数据管理需求

在这样的背景下,基于传统的关系型数据库单点瓶颈,模型难以修改写入、性能难以满足的痛点,我们从2011年开始尝试大数据管理方案,如Cassandra、HBase,但是它们也存在着一定的瓶颈。

因此我们调研了不同数据库管理时序数据的区别,如下图所示:



图4 现有系统管理时序数据的局限

因此从2015年我们进入了IoTDB的自研期,开始启动“清华IoTDB”研制。2016年3月提出时序数据列式紧致文件存储格式TsFile,随后发布 0.7.0 版本。

从研发数据文件格式开始,IoTDB的自研历程就此开启。下面的格式图描述了两个部分:左边是数据区,采用了列式存储的方式,将每一个时间序列的时间和值都分开存储,这样能够更好的实现编码和压缩。右边为索引图,能够对海量的时间序列快速查询。



图5 数据管理的格式图

IoTDB 首次的实战项目是青海新能源大数据平台,项目是管理各个发电集团在青海发电厂的数据,在实战的过程中,我们也发现了工业管理中时序数据会存在的一些问题,比如乱序、数据规模不高,规模较大等,这些问题的发现也为我们后续的系统升级与完善提供了宝贵的经验。



图6 IoTDB实战于青海新能源大数据平台

IoTDB在2018年进入了开源孵化期。同年11月,IoTDB 成为Apache 旗下孵化器项目,先后吸引了来自德国、美国、澳大利亚等国际同行关注。

IoTDB为什么要开源?在这里分享我们的想法。

IoTDB起源于高校,我们希望实现真刀真枪参与实际的项目。因此IoTDB的定位不仅是科研项目,更应该是工业级的产品,能够真正部署到这个用户的这个实际项目,能够产生价值,发挥价值。

第二点IoTDB作为基础软件,需要更广大的贡献者和用户的共同参与

不仅如此,对标国外伯克利高校,他们拥有Spark这款做计算比较标准化的一个产品,我们希望中国高校也能打造一款开源软件,来提升中国高校在国际的影响力

那么在开源的过程中为什么会选择Apache基金会呢?因为Apache是大数据系统的世家,平时我们熟知的Hadoop、Spark、HBase、Flink都是起源于Apache孵化器。时序数据作为大数据的种类,我们希望能够将这个项目开发齐全,从而选择Apache基金会。

以上就是IoTDB开源的路线。



图7 时序数据库从默默无闻到逐渐火热

2019年IoTDB 实现快速成长。项目相继获得优秀大数据产品、中国优秀开源项目一等奖,并在中国工业互联网峰会作为重要成果作主题发布。

2020年IoTDB 成功毕业。Apache IoTDB 升为全球顶级项目,这标志着 IoTDB 建成了全球认可的国际开源社区,并成为我国高校在Apache 社区主导的唯一孵化成功的项目。

2021年IoTDB 入选十三五成果。Apache IoTDB参加国家“十三五”科技创新成就展。

回顾IoTDB 的发展历程,可谓是“十年磨一剑”。



图8 Apache IoTDB 发展历程

IoTDB介绍

1、Apache IoTDB 是什么

Apache IoTDB(物联网数据库)是一体化收集、存储、管理与分析物联网时序数据的软件系统。它具有高性能和丰富的功能,并与 Apache Hadoop、Spark 和 Flink 等进行了深度集成,可以满足工业物联网领域的海量数据存储、高速数据读取和复杂数据分析需求。

Apache IoTDB 还拥有简单易用低成本高性能便捷迁移丰富的数据处理生态提供端-边-云”一站式解决方案的性能。



图9 Apache IoTDB 系统架构

2、Apache IoTDB 特点

Apache IoTDB 作为一款轻量化、高性能、低成本时序数据库,具有开放的系统架构、轻量化部署、生态丰富、物联网专属模型、高压缩比、低延迟查询、数据处理丰富、高效存储引擎等八大特点。



图10 Apache IoTDB 的八个特点

下图为 IoTDB 在开源、模型、查询、文件上与其他时序数据库的对比。





图11 Apache IoTDB 在开源、模型、查询、文件上与其他数据库的对比

3、Apache IoTDB 功能

IoTDB具有实现多种查询视图,查询时支持各类视图的SQL逻辑的功能。写入时是物联网的元数据,但在查询时可以转化为多种视图,每种视图都有SQL查询列,以及实现不同的过滤的条件,这样我们就可以根据业务系统的不同需要,针对不同的维度进行查询,从而实现写入非常动态的模型。



图12 Apache IoTDB 支持多种查询视图

不仅支持多种查询视图,IoTDB还具有查询功能丰富,支持降采样、数据对齐、修补的功能。在查询中能够实现降采样成每分钟1个数据点、多序列按时间进行数据对齐、 修补缺失的数据。



图13 Apache IoTDB 查询功能丰富

除了以上功能以外,IoTDB 还支持用户自定义函数,用户通过自行开发、创建自定义函数来满足定制化的计算需求。同时,目前已内置 11 类 UDF 库,共 75个 函数,供用户使用。



图14 Apache IoTDB UDF函数类型及名称

此外IoTDB具有自定义触发器,实现实时计算的功能。时序数据有告警的需求,因此我们在IoTDB中支持了触发器,当一条数据进入数据库时,基于校验的逻辑触发到某个阈值,便可以对其他系统进行一个告警。



图15 Apache IoTDB 自定义触发器的功能

下图展示的功能是物化视图。我们希望对设备A和设备B的速度取出平均值,那我们就可以通过average这个函数来查询,接着将计算的结果写回到数据库里面,这样便于下次使用时直接取用结果,无需重复计算。以上就是物化视图 select into的功能实现场景。



图16 Apache IoTDB 物化视图功能

最后介绍的是IoTDB连续查询的功能,这个功能在时序数据的管理应用中非常广泛。我们通常以高频的方式进行数据采集,同时不想漏掉任何一个点,但是分析时需要对数据进行各种各样的降采样或者分段的聚合,如果我们能够提前对数据进行分段并将它存下来,就能大大加速后续的分析效率。因此连续查询能够实现对后台操作自定义,并定时将一段时间的数据做计算与处理。



图16 Apache IoTDB 连续查询功能

开源建设

1、关于Apache 基金会

Apache 基金会成立于199年,目前已有22年的历史,共有351个项目,总的代码数是2.2亿行。这些代码的总价值是220亿美元,共有8200个committer。



图17 Apache 基金会发展

2、IoTDB 的开源建设

在2021年的Apache基金会全球351个项目排名中中,IoTDB 位列第七,超过Hadoop、Hbase,仅次于Spark。IoTDB 的代码贡献者分布于中、美、德、英、澳等国家,是国内唯一具有国际化属性的时序DB开源社区。

加入社区

开发者是开源的获益者,更应该成为贡献者,这也是 IoTDB 选择开源的原因。

以下是参与社区的通道,欢迎大家参与到开源建设中来。



图18 加入IoTDB组织

我今天的分享就到这里,谢谢大家!

更多精彩内容,欢迎大家观看现场视频回放与会议资料

视频回放:https://www.modb.pro/video/6499

会议资料:https://www.modb.pro/doc/64961


欲了解更多可以进入墨天轮社区,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。

关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯

墨天轮沙龙 | 清华乔嘉林:Apache IoTDB,源于清华,建设开源生态之路的更多相关文章

  1. 使用 Apache James 3.3.0(开源免费) 搭建外网电子邮件服务器(基于 Windows + Amazon Corretto 8)

    对于邮件服务器的安装,请先参阅: 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8) https://www ...

  2. Apache IoTDB C# SDK Apache-IoTDB-Client-CSharp

    最近今天写了IoTDB的三篇相关文章,完成了安装部署和客户端连接: Windows Server上部署IoTDB 集群 DBeaver 连接IoTDBDriver 将IoTDB注册为Windows服务 ...

  3. 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8)

    电子邮件服务器,对于很多公司,都是需要的. 虽然现在很多人,使用 QQ .微信进行一对一的工作沟通,使用QQ 群.微信群进行多人沟通,但这些即时聊天工具,与电子邮件相比,仍有很多不足: a. 电子邮件 ...

  4. 通过Apache Hudi和Alluxio建设高性能数据湖

    T3出行的杨华和张永旭描述了他们数据湖架构的发展.该架构使用了众多开源技术,包括Apache Hudi和Alluxio.在本文中,您将看到我们如何使用Hudi和Alluxio将数据摄取时间缩短一半.此 ...

  5. Apache DolphinScheduler&TiDB联合Meetup | 聚焦开源生态发展下的应用开发能力

    在软件开发领域有一个流行的原则:Don't Repeat Yourself(DRY),翻译过来就是:不要重复造轮子.而开源项目最基本的目的,其实就是为了不让大家重复造轮子. 尤其是在大数据这样一个高速 ...

  6. Apache ShardingSphere:由开源驱动的分布式数据库中间件生态

    2021 年 7 月 21 日 2021 亚马逊云科技中国峰会现场,SphereEx 联合创始人.Apache ShardingSphere PMC 潘娟受邀参与此次峰会,以<Apache Sh ...

  7. 新版发布|ShardingSphere 5.0.0-beta 来了!

    Apache ShardingSphere 5.0.0-beta 版在经过长达半年的筹备后,终于将在近期正式 Release! 本文将带领大家一同预览新版本即将带来哪些重大亮点功能. 作者介绍 潘娟 ...

  8. 给力!斩获 GitHub 14000 Star,两周创办开源公司获数百万美元融资

    文章来源|AI科技大本营 作者|伍杏玲 上世纪 90 年代初,21 岁大学生 Linus Torvalds 开源 Linux 操作系统,自此掀起全球开源浪潮.随后"中国 Linux 第一人& ...

  9. 干货满满,腾讯云+社区技术沙龙 Kafka Meetup 深圳站圆满结束

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 云+导语:4月22日,由腾讯云和 Kafka 社区主办.开源中国协办的腾讯云+社区技术沙龙 Kafka Meetup 深圳站在腾讯大厦举行, ...

  10. Dubbo下一站:Apache顶级项目

    导读: 近日,在Apache Dubbo开发者沙龙杭州站的活动中,阿里巴巴中间件技术专家曹胜利(展图)向开发者们分享了Dubbo2.7版本的规划. 本文将为你探秘 Dubbo 2.7背后的思考和实现方 ...

随机推荐

  1. 万字干货:从消息流平台Serverless之路,看Serverless标准演进

    摘要:如今,Serverless化已经成为消息流平台发展的新趋势,而如何更好地基于Serverless化的消息流平台进行应用设计和开发,则成为了一个值得思考的问题. 本文分享自华为云社区<900 ...

  2. 【Vue2】Computed 计算属性

    计算属性在编写的时候是一个方法 但是在调用的时候作为属性使用 <!DOCTYPE html> <html lang="en"> <head> & ...

  3. 东北某海滨城市的某高校的某分校区的校园网登录程序,(python3, 模拟浏览器的登入方式)

    前些年写过这个登录程序,过了几年系统有所升级,于是做了一定的修改. 新版本的校园网登录程序依然是模拟浏览器去登录校园网. Python3.7编写. #encoding:UTF-8 from urlli ...

  4. PyTorch显存机制分析

    参考: ======================================================= 在pytorch中有几个关于显存的关键词: 在pytorch中显存为缓存和变量分 ...

  5. 多线程之深入理解park与unpark

    1.背景 面试官问,如何暂停一个线程勒..... 说说你对park的理解....... 2.代码 package com.ldp.demo01; import com.common.MyThreadU ...

  6. Java学习笔记2--JDK的安装和配置

    一.进入oracle官网,下载jdk oracle官网:Oracle | Cloud Applications and Cloud Platform ps:不同的浏览器,可能进入oracle官网,会只 ...

  7. 新版的Django Docker部署方案,多阶段构建、自动处理前端依赖

    前言 前几天的文章中,我们已经把使用 pdm 的项目用 docker 搞定了,那么下一步就是把完整的 DjangoStarter v3 版本用 docker 部署. 现在不像之前那么简单直接一把梭了, ...

  8. RabbitMq高级特性之延迟队列 通俗易懂 超详细 【内含案例】

    RabbitMq高级特性之延迟队列 介绍 消息进入队列后不能立即被消费,到达指定时间后才可被消费 实现 结合以下两种即可达到延迟队列 RabbitMq高级特性之TTL过期时间 RabbitMq高级特性 ...

  9. 2023 CCPC 桂林题解

    gym H. Sweet Sugar 一个经典贪心是从下到上,如果子树 \(u\) 剩下的部分(一定包含 \(u\))包含合法连通块,那么这个连通块给答案贡献 \(1\),切断 \(u\) 与 \(f ...

  10. wifi基础(一):无线电波与WIFI信号干扰、衰减

    liwen01 2024.08.18 前言 无论是在产品开发还是在日常生活中,在使用无线网络的时候,都会经常遇到一些信号不好的问题,也会产生不少疑问: 为什么我们在高速移动的高铁上网络会变慢? 为什么 ...