Welcome
New Committers
2022年5月24日,经 Apache IoTDB 社区投票,刘明辉、刘旭鑫成为 Apache IoTDB Committer 。今天,我们为大家带来“二刘同学”与 Apache IoTDB 的故事。
Committer 刘明辉
清华大学软件学院研一学生,本科就读于厦门大学计算机系,2021年7月开始参与 Apache IoTDB 开源贡献。
主要贡献有:
SQL 解析重构、降采样聚合查询功能扩展、查询资源优化、C 客户端维护、查询逻辑计划生成等。
目前已经向 master 分支贡献70余个 PR,累积贡献度排名第 18 。
关于
Apache IoTDB
初识
加入IoTDB的契机是什么?
最早是在选择研究方向的过程中了解到 Apache IoTDB。这款高校自研数据库系统软件被捐赠到 Apache 软件基金会成为顶级项目,这种情况在国内非常少见,也因此引起了我的兴趣。
在本科阶段,我接触到的更多是一些算法方面的学习,尤其是近几年比较火的人工智能。人工智能固然神奇瑰丽,但相对于“炼丹”,我发现我更享受解决实际工程问题带来的成就感、满足感。而 IoTDB 既符合了我的兴趣,又足够“硬核”,能给我带来广阔的成长空间,因此我最终选择参与到 Apache IoTDB 这个项目中。
我是在2021年7月开始接触 IoTDB,并在7月13号合并了我的第一个 PR,正式成为了一名社区贡献者,开启了我与 IoTDB 的故事。
参与
有记忆犹新的故事吗?
让我记忆比较深刻的可能是最近几次的新分布式版本联调。各个模块的开发同学被组织在一起,焦急等待测试结果。中途有 bug 出现,大家就随时顶上。在大家的思维碰撞中,可以学习到其他同学解决问题的思路方法,社区伙伴之间的感情也更加深厚了,总之是段很难忘的经历。
成长
主要负责的内容和收获?
我在 Apache IoTDB 中主要负责查询引擎方面的工作。最大的收获就是让我从一个连 Java 和设计模式都不懂的小白成长成一个能够熟练参与开发、解决问题的 Committer,这离不开社区的培养,尤其是田原、祥威、宇荣等社区前辈对我细致耐心的指导。或许这就是开源的魅力所在吧。
关于
开源社区
成长
对开源有了什么新的认识?
好的开源社区是源动力
最早我对开源的认识很简单,认为把代码公开到 Github 等代码托管平台就叫开源了。但在参与 Apache IoTDB 项目的过程中,我对开源也有了更深的认识——也就是常说的“社区大于代码”。在开源社区中,开发者可以接触到来自不同公司、高校,具有不同背景的同学,大家为了相同的目标共同努力、一起成长,这对开发者来说是很有吸引力的,也是一个开源软件能够持续健康发展的根本。我认为一个好的开源社区应该是开放透明的,社区的同学为了共同的目标进行平等的沟通协作,去感受社区乐于分享的氛围。
千里之行,始于足下
——《道德经》· 老子
寄语:
希望有更多的同学像我一样能加入开源社区,从小事开始做起,扎实牢靠的积累自己,一步步成长,和社区一同茁壮!
Committer 刘旭鑫
清华大学软件学院研一学生
主要贡献有:
在 0.13 版本中重新设计和实现了数据合并模块,并进行长期维护。
目前总共向项目贡献 70 余个 PR, 5 万余行代码,累积贡献度排名第 26 。
关于
Apache IoTDB
初识
加入IoTDB的契机是什么?
大概在 2021 年 1 月份左右,我当时大四做毕业设计的时候了解到这个项目。我毕业设计的主要内容是基于用户的查询负载优化 TsFile 中 Chunk 的大小以及排列。从那个时候开始就在乔嘉林学长和田原学长的帮助下,学习 TsFile 中的文件结构以及 IoTDB 的查询模式和执行流程。这个过程中我也和一些社区开发者有过交流,受到了他们的帮助,最终顺利地完成了我的毕业设计。
参与
有记忆犹新的故事吗?
印象最深的是有一个 PR 被 revert 掉了。因为原来 0.12 中并没有监控功能,每次合并有问题都需要从很多的日志里面去翻找,我就想在 0.12 里面写一套简单的监控功能。但是 PR 合进去以后,发现对 IoTDB 的性能造成了比较大的影响,后面就 revert 掉了。这个事情让我明白,写系统软件任何一个小的改动都有可能造成蝴蝶效应,所以任何改动都需要经过充分的测试之后再合进主仓库。
成长
主要负责的内容和收获?
我的主要工作就是数据合并模块,也就是 LSM 中的 Compaction 模块,收获主要有两个方面:
1
让我学会了写系统软件时对性能的把控要到位。合并模块比较消耗 IO、 CPU 和内存,如果性能没把控好的话就很容易影响写入和查询,甚至有时候会 OOM 。所以从算法、数据结构、JVM 的 GC 等等方面都要对性能有一个比较好的把控。
2
学会了很多 Debug 的技巧吧,之前合并模块总出 Bug,因此从浩如烟海的日志中寻找 Bug 的蛛丝马迹是必备的本领。之前最多的一次,为了找一个 Bug,打了几 GB 的日志,然后用 grep 一点点去排查。我应该也是 IoTDB 里第一个用 UDF 在线上系统不停机的情况下去查 Bug 的人,主要就是用 UDF 的动态加载特性,然后在里面写一些反射代码,来获取我们想知道的系统内部信息。
这两项能力我认为在本科都是比较难锻炼到的,以前写的代码主要是一些大作业,IO 多一点内存多一点 CPU 消耗多一点都无所谓,反正最后能交上去就行,现在写代码考虑的方面就会更多一些。
关于
开源社区
成长
对开源有了什么新的认识?
社区的交流与碰撞是意义所在
最开始认为的开源就是把软件的源代码交出来让大家免费用,现在觉得开源其实承载了更多东西。开源的意义不仅在于那些代码公开,更重要的是开源社区凝聚了不同背景的开发者,他们之间的交流和碰撞有着很大的意义。有些时候和别的开发者交流的时候,就会发现别人看问题的视角和我们的不一样,解决方案的思路也不一样。这些过程中都能给身处其中的人带来收获和成长,我认为这是开源对于开发者重要的意义所在。
非技术类——《三体》
技术类——《现代操作系统》· 陈海波
寄语:
每次看《三体》这套书都会让我觉得很震撼,《现代操作系统》是我在去年毕业前读的,读完之后我感觉像是把操作系统这门课重新学了一遍,里面有一些比较前沿的操作系统主题,还是值得一观的。
关于我们
Apache IoTDB——海量时序数据管理的最佳解决方案,一款高吞吐、高压缩、高可用、物联网原生的开源时序数据库。从0到1自研时序存储方案、物联网数据模型、低流量数据传输方案,使得纳秒级采样数据写入无压力、TB级数据查询毫秒级、数据存储无损压缩数十倍。核心技术源自清华、自主可控。目前已在国家电网、国家气象局、中航成飞、中核集团、长安汽车、金风科技等企业广泛应用。