张文歆:思维需碰撞,才有更大的“火花”|对话 Doris

新闻动态
2022/11/17
SelectDB 技术团队

对话 Doris」是 SelectDB 推出的系列专访栏目,本栏目将对 Apache Doris 社区优秀开发者进行访谈,希望通过他们在社区的成长经历,传递出对开源的态度、参与开源方法论以及实践经验,让开发者更加了解开源、了解 Doris,并呼吁大家参与到社区建设中来。

第 1 期我们邀请了 Apache Doris Committer、SelectDB 查询优化器研发 Leader 张文歆,一起来看看他在参与社区建设中都有哪些经验和大家分享吧。

张文歆.png

推荐语:

从 15 年参加工作开始,也接触了许多开源项目,Apache Doris 是我遇到的最活跃的开源社区之一,“事事有回应,件件有着落”这句话用来形容 Apache Doris 社区再合适不过了。

—— Apache Doris Committer 张文歆

Q 1你好,很开心可以与你交流,简单介绍下自己吧

我叫张文歆,2022 年初加入 SelectDB,主要负责 Apache Doris 新查询优化器 Nereids 的开发工作。我从 15 年研究生毕业后进入百度,17 年初转入离线计算引擎组,自此之后一直从事大数据相关的工作,在离线计算,数据湖,在离线一体平台等领域都有所涉猎。

Q 2:你是如何看待开源的,简单谈谈你对开源的看法

我是很拥抱开源的。

从我开始工作起,就开始接触开源软件,当时我们大量使用开源软件来构建系统,在做爬虫系统时,我们使用了 Selenium、Chromium 来抓取一些特定的网页。后来转入到离线计算组之后,经历了将自研引擎切换到了开源引擎 Spark,后来也相继使用过 Iceberg,Hudi 等,并于 2022 年初加入了 Apache Doris 社区,也很荣幸在 Apache Doris 社区成长为 Committer。从以上经历中即可看出,我无时无刻都在与开源软件打交道,开源也给我带来许多成长与蜕变。

从个人角度来讲,开源项目能够帮助我快速的成长。一方面,阅读优秀开源项目的源码和文档,可以不断的获取这一领域最前沿的思想,更新自己的知识库。而使用这些优秀的开源项目,能够让我们站到巨人的肩膀上,更容易达成项目的目标;另一方面,当我们向开源项目提交代码时,既能够通过回馈开源社区获得一定的成就感,也能够通过与社区开发者进行代码层级的交流,来提升自己的代码能力。

从公司的角度来看,无论是主导一个开源项目,还是使用一个开源项目,都能受到启发、从中收益。开源社区可以快速的帮助一个项目发展成熟,加速功能迭代,提升自己的产品功能与稳定性。

开源项目对于行业的进步也起到了非常大的作用。一方面,行业内的公司使用开源项目,可以极大的避免重复建设,将更多的精力投入到新思想、新方法的尝试与开发中;另一方面,通过与开源社区同学进行交流,会碰撞出更大的思维火花,更多且更快的产生解决问题的办法与思路,这些新的方法,经过公司内部的检验,又会回馈给开源社区,从而形成一个正反馈,不断的加速行业的进步。

Q 3:如何成长为 Committer,可以分享下经验吗

我参与到 Apache Doris 社区的时间并不算长。最初也是因为工作需要开始接触 Doris。在使用过程中,逐渐发现了一些用起来不太顺手的地方,便开始给 Doris 提交 PR,一开始也只是进行一些小修小补;后来,我们发现 Doris 旧的查询优化器代码结构不是很合理,既不容易阅读理解,也难以修改。当我们在增加期望的功能时,就遇到了比较多的困难,也由此有了为 Doris 重新写一个全新查询优化器的想法,非常巧的是,Doris 社区当时也创建了一个新查询优化器的 SIG,并和大家一起交流、设计并实现新的查询优化器。

在参与 Doris 的开发建设中,我积累了一些参与开源的经验,在此分享给大家。如果想深入到一个开源项目中,或者成为开源项目的 Committer 甚至是 PMC ,我认为在最初接触时,一定要有学习了解该项目的动力,动力来源也许是自驱或者工作需要;在了解该项目后,则需要持续的使用,并及时解决在使用中遇到的问题,不吝啬的将代码贡献到社区,在这个过程中,你会对项目有越来越深入的了解。对于遇到的问题,一定要在社区中发出自己的声音,这非常的重要,这可以让社区及时感知到这个问题,并且需要持续的和社区保持交流,增加对问题的理解;最后来借助社区的力量来一起解决这些问题,回馈社区。

