了解社区
TiDB 社区是由 TiDB 生态中的开发者、用户、合作伙伴一起建立的分享、学习平台。
用户社区(以下相关数据均为 2022.8.19 更新)
TiDB 线上社区汇聚了 22593 位 TiDB 资深用户,所有成员都可以在这里自由发声,互相协助解决问题。社区线上论坛 asktug.com 已经积累了 16654 个问题帖,95% 的问题都得到了解决;TiDB 社区用户也非常乐于分享 TiDB 的实践经验,社区专栏已经沉淀了 732 篇优质技术文章及精彩演讲。
除了以代码的方式参与贡献外,TiDB 社区也欢迎来自用户角度的各种贡献,这里仅简单提及,不做重点阐述。
贡献者社区(以下相关数据均为 2022.8.19 更新)
-
TiDB:目前 TiDB 项目在 GitHub 上已总计获得超过 32.1k 颗星,累计超过 1457 位开源贡献者,其中来自 PingCAP 以外的社区贡献者(Contributor)占比 75% 以上,吸引了腾讯云、韩国三星研究院等企业和机构的优秀开发者共同参与。
-
目前 TiKV 项目在 GitHub 上已总计获得超过 11.6k 颗星,累计超过 620 位开源贡献者,主要来自 PingCAP、知乎、京东云、一点资讯等企业,来自 PingCAP 以外的社区贡献者(Contributor)占比 65% 以上。
治理
如下图所示,TiDB 贡献者社区的治理结构如下:
-
Technical Oversight Committee (TOC) 是各公司和组织之间协调和信息共享的主要桥梁和渠道。它是解决当前社区和合作项目中资源调动、技术研究和发展方向等问题的协调中心。
-
Teams 是持久的开放性小组,专注于 TiDB 项目的某一模块。每个 team 都有自己的 reviewer、Committer 和 Maintainer,并负责一个或多个代码库。每个 team 的 Maintainer 拥有该 team 的决策权。目前 TiDB 一共有 9 个 team,详情见 Github。
交流
- Forum: https://internals.tidb.io
- Slack: https://pingcap.com/tidbslack
如何开始贡献?
我们为 Contributor 准备了一份 Development Guide,旨在帮助贡献者从新手成长为 TiDB 专家,熟悉 TiDB 的设计和实施,从而能够在现实世界中流畅地使用它,并进行深入开发工作。主要包含以下内容:
-
Chapter 1 . 开始准备工作:假设你是一个 TiDB 新手,本章节将教你安装开发环境,构建并连接到 tidb-server。
-
Chapter 2 . 为 TiDB 做贡献:帮助你快速参与社区,描述了贡献类型以及如何快速实现你的 first contribution。
-
Chapter 3 . 深入了解 TiDB:帮助你熟悉分布式数据库的基本概念,在脑海中建⽴知识库,包括但不限于分布式数据库中的 SQL 语⾔、关键组件、算法。已经熟悉这些内容的同学可以跳过本节。
-
Chapter 4 . 项目管理:帮助你参与团队⼯作,主导功能开发,管理 TiDB 社区中的项⽬。
Contributor 学习资料
此外你可以可以通过 TiDB 核心研发产出的文章学习更多技术点,比如:
-
高性能 TiDB 教程:https://university.pingcap.com/courses/High-Performance-TiDB
-
Talent Plan 教程:https://university.pingcap.com/talent-plan/
如何成为 TiFlash Contributor?
TiFlash 源码阅读活动
今年 4 月,TiFlash 刚刚开源,社区组织了九期 TiFlash 源码阅读活动,带你深入浅出认识 TiFlash 源码:
-
TiFlash 源码阅读(一) TiFlash 存储层概览:TiFlash 是 TiDB 的分析引擎,是 TiDB HTAP 形态的关键组件。TiFlash 源码阅读系列文章将从源码层面介绍 TiFlash 的内部实现。本文为系列文章的第一篇,将对 TiDB HTAP 的整体形态进行介绍,并详细解析存储层 DeltaTree 引擎进行优化的设计思路以及其子模块。
- 活动视频回放 :TiFlash 存储引擎的设计思路_哔哩哔哩_bilibili
-
TiFlash 源码解读(二)计算层 Overview:本文将对 TiFlash 计算层进行介绍,包括架构的演进,DAGRequest 协议、dag request 在 TiFlash 侧的处理流程以及 MPP 基本原理。
-
TiFlash 源码阅读(三) DeltaTree 存储引擎设计及实现分析 - Part 1:从本文开始,我们将对 TiFlash 各个组件的设计及实现进行详细分析。**
-
TiFlash 源码解读(四) | TiFlash DDL 模块设计及实现分析:本文将介绍 TiFlash DDL 模块的相关内容,包括 DDL 模块的设计思路, 以及具体代码实现的方式。
-
TiFlash 源码阅读(六) DeltaTree Index 的设计和实现分析: 在前面的源码分析中对 TiFlash 存储层的读写流程进行了完整的梳理,本文将在这两篇文章的基础上对 DeltaTree Index 在读取时的作用以及如何维护 DeltaTree Index 进行讲解。
-
TiFlash 源码阅读(七)TiFlash Proxy 模块:本文主要介绍的是 TiFlash Proxy 模块的实现,即 TiFlash 副本是如何被添加以及获取数据的。
-
TiFlash 源码阅读(八)TiFlash 表达式的实现与设计:本文主要介绍的是 TiFlash 表达式的实现与设计,系统性地介绍了 TiFlash 表达式的基本概念,包括表达式体系,标量函数、聚合函数等,以期望读者能够对 TiFlash 的表达式计算有一个初步的了解。
-
TiFlash 源码阅读(九)TiFlash 中常用算子的设计与实现:本文主要介绍了数据库系统中常用的算子 Join 和 Aggregation 在 TiFlash 中的执行情况,包括查询计划生成、编译阶段与执行阶段,以期望读者对 TiFlash 的算子有初步的了解。
另外,我们也计划发布一些 TiFlash 的简单 issue,方便更多有参与意愿的贡献者参与进来,近期会通过文章的形式发布出来,欢迎关注。
Contributor 访谈
最后,你还可以通过其他优秀 Contributor 的经验中学习,以下都是关于他们的故事: