官方提供平台,导师倾情陪练,助力学生玩转开源|Greptime 参与「开源之夏」的第二年正式收官!
「开源之夏」是由中科院软件所主导,“开源软件供应链点亮计划”支持的夏天专属项目(虽然现在已经冬天了🥶)。作为一个为高校学生量身定制的开源实践平台,这项活动不仅能激发年轻开发者对开源技术的热情,还可以为开源社区注入新鲜血液。通过本次项目,参与的同学可以实现从书本到项目的代码真实体验,尝试开源软件的维护。
GreptimeDB,作为一款云原生、分布式的开源时序数据库,秉承技术创新与开源回馈的理念,积极参与了本次活动。我们以回馈社区为使命,希望通过这次合作,在传递专业知识的同时,为未来的开源技术星空点亮更多可能。
GreptimeDB Repo:
Greptime 官网:
项目回顾
今年的开源之夏,GreptimeDB 精选了三个富有技术挑战和实践意义的项目,期待与同学们在开源的技术世界里碰撞出火花💥。
感谢开源之夏活动方,参与项目的同学和作出技术支持的各位导师,从夏天开始,到上月深秋,三个项目已经圆满结束。
项目一:为 GreptimeDB 添加 JSON 类型支持
JSON 类型的引入让数据库更灵活,特别是在处理半结构化数据时为开发者提供了极大的便利。学生宇晗在导师 Weny 的指导下,不仅实现了 JSON 类型支持,还深入探讨了底层实现的优化问题。
成果亮点:
实现了 JSONB 格式的高效支持,为开发者提供更强大的数据存储和处理能力。
相关 Issue:
相关 Pr:
学生总结:
在项目初期,我认为添加 JSON 类型与去年的 Interval/Duration 类型实现相似,因此将重点放在选择 JSON 的底层表示(如 JSONB 或 String)上,并通过 benchmark 进行评估。最初的 variant 提案被驳回后,我们转而尝试实现 JSONB。在尝试加入 JSON 类型时,我意识到 JSON 和 Interval/Duration 类型的不同之处在于后者已经存在于 Datafusion 的类型系统中,而前者没有,因此需要修改的地方相对更多、更杂乱。
特别感谢 Weny 老师的耐心指导,最终成功在 GreptimeDB 中加入了 JSON 类型。总之很开心能参加这次 OSPP 中 GreptimeDB 的项目,让我学习到了很多数据库系统相关的知识。
导师评价:
宇晗同学在项目前期积极进行技术方案调研,并在中后期主动沟通实现细节、积极推动了代码的合并,展现了良好的自驱力和执行力。同时提交的代码质量优秀,结构清晰,单元测试和集成测试覆盖充分,保障了项目的高质量交付。最终顺利完成了既定目标。在面对复杂问题时,能主动沟通细节,逐步解决问题,体现了良好的学习能力和出色的工程能力。相信在今后的项目中,随着经验的积累,宇晗同学将能够更加自信地应对复杂问题。
项目二:面向嵌入式环境的资源限制框架
在资源有限的边缘环境中,确保数据库进程的高效运行是一项关键挑战。学生 ActivePeter 针对该需求设计了一个类似 cgroup 的资源限制框架。
成果亮点:
实现了动态 CPU 限流机制,大幅提高了系统稳定性。
相关 Issue:
相关 Pr:
学生总结:
为了在资源受限的环境下支持 GreptimeDB 及其环境的运行,我开发了面向嵌入式环境的 CPU 资源限制框架,确保系统稳定性和可靠性。
项目采用 Rust 语言,通过对 Rust Future 进行封装,在每次 poll 操作前增加限流判断。这样可以动态调整 CPU 配额和优先级,确保高负载下系统性能稳定。
测试结果显示,该框架显著降低了 CPU 使用率,提高了资源利用率。项目提交后,我们在车端进行测试,系统按照预期产生了 CPU 资源约束的效果。
开源不仅促进了技术分享,还培养了团队合作精神。通过参与开源项目,贡献了自己的力量,并从其他贡献者那里学到了很多宝贵的知识和经验。
未来,我计划引入 PID 闭环控制,针对不同工作负载进行参数适应性处理,进一步优化控制精度和负载适应能力。
最后感谢黄磊导师的悉心指导和团队成员的认真 review,也感谢开源社区中的每一位贡献者。希望未来能继续与大家一起,为开源事业贡献更多力量。
导师评价:
学生 ActivePeter 快速理解了项目的功能需求并投入开发,为 GreptimeDB 即限流运行时框架,用于控制整体 CPU 资源占用。在着手设计这一功能时,他深入研究了 tokio 异步运行时的基本原理,并且详尽测试了不同方案在不同的工作负载下的表型并给出了分析。在最后开发的过程中,他也及时快速的解决了 reviewer 提出的问题并积极主动推进 pr 的合并工作。
项目三:Postgres 系统表及 psql 查询支持
为了更好地融入 Postgres 生态,GreptimeDB 需要支持更多的 Postgres 系统表和 psql 工具的兼容性。学生 J0HN50N133 在项目期间实现了关键功能,同时优化了测试框架。
成果亮点:
完成了 psql 所需的核心功能支持,并增强了测试覆盖率。
相关 Issue:
相关 Pr:
学生总结: 在该项目中,我的目标是让 GreptimeDB 更好地融入 Postgres 生态,增强对 Postgres 系统表和 psql 工具的兼容性。为了实现这一目标,我完成了 psql 所需的核心功能支持,并优化了测试框架,提升了项目的测试覆盖率。
从理解项目需求开始,我积极与社区讨论并实现具体功能。在此过程中,我提交了多个 PR,涉及多个关键功能的实现,逐步完善了项目。项目的完成不仅帮助 GreptimeDB 支持了更多 Postgres 系统表,还加强了它的测试能力。在导师的指导下,我学到了很多关于数据库原理和工程实现的知识,也提高了自己的工程能力。我将继续关注并贡献 GreptimeDB 的其他部分,期待将来能做出更多贡献。
导师评价:
学生 J0HN50N133 快速理解了项目要求,开始设计并在社群当中讨论和具体实现。最终,GreptimeDB 支持了大部分基本的 psql 命令需要的功能,完成了最初项目设计的目标。
学生 J0HN50N133 在完成本项目期间还顺带完成了对项目测试框架的部分重构,增强了 GreptimeDB 的测试覆盖度,体现出他合格的工程能力和对数据库的工作原理的良好理解。
我还看到,学生 J0HN50N133 在项目结束后,继续参与贡献了 GreptimeDB 其他部分。期待 学生 J0HN50N133 未来的工作。
我们的成长与展望
2024 年 11 月 15 日,是 GreptimeDB 开源之夏两周年的日子。而今年也是 GreptimeDB 参与开源之夏的第二年,在这趟旅途中,我们的开源项目和同学们都经历了从零到一的成长,社区也被滋养了更多的活力与创造力,越来越好。
学生的成长:通过真实项目的锤炼,参与者不仅提升了技术能力,也在团队协作和问题解决方面获得了宝贵经验。
社区的壮大:活动为 GreptimeDB 注入了新鲜血液,新功能的实现也为用户带来了更多价值。
其他:通过和在读开发者的合作,我们更深刻地感受到开源的力量,也更加坚定了继续投入开源的决心。很多开源的同学都会在项目结束后,选择加入我们成为一名实习生,更深入地了解和实现 GreptimeDB 的技术原理。
共创开源的无限可能
GreptimeDB 将继续秉持开源初心,探索更多与社区合作的可能性。未来,我们期待见证更多新星在开源社区的绽放,也希望更多高校学生加入开源之夏,为开源事业贡献自己的热情与智慧。 感谢所有参与者——学生、导师、组织方以及社区成员,是你们让这个夏天充满了意义和精彩。开源的征程仍在继续,期待与更多技术热爱者共创未来!
关于 Greptime
Greptime 格睿科技专注于为可观测、物联网及车联网等领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前基于云原生的时序数据库 GreptimeDB 已经衍生出多款适合不同用户的解决方案,更多信息或 demo 展示请联系下方小助手(微信号:greptime)。
欢迎对开源感兴趣的朋友们参与贡献和讨论,从带有 good first issue 标签的 issue 开始你的开源之旅吧~期待在开源社群里遇见你!添加小助手微信即可加入“技术交流群”与志同道合的朋友们面对面交流哦~
Star us on GitHub Now: https://github.com/GreptimeTeam/greptimedb
Twitter: https://twitter.com/Greptime
Slack: https://greptime.com/slack
评论