当前位置: 首页 > news >正文

Apache IoTDB 走进东南大学,深入分享项目发展历程与收获

d6e89774194f3c75d7fe97aa95b25cb1.png

源于高校,回到高校,Apache IoTDB PMC 成员乔嘉林为同学们详细分享行业前瞻、研发历程与心得体会。

01

把领先的数据库知识带到校园

6 月 5 日,东南大学计算机科学与工程学院、软件学院、人工智能学院主办的“拔尖领航系列活动特别策划篇-第二期”顺利开展。本次活动邀请天谋科技联合创始人、Apache IoTDB PMC 乔嘉林作为主讲人,分享了其自 2016 年参与时序数据库 IoTDB 项目至今,从高校到企业,从开源到商业化的心路历程,并详细解读了我国自研数据库成果 IoTDB 的市场定位与技术实践。

乔嘉林毕业于清华大学,目前为天谋科技(北京)有限公司联合创始人及 CTO、国际 Apache 开源软件基金会委员、Apache IoTDB 项目管理委员会成员、Apache TsFile 项目主席、中国通信学会开源技术委员会委员。主要研究领域为工业物联网数据管理、时序数据库方向,参与研发工业物联网时序数据库管理系统 IoTDB,其成为我国高校发起的首个 Apache Top-Level 项目;时序数据标准文件格式 TsFile,成为继 IoTDB 之后,时序数据领域第二个 Apache Top-Level 项目。

02

为何重要,如何破局

本次分享中,乔嘉林首先以车联网状态管理场景、飞机制造试飞场景、船舶远洋导航场景、核电厂、钢铁厂等工业基建建设场景为例,说明了工业实践中,为保障设备效能和生产运行安全,同时实现产能提升,收集、管理工业数据的重要性,进而引出工业设备上报的数据类型——带有时间属性的时序数据概念。

面对设备运行中即会上报的,庞大体量的时序数据,其所需要的时序数据库管理系统需要能够对接上游通过边缘网关实现的数据采集与传输,和下游的数据处理与分析功能(如大屏展示、异常告警、趋势分析等)。时序数据库管理系统自身则需要接得住大流量数据写入、存得下海量数据、查得快已有数据结果,因此对该系统提出了非常大的性能挑战。

73a471ceb439ba0b61bf114c5417ed9d.png

在工业 4.0 的浪潮中,时序数据管理已成为全球数据库软件领域的关注重点,并衍生出专门针对时序数据进行管理的产品——时序数据库。根据数据库领域权威榜单 DB-Engines 数据,时序数据库流行度排名第二,仅次于图数据库;DB-Engines 目前收录时序数据库产品 44 个,在各类数据库产品收录数量中排名第四。

而国内工业物联网场景的时序数据管理现状,依然依赖国外软件产品居多。乔嘉林讲到了两类:工业领域的实时数据库(以 PI 系统为代表),和信息化领域的时序数据库(以 InfluxDB 为代表)

PI 系统结合了实时系统和数据库技术,包括采集器、内存数据库+实时处理、历史数据库、组态软件等组件。它能够提供实时反馈、告警及数据访问的相关服务,但其性能无法有效支撑大体量、高并发的数据实时写入。InfluxDB 则针对时序数据特性进行了系统逻辑的重新设计,保障了读写性能,但因为只有单机版开源,面对多厂区、多终端部署需求的工业领域,能够管理的数据量依然有限,并无法提供及时的运维支持

中国的工业物联网场景迫切需要国产自研的、更加适配的时序数据管理方案,在此背景下,时序数据库 IoTDB 结合了时序数据管理新型技术与 IoT 场景特点,自研多项核心技术,解决了现有管理方案读写性能受限、无云边协同能力、扩展不灵活、运维困难等诸多难题。IoTDB 写入、查询、压缩多指标位列国际数据库性能测试排行榜 benchANT 第一,并入选国家级规划教材《数据库系统概论(第6版)》,成为国产时序数据库走向国际的优秀代表。

25495c22b5a5e48cc035e49b80f787a5.png

03

找好团队,全心付出,坚持才有收获

本次分享中,乔嘉林不但为同学们介绍了时序数据管理场景和 IoTDB 诞生的背景,还生动地讲述了自己参与 IoTDB 项目研发以来的体会与收获。

