PMC 田原

包揽各大厂 SSSP 的清华学霸,专注于做 Apache IoTDB

来自清华大学软件学院,参与 Apache IoTDB 开源贡献已近3年,贡献了259个 PR ,Github 上累积贡献度排名第四。

在 Apache IoTDB 中主要贡献的内容:


(相关资料图)

1.单元与多元序列兼容的时序数据库存储引擎和查询引擎的设计与实现

2.单条查询内部的并行化

3.TsFile V3版本的设计与实现

4.查询的内存控制和缓存管理

5.查询优化相关的工作,比如值过滤算子的下推等

2022年4月21日,经 Apache IoTDB 社区投票, 田原成为 Apache IoTDB PMC member,今天,我们为大家带来对他的访谈。

1、初识:加入IoTDB的契机是什么?

起因是在参加清华大学软件学院的夏令营过程中,会有每个老师去介绍研究方向,当时听了IoTDB 社区 PMC 的介绍,让我开始了解到这个项目。

IoTDB 对我的吸引力主要是两个方面:

1. 是觉得做数据库方向的研发底层且硬核,能学到很多东西。

2. IoTDB 是一个国际化的开源社区。中国有句俗语叫独学而无友,则孤陋而寡闻。开源领域还有一句流行的话叫做 Community Over Code:即社区大于代码。所以我对于开源社区就有一种好奇心,现在很多软件都在打造自己的开源社区,之前并没有接触过开源,所以很想深入了解开源社区的运作模式,希望在里面不仅可以学习到数据库这一领域的专业知识,也能感悟到开源精神和文化。

2、成长:在参与 IoTDB 的过程中,有哪些收获?

2.1 给予我在开源上的启蒙

在这之前,我对开源社区的认识还比较简单,认为它只是一个可以给大家免费用的软件,也只知道像 Spark、Hadoop 这样的明星产品。

接触 Apache IoTDB 之后,才开始对开源社区的整个流程规范有一个更深的了解,包括怎么去获取信息学习到相关知识,如何参与到社区贡献中,社区的贡献制度等。如今,我作为一个开源贡献者,逐步形成自己的方法论,可以很熟练的去自主解决问题、提升技术水平,帮助其他社区去提 PR ,尽自己所能去帮助开源社区做贡献。

也在这个过程中,感受到开源的独特魅力。很多用户、企业在使用我们的开源产品时,会给予反馈,并且认真协助我们找到相关问题。这种技术热情是互相感染的,同时也会带动社区里的更多人为 IoTDB 贡献自己的一份力量。

2.2 对技术能力提升的帮助上是巨大的

就我个人来讲,本科接触的比较多的还是业务系统,能接触到像 IoTDB 这种底层开发而非业务系统的机会是很少的,而且也没有人可以指导你去更加深入地了解数据库的相关技术。直到接触到 IoTDB ,并且切身地接触到更多跟操作系统内核相关的经验,才感受到它对技术能力提升的帮助上是巨大的。

如果是业务层,很多情况下,它是面向某一种特定的业务场景,但是像底层开发的非业务系统,它是要帮业务系统去屏蔽很多很底层的问题。所以当你真正作为一个底层系统软件的运营开发者去考虑的时候,由于出发点变了,很多都会不一样,由此带来的自我价值的实现和成就感,对我去提升技术能力会很有推动力。

2.3 以下几点是在我看来比较重要的:

1. 受限于 IoTDB 是 java 是开发的,作为数据库开发的运营人员,就要求对 java 语言的底层逻辑例如 JVM 有一个很好掌握。

2. 要学会“瞻前顾后”,面对不知道问题在哪,不知道怎么去做排查的时候,需要有能力去从几十万行代码中,去快速定位到问题。

2. 时刻保持学习,且不止关注自己的代码,也要多向别人学习,对新技术保持敏锐度。

3、记忆:有什么参与贡献过程中的故事分享?

3.1 揭开神秘面纱

在接触数据库系统之前,觉得数据库系统很神秘,不知道它具体是怎么存的。直到知道文件落到磁盘里到底是什么样子,从那个时刻开始,才揭开了“TsFile”的神秘面纱,才觉得自己对 Apache IoTDB 有了比较清晰的认识,那个感觉很奇妙。

3.2 做出首个贡献

刚加入社区的时候,我做的第一个工作是做一个 Hive 的连接器,也就是让 Hive 能够识别 IoTDB 底层存储的文件格式 TsFile ,能够通过hive查询到tsfile里存储的数据。这个功能发布之后,我陆续收到了很多咨询这个功能如何使用的邮件和消息,那时候还是比较有成就感的,觉得自己做的功能,正在被很多公司和个人尝试使用。当然,这个也是依托 IoTDB 这个开源社区的影响力,才会让这么一个功能发布后,进入更多公众的视野中。

3.3 攻克技术难关

查询引擎的重构是一个比较大的技术难关。研一考试周刚结束的时候,乔老师就拉着我,两个人到单独的小会议室,开始结对编程。还有社区里的另一位PMC——大伟哥,大伟哥那会儿是线上远程结对。封闭开发持续了一周,把原来查询引擎实现比较混乱和冗余的地方进行重构,设计并实现了底层公用的 Scan 算子,对上层屏蔽了复杂的顺序与乱序文件Scan 时的读取逻辑,提供了统一的接口。这个重构也随着IoTDB 0.9版本一起发布,在社区用户的不断使用过程中,被不断完善,历经几个小版本的迭代后逐渐稳定。

独学而无友,则孤陋而寡闻。

——《礼记•学记》

寄语:

加入到 IoTDB 的开源社区中来,你会感受到国际化开源社区的氛围,前有“古人”指路,后有“来者”求学,旁有“道友”同行,聚人为众,共同进步,这也是IoTDB最初吸引到我的地方。

关于我们

Apache IoTDB——海量时序数据管理的最佳解决方案,一款高吞吐、高压缩、高可用、物联网原生的开源时序数据库。从0到1自研时序存储方案、物联网数据模型、低流量数据传输方案,使得纳秒级采样数据写入无压力、TB级数据查询毫秒级、数据存储无损压缩数十倍。核心技术源自清华、自主可控。目前已在国家电网、国家气象局、中航成飞、中核集团、长安汽车、金风科技等企业广泛应用。

作为全球性开源项目,截至目前 Apache IoTDB 已拥有185名贡献者、2KStar、610Forks。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache IoTDB 项目的不断发展与前进。

欢迎迈出加入 Apache IoTDB 社区的第一步!

微信群:添加好友qinchuqing

推荐内容