除自身之外,我认为社区氛围也是非常重要的因素之一, Apache Doris 开源社区是我遇到的最活跃社区之一,“事事有回应,件件有着落”这句话用来形容 Apache Doris 社区再合适不过了。

Q 4:分享你在 Doris 社区遇到最有趣、有意义的事情吧

在我印象中,最深刻的是和优化器 SIG 的同学们一起做新优化器基础数据结构设计这件事,由于 SIG 的同学们在这方面都没有完整的从 0 到 1 的经验,这就需要大家一起探索最适合 Doris 新优化器的数据结构,我们经历了超过一个月的密集讨论,基础数据结构前后做了三版概念验证,最终找到了适合 Doris 的设计方案。在讨论的过程中,我深刻体会到了开源社区所带来的优势,SIG 内的同学来自不同的公司、拥有不同的背景知识,在之前项目开发中遇到过不同的问题。在设计的过程中,我们将问题分类整理,充分讨论,从而避免了很多弯路。有了良好的基础数据结构设计,Doris 的新优化器正在快速构建中,相信不久的将来就能和大家正式见面。

同时借此机会也想呼吁更多小伙伴一起加入新优化器的开发建设中来,贡献一份自己的力量。

Q 5:你认为 Doris 哪些做的比较好,哪些需要优化呢?

在 2022年10月初,基于 Apache Doris 内核打造的云原生实时数据库 SelectDB 发布了 ClickBench 的测试成绩, SelectDB 在 c6a.4xlarge, 500gb gp2 机型上排名第一,在所有机型的总榜上排名第二。值得一提的是,SelectDB 所有的性能优化点,都将毫无保留的回馈给 Doris 社区,这意味着 Doris 将具有极致的宽表性能表现。同时,在即将发布的 Doris 1.2 版本中,从 TPC-H 和 SSB 测试集上的性能测试表明,Doris 相较于之前的版本,在多表执行性能上也将有巨大的提升。

除此之外,我们在某些方面还有很大的优化空间,在 Doris1.0 发布之后,Doris 增加了非常多的功能,包括新的 Unique Key 表模型、全新的便于接入数据湖的外部数据源接口、半结构化数据类型等等,这些功能扩展了 Doris 的使用场景,使得更多的用户可以从 Doris 的高性能引擎中受益。但我想,我们在这些方面还是有更进一步的空间,有待于 Doris 社区同学一起来努力来实现。

在性能方面,我们还需要持续优化在复杂场景上的查询性能,尤其是在查询规划器的性能优化方面,以便应对未来更加复杂的用户场景。

在功能方面,我们将探索更多的可能性,向着流批一体,在离线一体等方向探索,用于满足用户在复杂场景中期望将基础设施化繁为简的强烈诉求。

Q 6:对于 Doris 社区未来的发展,有什么期望及建议?

随着 Doris 这半年多的时间持续的在多个维度持续发力,社区力量逐渐的强大起来,社区用户和开发者也越来越多,Contributor 数量和 Commit 数量屡创新高,这为 Doris 的持久的高质量发展提供了坚实的基础。

我对Doris社区的未来有两个期望:

第一个是希望 Doris 能够建立更完善的发展路线图。在功能实际开发前,能够在社区开展更大范围的讨论,让社区中的每个人对于 Doris 的发展能够做到心中有数,增强使用 Doris 的信心。

第二个是希望能够吸引到更多的国外的开发者。将国外在数据分析领域的诉求和发展方向带给 Doris,使得 Doris 成为一个更具国际化的开源项目。

Q 7最后,你想对广大的开发者说些什么?

通过参与开源社区的开发建设,不仅可以提升我们的代码能力,认识更多志同道合的小伙伴;更重要的是,通过对开源项目的持续贡献,留下一段美好而有意义的人生足迹。

最后,期待 Apache Doris 社区更多小伙伴加入到 Doris 的开发队伍中来,一起进行 Doris 的开发与建设,与 Doris 共同成长,为国产数据库走向世界贡献微薄而不可或缺的一份力量,让自己和 Doris 都拥有更加美好的未来。