乔嘉林把参与 IoTDB 的第一个阶段命名为“野蛮生长”。当时完成读研的他希望从零到一做一个完整的大型软件系统,了解这个系统所有的流程和前因后果。而他面前有两条路,一条是读硕,毕业后去做工程开发;一条是读博,据说很艰难,前路未卜。在遇到清华大学软件学院王建民教授后,他坚定了读博的选择,希望能长期参与到一件有意义的事业中,也更加确定未来无论遇到什么事情,都要以积极的心态去面对。

刚进入清华大学的大数据软件团队时感觉并不容易:“因为本科其实更多的是像理论课一样学习计算机的知识,所以进入实验室也遇到了不少困难,代码能力不高,所以当时就是一块砖,哪里需要哪里搬。”在 IoTDB 发布最早版本的时期,他作为发版经理,经常面对“发版必通宵”的魔咒,而团队成员们坚持着“bug 不过夜,一个都不能少”的原则,每一次发版都团结一致,互相协作,通宵解决问题,并最终一次次克服种种困难,使新版本顺利上线。这让他更加热爱这个团队的同时,数据库研发技术与系统设计经验也在逐步丰富。

9b79667b17fc755faefe6bb5e0d5048b.png

在完成 IoTDB 的首个版本后,团队开始将 IoTDB 放在实际项目中进行应用检验。2017 年冬,IoTDB 投入到青海新能源大数据平台上,管理多家电力集团新能源场站设备上报的时序数据。当时,一个小小的细节问题都可能导致系统的崩溃,让团队充分体会到了保持系统稳定的重要性和难度。而因为系统只能连接内网,给团队的调试工作也带来了巨大的挑战。于是团队成员们用手机拍下屏幕日志,传回北京讨论修改,改好后再进行调试,就这样一点一点的完成了 IoTDB 第一个应用实例。

其实读博期间,乔嘉林也迷茫过,本来想开开心心做系统、带团队、做项目,但干了三年好像还是“革命尚未成功”,同学们也大多毕业离开。但是因为对 IoTDB 的热爱、对团队的认可,凭借着“不想让大家的付出白费”和“希望自己能够分担师兄压力,承上启下、带好团”的信念,他终于等来了开源为 IoTDB 带来的柳暗花明。

2018 年,IoTDB 进入 Apache 基金会,成为了我国高校发起的第一个,也是目前唯一一个 Apache 基金会项目,国内的软件成果终于开始带来了国际化的影响力。随后,IoTDB 又需要管理上海地铁运行产生的时序数据。时间紧、任务重,团队一起用一个月的时间,将 IoTDB 的存储引擎进行重构,实现了更好的写入与内存稳定度。系统性能更好了,他又开始建设 IoTDB 的开源社区,通过个人公众号、CSDN 博客「铁头乔」写文章的方式,分享 IoTDB 的研发思路与性能成果,并成立技术交流群,聚集发掘出来的用户与贡献者,沟通需求,集中交流。

30a8650c18930e37b65e40d45bdf09cf.png

分享-沟通-实践”的良性循环转起来了,除了清华实验室的项目,乔嘉林逐渐从 IoTDB 社区中找到并支持了更多的项目,也因此感受到了开源最重要的精神:“做好产品,帮助他人”。在这样的目标下,在疫情开始封控最严重的时期,他与其他团队成员远程通力合作,为大唐先一的时序数据库新版本上线持续提供了 4 个月的运维支持。这段时间非常忙碌,新功能研发、稳定性提升,他还记得那时候甚至做梦梦到了 bug 的位置并进行了修复,而他却并未气馁:“我们学软件、做软件是为了什么?不就是为了把这个软件做出来给人用吗?如果做的软件不好用,就是我们在折磨别人,只有做得好用了才产生价值。”

经历了焦虑,也经历了拼搏,IoTDB 的发展道路终于水到渠成。2020 年 9 月,IoTDB 顺利毕业成为时序数据库 Top-Level 项目,也就在这一年前后,华为、阿里、东方国信、中冶赛迪等公司相继加入 IoTDB 社区,并基于 IoTDB 研发自己的数据库产品或将 IoTDB 集成于物联网平台中。而乔嘉林也完成了基于 IoTDB 研发与应用成果的博士毕业论文,并因为对 IoTDB 深入的项目贡献与开源贡献,获得博士生国家奖学金。

IoTDB 项目的生态发展起来了,新的挑战又来到了团队面前。IoTDB 源于高校,以前主要由学生进行支持,但这也就意味着不能保证 7*24 小时的运维。对于已经应用 IoTDB 于实际业务场景的企业来说,他们迫切需要保障系统的实时稳定性,以支持他们的持续监控、告警、分析等需求。而且,随着 IoTDB 的代码量愈发庞大,理想的团队应该稳定长久,和项目一起持续成长,而对于高校而言,作为支持的主体显然也是有困难的。

面对国内、国外时序数据库竞品快速迭代的市场现状,IoTDB 核心研发成员决定成立公司,以公司为支持主体,进一步推进 IoTDB 在国内工业场景的应用。取“让时间(time)发声(echo)”之意,公司命名为天谋科技(Timecho),也代表着“成事在事在人”。目前天谋科技已获得上亿元人民币融资,并支持 IoTDB 在国家电网、国家气象局、中航成飞、中核集团、中国中车、长安汽车、金风科技等超过 1000 家企业广泛应用。

517ad01dbb2aaff2f129cae382fb0155.png

充分运用公司的落地应用优势与学校的精尖研发优势,IoTDB 项目的发展进入了“产学研协同”阶段。乔嘉林最后分享了 IoTDB 现在的演进模式:公司负责进行工程实践与指导,学校学生则主要参与工程研发与训练。结合双方的成果,由公司负责挖掘实际业务场景中的使用问题或痛点,然后由学生去做难点问题的突破,最后公司再将工程成果进行落地并服务用户

f81e2fe93986eea7988e0288c0dedf74.png

04

总结

“十年磨一剑”,IoTDB 自 2011 年发展至今,绝不是“霜刃未曾试”的软件系统成果,而是在中国的电厂、工厂中不断打磨,获得了工业界和学术界认可的国际化时序数据库。在工业数字化、服务转型升级需求愈发增长的时代背景下,IoTDB 可以为工业数据价值发掘、产业赋能提供稳定、高效的解决方案。

作为从高校走出的时序数据库项目的深度参与者,乔嘉林把 IoTDB 的研发历程、发展路径和他一路走来,从团队成员到团队核心的感想体会,完整地分享给了更多的高校同学,并详细地介绍了时序数据库领域的市场需求与行业现状,为同学们真实、深刻而有趣的呈现了“国产化浪潮下的工业时序数据库 IoTDB 自研之路”,也希望更多同学能够投入到中国数据库发展的事业中来。

f3f16c8a43eac5b4df63995a55fc483a.gif

00e04d504d98da900573c34d7c2493be.jpeg

927b6adce1b8c59755b72efe2c3a7ec0.jpeg

65d940aa2986e31c5bf50cd003dfc48f.jpeg

37bacc6acd1b15e3fa81493ed57b1626.gif

相关文章:

Apache IoTDB 走进东南大学,深入分享项目发展历程与收获

源于高校,回到高校,Apache IoTDB PMC 成员乔嘉林为同学们详细分享行业前瞻、研发历程与心得体会。 01 把领先的数据库知识带到校园 6 月 5 日,东南大学计算机科学与工程学院、软件学院、人工智能学院主办的“拔尖领航系列活动特别策划篇-第二…...

Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享

大家好,我是向阳 今天我将针对建筑设计方面的AI大模型进行简单介绍,我们将通过富有想象力的关键词或结合Stable Diffusion 的ControlNet 给原本只有黑白线条的线稿变成彩色的效果图,可能你只需要短短几分钟就可以让黑白线稿变成几种甚至十几种…...

没有 ADetailer,ComfyUI 画图脸崩了怎么办?

我们都知道 SD 的 WebUI 中的面部修复神器是 ADetailer,不过它是 WebUI 的专属插件,在 ComfyUI 中是搜索不到这个插件的,但是并不代表 ComfyUI 就不能使用面部修复功能了,ComfyUI 中也是可以找到平替的。 今天我们就来讲讲在 Com…...

防爆气象仪的工作原理

TH-WFB5矿山气象传感器在矿山安全监测系统中扮演着至关重要的角色,它们能够及时发现异常情况,为矿山的安全运营提供可靠的数据支持。矿山气象传感器能够实时监测矿山环境中的风速、风向、温度、湿度和大气压力等关键气象参数。这些传感器采用先进的传感技…...

深度学习入门5——为什么神经网络可以学习?

在理解神经网络的可学习性之前,需要先从数学中的导数、数值微分、偏导数、梯度等概念入手,从而理解为什么神经网络具备学习能力。 1.数值微分的定义 先从导数出发理解什么是梯度。某一点的导数直观理解就是在该点的切线的斜率。在数学中导数表示某个瞬…...

Integer溢出问题

0. 背景 在刷 LeetCode 时,代码的执行结果与预期出现了偏差,原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况,之前的认知是如果 Int 中存储的值超过了允许范围也许…...

