Google 编程之夏(GSOC)

GSoC 项目构想(2025)

师成师成· 更新于 2026-09-28· 阅读 17 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

GSoC 项目创意(2025)

简介

欢迎查阅 Apache DataFusion Google Summer of Code(GSoC)2025 项目创意列表。你可以在下方找到各项目的相关信息。申请指南请参阅本页面。

项目

实现 DataFusion 性能的持续监控

  • 描述与预期成果: DataFusion 缺乏对性能随时间演变情况的持续监控——目前我们只是以较为手工的方式进行这项工作。尽管性能长期以来一直是我们最重要的优先事项之一,但我们尚未构建持续监控系统。该关联 issue 汇总了此前为迈向此类系统所付出的全部努力,但一个真正可运行的系统仍需在此基础之上构建。成功完成本项目的学生将获得构建端到端监控系统的经验,包括与 GitHub 集成、在某种云基础设施上调度和运行基准测试,以及构建一个功能多样的 Web UI 来展示结果。本项目的成果将长期惠及 Apache DataFusion,助力其不断追求更高的性能。
  • 类别: 工具
  • 难度: 中等
  • 可能的导师和/或帮手: alamb 和 mertak-synnada
  • 技能: DevOps、云计算、Web 开发、集成
  • 预计项目规模: 175 至 350 小时*

支持关联子查询

  • 描述与预期成果: 相关子查询是一项重要的 SQL 特性,它能让部分用户不必考虑“连接(join)”,就能更直观地表达业务逻辑。尽管 DataFusion 已具备不错的连接支持,但尚未完全支持相关子查询。链接中的史诗级议题(epic)以小颗粒度的形式列出了实现完整支持所需的各个步骤。对于对数据系统和数据库内部机制感兴趣的同学而言,该项目是运用和/或提升计算机科学知识的良机。为一个被广泛使用的基础查询引擎添加此类特性的经历,也将成为开启数据库与数据系统职业生涯的良好起点。
  • 类别: 核心(Core)
  • 难度: 高级
  • 可能的导师和/或帮助者: jayzhan-synnada 和 xudong963
  • 技能要求: 数据库、算法、数据结构、测试技术
  • 预期项目规模: 350 小时

改进 DataFusion 的开发者体验(例如 1 和 2)

  • 描述与预期成果: 性能、可扩展性和可定制性是 DataFusion 的强项,但在用户友好性和易调试性方面还有许多工作要做。本项目旨在通过改进查询计划的终端可视化、提升新引入的诊断框架的“部署”程度,在这些方面取得进展。这是一个可能产生高影响力、成果可见度高的项目,同时能够降低新用户的入门门槛。
  • 类别: 开发者体验(DX)
  • 难度: 中等
  • 可能的导师和/或帮助者: eliaperantoni 和 mkarbo
  • 技能要求: 软件工程、终端可视化
  • 预期项目规模: 175 至 350 小时*

健壮的 WASM 支持

  • 描述与预期成果: 只要稍加注意,DataFusion 目前已经可以编译到 WASM。但整个过程有些棘手且脆弱。健壮的 WASM 支持能够提升 DataFusion 的可嵌入性,并开启许多实际应用场景。本项目理想的成果之一,是在 DataFusion 主页上新增一个在线演示子页面。
  • 类别: 构建(Build)
  • 难度: 中等
  • 可能的导师和/或帮助者: alamb 和 waynexia
  • 技能要求: WASM、进阶 Rust、Web 开发、软件工程
  • 预期项目规模: 175 至 350 小时*

高性能聚合

  • 描述与预期成果: 聚合是查询引擎中最基本的操作之一。许多用例的实际性能,以及许多知名基准测试(例如 ClickBench)的结果,在很大程度上都取决于聚合的性能。DataFusion 社区一直在致力于提升聚合性能,但仍有工作要做。参与本项目的学生将有机会磨练自己在高性能、偏底层编码、性能度量细节、数据结构等方面的技能。
  • 类别: 核心(Core)
  • 难度: 高级
  • 可能的导师和/或协助者: jayzhan-synnada 和 Rachelint
  • 技能要求: 算法、数据结构、高级 Rust、数据库、基准测试技术
  • 预计项目规模: 350 小时

改进 Python 绑定

  • 描述与预期成果: DataFusion 提供了 Python 绑定,使用户能够使用 Python 构建数据系统。然而,目前的 Python 绑定仍然相对底层,并未像 Pandas 和 Polars 等面向最终用户的库那样暴露全部 API。本项目旨在改进 DataFusion 的 Python 绑定,在内置 API 和功能方面使其更接近此类库。
  • 类别: Python 绑定
  • 难度: 中等
  • 可能的导师和/或协助者: timsaucer
  • 技能要求: API、外部函数接口(FFI)、DataFrame 库
  • 预计项目规模: 175 至 350 小时*

