写点什么

三位清华 committer 齐聚!分享在 Apache IoTDB 社区的技术与实践经验“养成史”

作者:Apache IoTDB
  • 2023-09-22
    北京
  • 本文字数:5846 字

    阅读完需:约 19 分钟

三位清华 committer 齐聚!分享在 Apache IoTDB 社区的技术与实践经验“养成史”

2023 年 7 月 25 日、8 月 1 日,经 Apache IoTDB 社区投票,陈彦泽、廖兰宇、喻思成成为 Apache IoTDB committer。都是清华在读硕士的他们,什么是让他们在学生时代就快速成长为 committer 的“独家秘籍”?在贡献 Apache IoTDB 代码的过程中,他们又有什么样印象深刻的故事和收获呢?


陈彦泽

我叫陈彦泽,来自福建漳州,本科毕业于南京大学软件学院,目前是清华大学软件学院的研二研究生。我的 GitHub 用户名是 Cpaulyz,从 2021 年 7 月份开始加入到 Apache IoTDB 开源社区,目前总计代码贡献 107139 行,排名 13/258。


关于 Apache IoTDB

最开始你是怎么了解到 Apache IoTDB 这个项目的?

本科阶段的学习中,我就一直对数据库和系统研究的方向感兴趣。在推免硕士的时候,从一些师长那里了解到 Apache IoTDB 是清华大学主导的 Apache 顶级项目,很多非常优秀的学长都在这个课题组工作。当时 Apache IoTDB 就已经被应用于工业物联网的生产环境中了,所以参与它不仅仅可以做数据库理论研究,还有实际的应用场景,这种“产学研”结合的模式非常吸引我。


是什么让你最终选择参与到 Apache IoTDB 这个项目中?

因为已经了解到了 IoTDB 且很有兴趣,我的本科毕设内容就是基于 TsFile 的数据同步方案,与 IoTDB 的端-边-云协同特性相关。在社区导师的的指导下,我学习到 IoTDB 自研的时序文件格式 TsFile、顺乱序分离的存储引擎 IoTLSM 等硬核知识。IoTDB 的技术先进性,以及社区的热情和技术氛围,让我最终选择参与到 Apache IoTDB 这个项目中。


在 Apache IoTDB 中主要负责哪一部分的内容?

我目前主要负责元数据管理引擎的相关工作,包括元数据的存储、查询、视图等功能的迭代,同时也在进行海量元数据管理方向的技术探索。


在参与 IoTDB 项目建设的过程中,有哪些收获?

在参与 Apache IoTDB 项目建设的过程中,最大的收获是学习到了很多关于数据库领域的前沿技术,并且能够将其投入运用到工程实践中。另外,开源社区的模式还让我更加熟悉了协作式开发的全流程,锻炼了我的沟通能力和表达能力。


有什么参与贡献过程中的故事分享?

印象比较深的是对元数据查询的一次重构工作。因为 IoTDB 采用了层次结构的数据模型,是通过带通配符的路径模式来进行序列匹配,所以当时为了实现海量序列场景下的元数据管理,需要对元数据查询进行一些重构。

IoTDB 语法中的路径模式和正则表达式类似,这让我想起了本科学过的《编译原理》中的自动机理论,正则表达式就是建立在自动机的理论基础上的,同样地,IoTDB 的路径模式也可以转换为语义等价的非确定性有穷自动机(NFA)或确定性有穷自动机(DFA)。基于这样的想法,后面也是和社区同学周钰坤一起,在 MPP 框架下基于 FA 实现了元数据树的高效匹配和迭代查询。在这个过程中,我不仅学习到了分布式环境下性能调优的思路与方法,也更意识到想要做好数据库这样的系统软件,技术沉淀是很重要


是什么让你能一直坚持参与 Apache IoTDB 项目,最终成为 Committer 呢?

我本身对数据库内核研发就有较为浓厚的兴趣, Apache IoTDB 作为一个支持分布式建构、高性能高扩展的时序数据库,能够提炼出时序数据库的应用痛点与优化点,针对工业物联网的典型应用场景,持续进行核心技术的优化和迭代,这与我的兴趣非常契合。在参与项目的过程中,社区的开放性和包容性也让我感到非常温暖,我也被社区的活跃度和对技术创新的追求所吸引,让我想要持续为社区的建设出自己的一份力量。