软件测试全面指南:提升软件质量的系统流程

一、引言 随着软件行业的飞速发展,确保软件质量、稳定性和用户体验已成为企业竞争的关键。本文档旨在为测试团队提供一套全面的软件测试指南,通过规范测试用例管理、功能测试、接口测试、性能测试及缺陷管理等流程,助力测试团队实现高效、系统…...

《逆贫大叔》:一部穿越时光的温情史诗

《逆贫大叔》:一部穿越时光的温情史诗 在历史的长河中,有些故事能够穿越时光的尘埃,直击人心。《逆贫大叔》就是这样一部作品,它不仅是一部电视剧,更是一段历史的缩影,一次心灵的触动。 背景设定&#xff1…...

【电机控制】FOC算法验证步骤——PWM、ADC

【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…...

如何衡量llm 数据集的多样性

衡量大型语言模型(LLM)数据集的多样性是一个复杂的问题,因为多样性可以从多个角度来考虑。以下是一些常用的方法和指标来评估数据集的多样性: 词汇多样性: 类型-词符比(Type-Token Ratio, TTR)…...

编程天才是什么意思

编程天才是什么意思 编程天才,这个词汇似乎充满了神秘与敬畏的色彩。那么,它究竟意味着什么呢?在本文中,我们将从四个方面、五个方面、六个方面和七个方面深入探讨编程天才的内涵与外延,带您领略这一领域的独特魅力。…...

创建npm私包

参考文章: 使用双重身份验证访问 npm | npm 中文网 私有npm包的实例详解-js教程-PHP中文网 1.注册npm账号 npm官网: npm | Home 2.安装node 百度挺多的,安装完后,检查是否安装成功就行 3.写一个简单的模块 创建个文件夹&am…...

provider追加android:name的命名有哪些?

在Android中&#xff0c;为<provider>元素添加android:name属性时&#xff0c;命名应遵循Android组件的命名规范和包名的命名规范。以下是一些关于命名android:name的要点&#xff1a; 包名前缀&#xff1a;android:name属性的值通常应以包名开始&#xff0c;这是应用程序…...

长亭网络通信基础

长亭笔试之前就已经学过一遍了 这算温故而知新吧 TCP/IP 首先我在这里默写一下之前的7层和4层 应用层 应 【表示层 数据格式转换 传 【会话层 …...

hdfs源码解析之DFSClient

1、DFSClient类简介 DFSClient 是 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;中的一个核心类&#xff0c;用于客户端与 HDFS 之间的交互。它提供了一组方法&#xff0c;使客户端应用程序可以方便地与 HDFS 进行通信&#xff0c;包括文件的读取、写入、创建、删除、重命…...

智能化立体仓库的种类有哪些?

在仓储运输系统中&#xff0c;自动化立体仓库可充分利用空间储存货物&#xff0c;故而也被称之为高层货架仓库。在实际应用中&#xff0c;自动化仓库系统是不需人工处理的情况下能自动存储和取出物料的系统。那么&#xff0c;智能化立体仓库的种类有哪些&#xff1f;下面就让小…...

Stable Diffusion 3 如何下载安装使用及性能优化

Stable Diffusion 3 Stable Diffusion 3&#xff08;SD3&#xff09;&#xff0c;Stability AI最新推出的Stable Diffusion模型系列&#xff0c;现在可以在Hugging Face Hub上使用&#xff0c;并且可以与Diffusers一起使用。 今天发布的模型是Stable Diffusion 3 Medium&…...

c语言操作符详解

操作符详解 正数的原码反码补码相同 负数的原码最高位数是1&#xff0c;正数为0 整数在内存中存储的是补码 负数的左移与右移&#xff0c;移的是补码&#xff0c;打印的是源码 补码-1取反就是原码。 左移有乘2的效果 左移和右移只针对整数。 vs里的右移操作赋采用的是算数右…...

【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢

【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢 强耐水UV胶水的粘接强度与普通UV胶水相比&#xff0c;具有显著的优势。以下是详细的比较和归纳&#xff1a; 固化方式&#xff1a; 两者都是通过紫外线&#xff08;UV&#xff09;照射进行固化&#xff0c;但强耐水UV…...

jumpserver堡垒机集群搭建

1、环境 操作系统&#xff1a;龙蜥os 7.9 firewall-cmd --permanent --zonepublic --remove-servicessh firewall-cmd --permanent --zonepublic --add-rich-rulerule familyipv4 source address10.90.101.1 port port22 protocoltcp accept firewall-cmd --reload2、安装NFS…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...