自 19 年开源到现在,Nebula Graph 社区出现了一群有想法、有实力的用户,将他们的优雅留在 Nebula Graph 的代码中,他们是 nStar,是 Nebula 社区不可或缺的一部分。
—— Nebula 社区
今天我们的访谈嘉宾是一位女程序员,她是一名程序媛,用 C++ 编程,爱活跃在分布式存储领域。然而,她也爱戏曲,听看全能在点唱技能…这是她的故事,Nebula 第 90 位 Contributor 的故事。
她是姚靖怡
嘉宾名片
int main() {
// 姚靖怡
string name = "姚靖怡";
string gender = "female";
string githubId = "ystaticy";
string base = "Beijing";
string jobDescription = "快手数据平台-分布式存储组";
return 0;
}
自我介绍
清蒸(下简写:Q):靖怡,先来介绍下,让社区小伙伴更了解你吧。
姚靖怡(下简写:Y):大家好,我是姚靖怡,来自快手数据平台-数据架构部-分布式存储组,主要关注分布式存储领域,目前主要在做 Nebula Graph 图数据库在快手的稳定性和性能提升工作。欢迎感兴趣的同学加入我们一起建设图数据库平台(绿色通道开:yaojingyi@kuaishou.com)。
Q:如果让你自己给自己贴几个标签的,你会选择哪些 label 呢?
Y:先下个定语:一个好奇心强、爱好广泛的程序媛。日常除了敲代码,还爱好打羽毛球(程序员们:除了跑步,我们还可以羽毛球),以及我还是一个戏曲领域看听全能,没有唱功的跨界爱好者。
她不只是姚靖怡
技术、社区建设的看法
Q:稍微浏览了下靖怡的 GitHub 主页,发现你涉足了 RocksDB、HBase、和 Nebula Graph等项目,这 3 个数据库在你看来它们有什么吸引你的地方呢?
Y:平时在一直关注各种不同的分布式存储开源项目,比如分布式文件系统、基于 LSM Tree、B+ Tree 的 NOSQL 引擎、OLAP 引擎等。RocksDB、HBase、和 Nebula Graph 是和我接触比较多的 3 个引擎,首先 HBase 是我一直关注的非常经典的分布式NOSQL引擎,是我对分布式引擎深入了解的起点。HBase 在很多大厂有广泛的应用和活跃的社区支持,通过对 HBase 的学习与修改 HBase 代码,参与社区讨论、活动让我对分布式引擎与开源社区有了更全面的认识;Nebula Graph 是我工作中正在深入钻研的分布式图数据库引擎,底层的单机 KV 存储使用的是 RocksdDB,在开源的图数据库项目中,可扩展性和性能以及社区活跃度上都非常好;不同项目之间既有相通又有不同的地方,多进行对比让我可以以更丰富的视角来看问题、解决问题;
Q:上面 3 个数据库在快手的实际生产场景中有了很多实践,同时它们也都是开源项目。你在个人博客中也提及过「如何参与开源社区建设」,以开源项目 HBase 作为切入点的七点
- 有问题先看官网
- 多了解社区最新动态
- 订阅项目邮件列表
- 从多个角度考虑社区发展
- 提交的问题是否通用
- 是否实际解决了问题,给社区用户和维护者带来了收益
- 社区和内部的各种改进,都先经过讨论再进行,以防止很多工作需要重做
概述了一个开发者参与开源项目建设的“自我要求”,反过来,作为一个 Contributor,有哪些开源社区让你觉得体验极佳呢?
Y:开源可以让项目和 Contributor 共同成长,作为开源项目的参与者,积极参与社区的建设,主要还是希望自己提的 issue 能受到关注和讨论,实际问题能找到根因并得到最终解决。还有就是希望参与讨论可以获得更多的思路和建议,将引擎建设得更好,大家都在不断地提升开源社区的体验,比如:提交代码的流程,测试流程等管理更加规范、自动化、提示更加人性化,以及严格的代码 review;Nebula Graph 社区的同学也非常热心,平时会主动了解我们的使用情况,以及主动分享一些最新的社区动态,非常感谢他们;
Q:作为一个开发者,你是如何看待“开源”这个词的呢?在平时的工作中你会用到哪些开源产品呢?
Y:开源意味着可以有更多人参与项目讨论,可收集到更多需求和改进点;同时也有更多人参与项目的建设,提升引擎优化、版本迭代的速度,让项目变得更强大;同时也让更多的用户可以使用到质量更好效率更高的开源产品,是多方受益的;
Y:在大数据领域,除了本身在做的分布式图数据库,在工作中实际上 Kafka、Flink、Hive、Spark 或者列式存储等引擎都会接触到,大数据的开源产品需要互相“协作”,来给用户提供完善的产品级的服务;Nebula Graph 在与大数据的其他引擎的结合上,也有很多好的实践,比如:在和 Hive 离线数据交互时,可以用 nebula-exchange 将数据导入 Nebula Graph,也可以支持 Spark GraphX 图计算任务对 Nebula Graph 的查询,也有 Flink 的 Nebula Graph Connector 支持将 Flink 数据的写入 Nebula,提升了 Nebula Graph 的易用性;
Q:社区建设除了有社区的 Contributor 之外,项目的文档也是一个不可忽视的问题。靖怡也分享过操作类、代码 demo 文档编写原则,你是怎么看程序员写文档这件事呢?据我所知程序员有两大不爱:写注释和写文档。
Y:个人觉得“写注释、写文档和写文章”对自己还是有一定收益,虽然文字工作看上去与写代码无关,但是实际上处处相关;
Y:一些技术问题或者代码,看过、思考、形成方案文档、实际解决、总结/复盘、表达出来,每一步都有更深的收获。尤其面对一些复杂问题的时候,写文章/文档可以促进我以更系统地方式对事情进行总结,思考不同事情之间是否有共同点,更容易形成方法论;面对某一个问题的时候,将多个方案罗列出来进行同步对比,可以更好的进行方案的选择,减少很多无谓的“纠结”;同时因为落地成文字的过程,可以给我充分的时间反思每一步,方便查缺补漏;
Y:工作中或者参与开源社区的过程中,都是多人协作的模式,比如在开源社区进行问题的讨论,大家都是在 issue 或者 pr 页面下面进行 comment,因此更好的注释和文档能更快让小伙伴们理解自己的想法,更快推进问题的讨论和解决;
Y:可能在建设文档的过程中,会发现一开始比较痛苦,或者觉得占用了很多时间,面对这种问题,我自己主要会去思考如何用更简单的文字、语言来将复杂问题拆分或者解释清楚,如何让文字更易读,来提升文字类工作的效率;
技术成长
Q:作为一个多年敲代码的程序员,可以分享下你的一个技术进阶之路吗?
Y:最开始接触大数据是从数据开发开始的,后来开始使用HBase,然后从看HBase的源码变为修改源码、参与开源社区,现在主要在对Nebula Graph的图数据库引擎进行优化和改进;平时一直关注行业发展,多了解不同引擎的实现,技术方案的选择;同时多向优秀的同事和业界大牛们学习;
对话 Nebula
Q:其实,Nebula 官方一直想和大家聊聊彼此的想法,不知道靖怡这边有什么要对 Nebula 官方说的话呢?从社区和产品功能角度说下呢?
Y:非常感谢 Nebula 社区同学的关注,Nebula 社区一直对用户的需求很敏感,可以从每次版本的迭代上看到很多新特性,以及功能的改进,社区的同学们也非常热情;通过我们对用户需求的跟进来看,大家期待 Nebula 可以在存储和计算结合的场景上有更多介绍以及优秀的案例涌现出来。
以上为第 90 位 contributor 姚靖怡的专访,更多 Contributor 及社区活动见 Nebula Community 仓