携手高性能时序数据库 TDengine 共度「开源之夏」!

开源之夏(全称:开源软件供应链点亮计划——暑期 2022)是由中国科学院软件研究所与 OpenEuler 社区共同主办的一项面向高校学生的暑期在线活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展。

携手高性能时序数据库 TDengine 共度「开源之夏」! - TDengine Database 时序数据库

TDengine 社区已加入开源软件供应链点亮计划。学生可以自由选择项目,与社区导师沟通实现方案并撰写项目计划书。被选中的学生将在 TDengine 社区导师(资深、高水平的程序员前辈)亲自指导的机会,完成开发工作,并将成果贡献给社区。根据项目的难易程度和完成情况,参与并按要求完成项目的同学,除了能获得主办方提供的奖金和证书奖励外,还能领取 TDengine 官方定制纪念品一份。表现优秀的同学,可以成为社区 Contributor,还可以被推荐至 TDengine 研发团队实习或成为全职员工。

学生指南:https://summer-ospp.ac.cn/help/student/

TDengine 社区提供 4 个任务,列表如下:

项目 1 – TDengine 客户端代码深度优化

项目描述:TDengine Database 整体服务由 Server 和 Client 端组成。Client 端承担了读写请求的解析、拼装、序列化、分布式访问、Meta 缓存等重要职责。在高并发高吞吐的访问过程中,这些功能的实现方式,将会决定 TDengine 的性能效果。因此本次项目将会通过探学习 TDengine Client 的代码结构,通过 BPF 等工具,引入 Tracing,对每个核心技术点进行 Performance Analysis/Research/Coding/Testing,落地高性能的实现方式,从而提升 Client 的整体性能。你将会有机会优化整个时序物联网行业的能效。

项目难度:Advanced

项目主导师:陈伟灿

项目产出要求:

  1. client 代码分析报告,包含代码架构图,功能清单,调用链关系
  2. 目标优化功能的性能分析报告
  3. 主流技术点的调研、分析与对比报告
  4. 编码设计与编码实现
  5. 测试方案、测试用例、对比测试报告
  6. 项目总结报告

项目技术要求:

  1. 熟悉各类排序算法、字符串匹配、正则表达式
  2. 熟悉队列、哈希、堆、栈等数据结构
  3. 熟悉 Protobuf 等各类序列化技术
  4. 熟悉 Linux 内存分配原理及机制
  5. 熟悉同步/异步、阻塞/非阻塞等网络概念,熟悉 socket 编程
  6. 掌握至少1种 C 的 unit test 方法

项目 2 – TDengine 流计算特性测试工具开发

项目描述:随着数据时效性对企业的精细化运营越来越重要,“实时即未来”、“实时数仓”成为了近几年炙手可热的词。流计算领域也在这几年发生了巨大的变化, 但在这个领域中,还没有一个行业标准的基准测试, 本项目要求开发一个测试工具,能够对 TDengine 流计算特性的所有功能,在各种使用场景中进行测试,保证 TDengine 流计算特性的正确性和健壮性, 测试范围包括并不限于功能、性能、稳定性测试, 同时要保证能够采集到相应的吞吐量、延迟、CPU 和内存等信息。

项目难度:Advanced 

项目主导师:贾靖斌

项目产出要求:

  1. 测试工具的设计文档、代码和使用手册;
  2. 基础场景的测试用例;
  3. 交付物全部提交到 TDengine 的 GitHub 仓库。

项目技术要求:

  1. 测试工具能够模拟生产者,产生数据流,写入 TDengine;
  2. 测试工具能够模拟消费者,从 TDengine 进行消费;
  3. 测试工具支持通过命令行参数,或配置脚本,获取生产者的行为;
  4. 测试工具支持通过命令行参数,或配置脚本,获取消费者的行为;
  5. 支持测试脚本控制该测试工具,对 TDengine 流计算特性的所有功能进行测试;

项目 3 – TDengine Visual Studio Code 插件开发

项目描述:完成 TDengine 的 Visual Studio Code 插件开发,使用此插件中可以进行 TDengine Database 连接、查询、插入等常规操作。

项目难度:Advanced

项目主导师:霍立波

合作导师:桑树多

项目产出要求:

  1. 可以正常使用的 Visual Studio Code 插件,通过此插件实现 TDengine 数据管理,并将源码提交至 TDengine 的 GitHub 仓库。
  2. 完整的软件设计文档及功能列表。
  3. 完整的部署文档及使用说明。

项目技术要求:

  1. 编程可以选择:TypeScript/JavaScript 进行开发。
  2. 基本功能要求:
    • 通过界面配置数据库连接参数。
    • 导航栏可以查看数据库、数据表列表。
    • 双击数据表可以在主界面显示数据表内容,并可以对列进行排序。
    • 主界面可以执行 SQL 语句并显示结果。
  3. 可选功能要求:
    • 实现导入/导出,支持 SQL、CSV 等多种格式。
    • 主界面可以添加数据。

项目 4 – 时序数据集建模

项目描述:选择一个具有代表性的开放时序数据集(如天气、股票、天文、地震),编写从数据源定期同步数据的脚本,进行数据建模,编写典型的查询语句、通过可视化软件(如 Grafana)进行展示。

项目难度:Basic

项目主导师:Pan Yang

项目产出要求:

  1. 项目设计文档,包括产品设计和技术方案设计
  2. 开放数据集同步脚本
  3. 建模文档、创建数据库表的 SQL 文件
  4. 典型的查询 SQL 文件
  5. 对接数据可视化软件,可以进行数据的可视化展示

项目技术要求:

  1. TDengine 数据库建模和查询的基础知识
  2. 建议选择 Go、Python 语言
  3. 选择一个流行的开源可视化软件,如 Grafana

注册报名

报名链接:https://summer-ospp.ac.cn/#/org/orgdetail/42920502-6476-4380-9ed0-ff7b90ad9f03/

报名咨询:

携手高性能时序数据库 TDengine 共度「开源之夏」! - TDengine Database 时序数据库