关于开源社区

之前有过参与开源社区的经验吗?对开源/开源社区有什么新的认识吗?

没有。但通过这次经历,我深刻地认识到开源社区的力量。开源社区不仅仅是代码开源,它还汇集了来自不同公司、不同技术背景、甚至不同国家的伙伴。大家一起头脑风暴、集思广益,共同为一个目标努力,让 IoTDB 在我们手里越变越好的感觉特别好。


你觉得开源社区对 Apache IoTDB 的“加成”是?

开源社区对 Apache IoTDB 的加成是巨大的。首先,开源社区为项目提供了更广泛的用户基础和贡献者群体,这意味着更多的反馈、测试和改进机会。其次,开源社区的多样性意味着可以吸引不同背景和技能的人,从而带来更多样的创新思考和解决方案。开源社区还可以促进知识共享,让更多人更加了解并受益于 Apache IoTDB 的功能和应用。最重要的是,开源社区可以帮助确保项目的持续发展和稳定性,因为它不依赖于个别组织或人员的支持,而是依赖于整个社区的力量,有了这样的开源社区,IoTDB 的未来我觉得会更加安定的进步。


有没有给想要参与 Apache IoTDB 开源社区贡献的小伙伴一点小建议?

不要害怕初次参与开源社区。每个人都是从零开始的,只要你有热情和决心,一定可以在开源社区中找到属于自己的位置。


成为 Committer 的感言!

很高兴能够成为 Apache IoTDB 的 Committer,这意味着我的工作和贡献得到了社区小伙伴的认可。感谢社区的支持和信任,我将继续学习和成长,期待与社区的其他贡献者一起继续推动 Apache IoTDB 的进步!


廖兰宇

我叫廖兰宇,本科毕业于南京大学软件学院,目前在清华大学软件学院就读工程硕士。我从 2021 年 11 月开始参与 Apache IoTDB 开源社区的工作。


关于 Apache IoTDB

最开始你是怎么了解到 Apache IoTDB 这个项目的?

读研之前了解到有学长在参与 Apache IoTDB 的工作,由于本科主要接触的是工程开发相关工作,在简单了解 Apache IoTDB 的背景之后,对这个项目产生了兴趣,觉得 IoTDB 在工业物联网时序数据库领域的很多技术创新,和开源社区平台的频繁技术迭代都很吸引我,最后经学长推荐我也来到了 IoTDB 社区。


是什么让你最终选择参与到 Apache IoTDB 这个项目中?

参与社区工作之后我发现,数据库内核和大型系统开发是一项非常有挑战性且非常有趣的工作。同时,在参与社区工作的初期,苏宇荣学长非常耐心细致地解答我的问题,让我能渐渐融入社区工作,也让我对社区的氛围产生了好感。参与更多社区工作之后,田原学长、刘明辉学长和谭新宇学长等人也给了我很多技术和非技术方面的帮助,这让我相信我可以在社区得到成长,也是我最后加入 IoTDB 项目的主要原因。


在 Apache IoTDB 中主要负责哪一部分的内容?

目前我主要参与的是分布式查询引擎的维护和开发工作,包括 SQL 解析、逻辑计划生成、物理计划生成、查询调度和数据传输等模块,同时也参与了 UDF 等数据处理功能的维护工作。


在参与 IoTDB 项目建设的过程中,有哪些收获?

首先是收获了和社区同学的友谊。加入 IoTDB 项目之后,我和社区的同学很快熟悉起来,大家彼此支持,一起为了共同目标努力的氛围非常吸引人。

其次是软件工程能力的提升。IoTDB 是我接触的第一个大型系统项目,且该项目是投入生产使用的,这与本科大作业做的 demo 级别的项目有很大的不同。在写代码时,我需要更加严谨细致地考虑代码后续带来的影响,实现一个功能基本需要走完技术调研、方案设计、代码开发、代码审核、功能验证等阶段,这对我工程统筹能力的提升很有帮助。

最后是沟通和协作能力的提升。社区工作往往需要和其他同学一起合作开发功能,我们需要清晰地表达自己的想法和设计思路,要能和社区同学合理分工、共同推进工作的进行,这对提升我的沟通和协作能力很有帮助。


有什么参与贡献过程中的故事分享?

