本期导师专访来自 NebulaGraph 的导师秋梵。她指导的项目是基于 NgBatis,实现从实体对象出发完成数据直查https://summer-ospp.ac.cn/org/prodetail/241190102
# 自我介绍
OSPP:请您介绍一下自己及您所在的 NebulaGraph 社区。秋梵:我是秋梵,一名靠兴趣驱动的开发者,目前对知识图谱、图数据库等图相关技术很感兴趣并在持续学习和探索中。图数据库是个很有意思的领域,无论是在大数据治理、血缘等方面的应用还是前不久 ISO-GQL 标准的发放,以及当前火热的 GraphRAG 技术,都在推动其快速发展。我所在的 NebulaGraph 就是一个开源图数据库社区,社区的小伙伴们都一直饱含热情的走在前沿推动图生态发展,不断探索创新,互相交流碰撞。我也深受感染,与大家一起在此交流成长。NebulaGraph 是一款开源的分布式图数据库,它能够处理具有千亿个顶点和万亿条边的超大规模数据集,并且提供毫秒级查询延时。NebulaGraph 自 2019 年开源以来,GitHub star 超 10k,已经吸引了大量的社区成员和代码贡献者,被广泛应用于社交网络、推荐系统、知识图谱、金融风控等领域。
https://www.nebula-graph.com.cn/
OSPP:据了解,您的经历颇为有趣,可以分享一下您是如何跨专业成为程序员进而走向开源的吗?
秋梵:就像我开头介绍的那样,一句话来形容自己的话就是靠兴趣驱动的开发者。我的本科专业并不是计算机相关专业,但很幸运在大三的时候觉醒了自己的编程爱好,之后便一发不可收拾,毕业之后直接成为了一名程序员开始了我的开发之旅。但也可能也是因为不是科班出身所以一开始的能接触到的资源比较少,很多时候都是自己跟自己玩,包括开源。与 NebulaGraph 相遇是在去年的 11 月,起因是在一个机缘巧合之下遇到了社区的老玩家大叶老师,他带我认识了 NebulaGraph 并给我展示了一个很不一样的开源世界,认识了图数据库这个很有意思的领域,在这儿与大家一起交流各种心得体会,参加线下技术论坛,我的热情也被激发,就这样顺理成章的成为了一名社区成员。所以与其他的十分专业十分厉害的老师不同,我的路子比较野(笑)。
# 参与开源和开源之夏
OSPP:请介绍一下您在开源之夏 2024 中指导的项目。秋梵:我指导的项目是基于已有的 NgBatis 开源框架,用另一种方式来实现数据查询等操作。也就是对于图数据的操作从原来的利用编写接口的方式,扩展出直接从实体对象出发来完成对图数据的增删改查,让框架在使用上体现出图的特点,用更贴合图的思维方式来操作数据。NgBatis 是一个基于 SpringBoot 开发的针对 NebulaGraph 的图数据库关系映射框架,所以这个项目其实不算很难,对于需要掌握的技术栈来说,只需要掌握 SpringBoot 的基本原理和 NebulaGraph 的基本操作,以及对 NgBatis 的使用有所了解,就能做这个项目的开发。当然最重要的还是实现思路,这就需要学生能够正确的理解项目的意图和其中的思想了。OSPP:您设置该项目的考虑是什么?项目产出有什么实际意义?该项目成果将为 NebulaGraph 带来什么?秋梵:当前的 NgBatis 还是太“ORM”了,我们希望它更像“OGM”。作为一个图数据库关系映射框架,当前所使用的开发思维方式却还是操作关系型数据库的思维,在使用上更像操作一张“表”而不是一张“图”,这总感觉存在着那么一丝丝不协调感。图数据库有自己的优势和特点,特别实在关系的表达上。那么既然 NgBatis 是针对 NebulaGraph 的图数据库的关系映射框架,我们希望它也能体现出图的特点和优势。我们想消除那么一丝丝的不协调感,让 NgBatis 在开发和使用上更丝滑,更贴近图的操作。所以就有了这个项目。OSPP:开源之夏 2024 结项在即,项目开发是否顺利进入尾声?期间有什么挑战经历吗?秋梵:目前项目的发展还是比较顺利的,学生很聪明也很棒,在开发过程中会陆陆续续的提出自己的见解,以及一些开发或是思路上的问题,我也会针对这些问题与学生保持着一定频次的交流讨论,学生当下也已经提交了相关 PR。都说“万事开头难”,确实在做项目的初始阶段我们花了比较多的时间去理解整个工程代码,和对项目的开发思路上。我觉得对于这个项目来说,难点主要是两点,一个是对 NgBatis 内部工作流程的理解程度,另一个是在项目实现思路,只要打通了这两点,写代码其实就不算是难事了。所以在前期花了比较长的时间来调试整个工程,理解实现思路,但我觉得在这个过程中学生的各方面能力都有得到提升,所以时间花的并不亏。OSPP:你认为学生开发者应该如何更好融入社区的开发工作?秋梵:一定要与大家多沟通多交流,我认为这是很重要一点,学生在做项目期间我也有着重提过。有什么想法或是问题不妨大胆的提出来,与大家一起交流,不仅会让自己的疑问及时得到解答,还是个与大家建立起关系的良好开端。不要怕说错或者提出的问题太简单,因为没有人会介意这些,社区里的小伙伴们只会热心的解答和参与讨论。这种“参与感”很重要,在与大家的来回对话中互相熟悉互相了解,一起共同解决某个问题,不知不觉中就会建立起好的关系,是融入社区很好的方式。以及之后积极参与社区的活动,帮助解决社区中小伙伴们提出的问题,对自己感兴趣的项目进行 PR 等等,在这种积极沟通的基础上很自然的水到渠成了。# 期望与寄语
秋梵:我觉得开源是一件很酷的事情。一群拥有相同兴趣爱好的人组在一起自由学习和交流,互相探讨互相碰撞,产生各种各样不同的想法、思路和设计来解决问题,形成一个互相促进共同成长的环境,并以此推动技术的发展。我想起《黑客与画家》中说到的 hacker 精神,就是分享、开放、民主、计算机的自由使用和进步,而 hacker 的行为特点就是好玩、高智商与探索精神。这很明显,开源活动就一件很 hacker 很酷的事情!OSPP:您认为开源之夏这种面向高校学生的开源活动对社区、开发者以及学生的专业和职业发展有什么积极影响?
秋梵:对于学生来说参加开源之夏的好处太多啦,必须要努力争取参加的机会。这是一个很难得可以与工作了很多年的成熟的开发者对话的机会,可以学到很多课堂上学不到的知识和经验,我相信光是与社区开发者们聊聊天就可以得到很多不只是开发方面的宝贵的认知和启发。(因为我就是这么做的哈哈)在当初学生申请项目的阶段,就有很多的学生提前与我进行了沟通交流,我也很高兴能和学生们聊我的想法和经验,经常会针对某个问题扩展开去聊,希望能给到学生们不只是开发方面的帮助。作为导师来说能认识到各个高校优秀的学生们也会给予到自己积极的动力,与学生们年轻活跃的思维碰撞,有的时候也会带来不一样的灵感,这是一件很妙的事情。秋梵:我认为首先是要选择自己感兴趣的领域。兴趣是最好的老师,这样在面对未知的时候会始终保持好奇心,在遇到困难的时候不会失去动力,保持热情的不断去探索和学习。其次就是要选择贴合自己技术栈的项目,可以有难度但不能难度跨越太大,要根据自己的实际情况来选择适合的项目。最后我觉得,可以去选择对自己来说具有一定挑战性的项目。既然参与了活动就要让自己在其中有所收获,尽可能的提升自身能力,那在项目的选择上不妨大胆一些,去选择那些困难指数较高但在自己承受范围内的项目,挑战自我,我相信会很有收获。开源是一场技术的盛宴,努力的在这场盛宴中做出美味的佳肴吧!专栏编辑:HungryFish
校对:校大山、秋梵
制图:GoodWhite