作者介绍
初闻开源之夏 与 NgBatis 结缘 项目历程 收获与感悟

▌一、初闻开源之夏
起初,开源对我来说就像是一片神秘而广阔的未知领域。我听闻过它的大名,知晓其与代码、技术共享相关,却只略懂皮毛。仅知道开源意味着代码是公开的,大家可以共同参与改进,但对于开源的协作流程、社区运作机制以及如何从海量的开源项目中找到适合自己的方向,我完全没有清晰的概念。
后来,从网上大佬的分享中了解到可以从参加一些开源活动开始,比如 Google Summer of Code、中科院主办的开源之夏等。俗话说的好,机会是留给有准备的人的,于是我就早早地关注 2024 年开源之夏活动的时间线,从网上学习别人参加过的经验。
▌二、与 NgBatis 结缘
再加上跟导师的交流和看社区对梵老师专访的文章,就更加吸引我了,这个导师好优秀,好想跟她多交流一起做项目!


这是社区寄来的小周边,超喜欢~

学校宿舍晚上断电差点没有提交成功,好险~

某天得知中选之后,开心疯了!
▌三、项目历程
在开源之夏的实践中,我的项目围绕 NgBatis 框架的拓展 展开,具体目标是:
基于已有的 NgBatis 开源框架,用另一种方式来实现数据查询等操作。也就是对于图数据的操作从原来的利用编写接口的方式,扩展出直接从实体对象出发来完成对图数据的增删改查,让框架在使用上体现出图的特点,用更贴合图的思维方式来操作数据。(引自秋梵老师的导师专访)
项目初期,我深入研究了 NgBatis 的代码库及其与 NebulaGraph 图数据库的结合机制,重点学习了 nGQL 语句的用法。导师的技术博客很好地帮助我快速地理清了框架的整体架构和设计思路,同时,我花费两周时间调研了主流 OGM 框架的实现方式,为“实体直查”功能的设计奠定了坚实基础。
在明确初步实现思路后,我提出了一种方案:通过继承实体基类并结合自定义注解,实现动态拼接 nGQL 语句,从而高效操作图数据。在与导师多次线上会议讨论后,我针对框架的设计合理性、安全性和用户体验持续优化方案。例如,优化框架的抽象层次以提升易用性,增强日志输出的一致性以方便调试,以及改进安全机制以规避潜在的 nGQL 注入风险。在每次调整后,我都会将修改结果和新的想法与导师进一步探讨,逐步完善功能细节。
经过多轮迭代和细化,在导师的悉心指导和技术建议下,我完成了核心功能的设计和实现,解决了性能优化、安全性提升等关键问题。最终,“实体直查”功能成功集成到 NgBatis 主分支中,成为框架的一大亮点。
回顾整个开发历程,从需求分析到功能设计,再到代码优化和测试,我深刻体会到开源项目开发的严谨性和协作性。这段实践不仅让我收获了丰富的技术经验,更让我更加坚定了参与开源社区的信念。
目前该功能已在Ngbatis的最新版本中发布~
▌四、收获与感悟
从方案设计到细节优化,每一次讨论都让我获益匪浅,也让我认识到技术背后的严谨与深度。同时,也要感谢开源之夏的平台和 NebulaGraph 社区的支持与鼓励。正是社区的开放与包容,让我有机会深入其中并取得成长。
开源之夏寄来的结项小礼物~
✦
如果你觉得 NebulaGraph能帮到你,或者你只是单纯支持开源精神,可以在 GitHub 上为 NebulaGraph 点个 Star!每一个 Star 都是对我们的支持和鼓励✨
https://github.com/vesoft-inc/nebula
✦
✦

扫码添加
可爱星云
技术交流
资料分享