去年上半年社区一直在推进分布式开发工作,虽然当时我并没有参与太多工作,但是在周会上看到大家每周的进度,想想我的工作在整个 IoTDB 系统里的意义和方向,顺着乔老师做的超长的思维导图一点点完成目标,最后如期在六月底发布 preview 版本,这个思考、参与、完成的整个过程还是给我留下了深刻的印象。


是什么让你能一直坚持参与 Apache IoTDB 项目,最终成为 Committer 呢?

Apache IoTDB 算是国产时序数据库的先锋之一,能够参与这样一款国产开源系统软件的研发在我看来是很有意义的。同时,在社区友好的氛围下可以得到很多技术成长以及多维能力的提升,这也是我坚持参与 Apache IoTDB 项目的原因。


关于开源社区

之前有过参与开源社区的经验吗?对开源/开源社区有什么新的认识吗?

没有,Apache IoTDB 是我参与的第一个开源社区。之前我对开源社区了解不多,加入 Apache IoTDB 社区之后,我觉得这是一个技术氛围浓厚且友好的社区。“大佬”云集让社区有持续创新的实力,而在开放的氛围下,团结大家为共同的目标努力也是开源社区的魅力所在。


你觉得开源社区对 Apache IoTDB 的“加成”是?

开源社区一定程度上提升了 IoTDB 的知名度,也吸引了更多的用户。无论是开发者还是用户,社区的参与者往往会提出需求,这些需求会更加贴近实际的应用场景,所以对 IoTDB 后续的功能演进方向,和落地实践需要解决问题的方向有所启示。同时,开源社区参与者反馈的问题,也会得到社区的重视,促使 IoTDB 持续地朝“实现更稳定高效的数据库系统”的目标演进。


有没有给想要参与 Apache IoTDB 开源社区贡献的小伙伴一点小建议?

欢迎对开源项目和数据库内核感兴趣的小伙伴加入到 Apache IoTDB 开源社区的建设中来,这个过程中可能会遇到一些疑惑和不解,可以与 IoTDB 社区的大家多多交流和讨论,社区的大家都会积极帮助解答你的问题,相信大家可以在这个过程中有所收获!


成为 Committer 的感言!

成为 Apache IoTDB 的 Committer,意味着我的工作得到了 Apache IoTDB 社区的认可,我深感荣幸。希望自己以后能继续和 IoTDB 社区的同学们一起成长。


喻思成

我叫喻思成,来自湖南长沙,本科毕业于哈尔滨工业大学计算机科学与技术学院,目前在清华大学软件学院就读工学硕士。我从 2021 年 7 月开始参与 Apache IoTDB 开源社区项目,目前贡献了 37,971 行代码。


关于 Apache IoTDB

最开始你是怎么了解到 Apache IoTDB 这个项目的?

大三由大数据领域的专业课老师做了关于时序数据库的介绍,也了解到清华大学的开源时序数据库 IoTDB,在后续的深入了解中我得知 IoTDB 当时是 Apache 软件基金会孵化项目,旨在提供可扩展、可靠且高效的数据存储和查询解决方案,以满足物联网应用程序的需求,运用高技术水平保持工业业界的密切联系,这样的技术背景和应用前景深深吸引了我。


是什么让你最终选择参与到 Apache IoTDB 这个项目中?

了解到 Apache IoTDB 之后,我始终在关注 Apache IoTDB,从 IoTDB 的技术架构、性能表现中都可以发现其在面对时序场景下,多个高挑战性场景的优势。我一直喜欢探索工程领域的应用场景中,更快更好的技术方案,因此在大四保研至清华大学软件学院的时候选择参与到 Apache IoTDB 的代码贡献中。同时 IoTDB 开源社区积极交流的技术氛围也给予我了更浓厚的兴趣在这个领域探索。


在 Apache IoTDB 中主要负责哪一部分的内容?

我在 Apache IoTDB 中主要负责端云协同系统的设计与开发。针对边缘端网络带宽受限场景,我参与定制了基于高压缩率数据文件的时序数据同步系统。与日志同步方案相比,网络传输流量减少 62.17%,CPU 使用率降低 94.44%。