优化 DataFusion 二进制文件体积

  • 描述与预期成果: DataFusion 是一个功能丰富的基础库。尽管我们尽量避免引入过多依赖,并在代码库内部实现了许多底层功能,但项目迭代迅速,久而久之依赖仍然不断累积。这会逐渐增大 DataFusion 的二进制体积,从而降低其可移植性和可嵌入性。本项目需要借助编译器工具对代码库进行研究,弄清代码膨胀的来源,通过高效的自研实现来简化/减少依赖数量,并避免代码重复。
  • 类别: 核心/构建
  • 难度: 中等
  • 可能的导师和/或协助者: comphead 和 alamb
  • 技能要求: 软件工程、重构、依赖管理、编译器
  • 预期项目规模: 175 至 350 小时*

符合使用习惯的 SQL 特性

  • 描述与预期成果: DuckDB 拥有许多创新特性,能显著提升 SQL 的使用体验。尽管其中一些特性 DataFusion 已经实现,但还有许多我们可以实现(并从中汲取灵感)的特性。此页面 对这类特性做了很好的汇总。每一项这样的特性都可以作为一个小而可行的里程碑,构成一个精彩的 GSoC 项目,并在广泛范围内提升用户体验、产生面向用户的影响。项目将从调研已实现的特性、缺失的特性开始,并以一份优先级排序的建议/实施计划作为开端。
  • 类别: SQL 前端
  • 难度: 中等
  • 可能的导师和/或协助者: berkaysynnada
  • 技能要求: SQL、查询规划、解析、软件工程
  • 预期项目规模: 350 小时

高级区间分析

  • 描述与成果: DataFusion 实现了区间算术,并利用它来进行范围估算,从而支持数据裁剪、优化和统计等应用场景。然而,当前实现仅在正向求值时才高效;即在给定输入范围(各列的范围)的情况下计算表达式的输出范围。当使用同一张图传播约束时,当前方法需要多次自底向上和自顶向下的遍历才能充分收紧列的取值范围。本项目旨在通过采用更优的算法来解决这一缺陷。请注意,这是一个面向对计算方法、表达式图和约束求解器有深厚兴趣的学生的非常高级的项目。
  • 类别: 核心
  • 难度: 高级
  • 可能的导师和/或帮助者: ozankabak 和 berkaysynnada
  • 技能: 算法、数据结构、应用数学、软件工程
  • 预计项目规模: 350 小时

兼容 Spark 的函数 Crate

  • 描述与成果: 总体而言,DataFusion 致力于在函数和行为方面与 PostgreSQL 保持兼容。然而,许多用户(以及下游项目,例如 DataFusion Comet)希望能够兼容 Apache Spark。本项目旨在将兼容 Spark 的函数收集到一个独立的 crate 中,以帮助此类用户和/或项目。该项目将是一次实践:设计合适的 API、说明如何使用它们,然后向全世界介绍它们(例如创建一个列出这些函数的兼容性跟踪页面、撰写博客文章等)。
  • 类别: 扩展
  • 难度: 中级
  • 可能的导师和/或帮助者: alamb 和 andygrove
  • 技能: SQL、Spark、软件工程
  • 预计项目规模: 175 至 350 小时*

基于 Rust 的 SQL 模糊测试框架

  • 描述与预期成果: 模糊测试(fuzz testing)是我们经常在 DataFusion 中使用的一项非常重要的技术。拥有 SQL 层面的模糊测试能力,可以让我们以端到端的方式对 DataFusion 进行全面的实战检验。我们最初的模糊测试框架是基于 Java 实现的,但现在是时候迁移到原生 Rust 的解决方案了。这将简化整体实现(无需依赖 JDBC 之类的技术),使我们能够实现更先进的查询生成算法,并随着时间的推移吸引更多贡献者。这个项目很好地融合了软件工程、算法与测试技术(即模糊测试技术)。
  • 类别: 扩展(Extensions)
  • 难度: 高级
  • 可能的导师和/或协助者: 2010YOUY01
  • 技能要求: SQL、测试技术、高级 Rust、软件工程
  • 预计项目规模: 175 至 350 小时*

*现有素材足以支撑一个 350 小时的项目,同时其拆分粒度也足以构成一个 175 小时的项目。

联系我们

你可以加入我们的邮件列表和 Discord,进行自我介绍并提出问题。

评论

登录后参与评论

正在加载评论…