另外,我参与设计并实现了基于数据文件和写前日志的混合传输端云协同系统,可以根据数据积压状态在数据文件和写前日志间自动切换捕获的增量数据形式,兼顾低延迟和高效性。这个端云协同系统采用数据采集,数据处理,数据发送三阶段微内核架构,每一阶段都支持用户自定义插件,可以适配各种工业部署环境,也支持分布式场景下的高可用性与单机场景的容错恢复,能够为时序场景下的数据生产和流转提供一站式解决方案。


在参与 IoTDB 项目建设的过程中,有哪些收获?

从个人体会上来说,从 0 到 1 构建了时序数据库中的计算处理框架的经验给我带来了全新的体验和思考,培养了我从用户的计算需求出发,全局思考的能力。在技术细节上来说,对 Java 高性能缓存队列、引用计数、高并发异步协同处理等技术点都有了更深的理解。在团队合作上来说,与多位同学和学长的通力合作带来的工作体验让我更加明白如何与开源团队的小伙伴们积极沟通、共同进步。


有什么参与贡献过程中的故事分享?

在 IoTDB 1.2 版本发版前一天晚上,因为最后的通信模块出现了问题,我和同学、学长三个人在实验室狂找一通宵问题在哪,在第二天马上要发版之前在一个古老的模块发现了一个“陈年” bug。发版结束之后大家已经都没有人形了,极度疲惫的同时又有“问题解决了”的极大满足感。这种挑战极限的刺激和成就感实在让人印象深刻,但是还是少来点好(笑)。


是什么让你能一直坚持参与 Apache IoTDB 项目,最终成为 Committer 呢?

看到自己的努力在社区中真真切切地帮助用户解决了问题带来的成就感产生的正反馈让我坚持到现在,当然还有开源社区所有小伙伴源源不断的鼓励和小组内良好的氛围,每一次遇到困难的时候是大家互相推动,不知不觉就坚持了下来。


关于开源社区

之前有过参与开源社区的经验吗?对开源/开源社区有什么新的认识吗?

之前更多是作为使用者接触开源社区,来 IoTDB 是我第一次作为贡献者深度参与开源社区。开源社区是一个不断发展和变化的领域,一直在不断出现新的趋势和挑战。在开源社区中,大家也正是针对这些新挑战,通过共享知识、合作和创新来推动技术的前进。因此,我觉得保持对这些新趋势的关注和适应是非常重要的。


你觉得开源社区对 Apache IoTDB 的“加成”是?

从技术角度说,开源社区为 Apache IoTDB 提供了大量的技术贡献。开发者可以自愿参与代码编写、问题修复、功能改进和性能优化等工作,这明显加速了 IoTDB 的发展。我能感受到,IoTDB 开源社区吸引了来自不同背景和领域的人员。这种多样性也就带来了不同的视角和思考方式,有助于更好地满足不同的技术方向和用户的需求。

从影响力来说,有了开源社区,小伙伴们也可以以社区为主体,通过活动、meetup 这样的方式推广 Apache IoTDB。在开源社区中,小伙伴们也可以共享使用 Apache IoTDB 的实践经验和解决问题的经历,这也有助于我们的用户更好地使用 IoTDB。


有没有给想要参与 Apache IoTDB 开源社区贡献的小伙伴一点小建议?

非常欢迎大家来到 Apache IoTDB 社区。开源社区是一个共同协作的地方,你的贡献不仅有助于 IoTDB 的发展,还能与其他开发者一起创造有意义的新模块、新功能。所以,享受这个过程并乐于与 IoTDB 社区的大家互动是非常重要的。希望大家能够不要局限自己的想象力,技术是我们实现想法的手段,更多新奇的想法是保持 IoTDB 社区活力的重要来源。


成为 Committer 的感言!

成为一个 Apache IoTDB committer 是一项令人兴奋和充实的成就,它代表着我的技术能力和贡献被广泛认可。作为一个 committer,能够对项目的方向和发展产生直接影响,让我感到特别荣幸,但同时也意味着我有了更多的责任。希望对时序数据库技术感兴趣的同学也能加入到 IoTDB 这个成就感满满的项目中来!

用户头像

Apache IoTDB

关注

还未添加个人签名 2021-12-30 加入

海量时序数据管理的解决方案,一款高吞吐、高压缩、高可用、物联网原生的开源时序数据库。

评论

发布
暂无评论
三位清华 committer 齐聚!分享在 Apache IoTDB 社区的技术与实践经验“养成史”_Apache IoTDB_InfoQ写作社区