
本文共 2184 字,大约阅读时间需要 7 分钟。
TiDB SQL Infra团队:连接KV存储与SQL层的桥梁
作为计算存储分离的数据库,TiDB 在 SQL 层面上有许多工作需要完成,比如上层查询的模式控制和下层KV数据的映射构建。TiDB SQL Infra团队的任务就是连接KV存储和SQL层之间的桥梁,这也是其命名的由来——“Infra”意味着基础架构,通过在线一致性模式变更,各TiDB Server都能自下而上地在Raw KV上构建成熟的结构化查询体系。
随着TiDB研发团队的壮大,SQL Infra团队逐渐从最初的少数人研发团队中划分出来,工作内容更加具体化和模块化。目前,团队聚焦于TiDB的模式信息处理和维护、DDL语法控制流程、SQL诊断数据集成,以及与Placement Driver(PD)和KV存储的数据交互。同时,团队还负责算子下推衍生的Coprocessor协处理逻辑。
我们的工作内容
TiDB元信息管理
元信息的管理对数据库的重要性不言而喻。SQL Infra团队主要负责TiDB的DDL操作。作为一个分布式数据库,TiDB支持Google F1的在线DDL变更,这在理论上简单,但在工程实现中有许多考量:
- DDL在线变更如何与分布式系统的Failover结合?
- 哪些状态需要持久化,哪些不需要?
- DDL在哪些阶段可以优化或跳过?哪些可以并行支持?
- 哪些DDL需要修改用户数据,哪些不需要?如何避免与用户事务大规模冲突?
针对这些问题,我们对TiDB的DDL进行了改进,开发了FLASHBACK表级闪回功能,避免“操作不规范,亲人两行泪”。表级锁优化支持批量导入/备份/恢复。在极端情况下,ADMIN REPAIR功能还能修复元数据,防止集群不可用。我们正在开发SEQUENCE,为业务提供灵活的持久化自增值数方案。除此之外,还在进一步优化和探索。
TiDB集群数据收集和诊断
TiDB是一个复杂的分布式系统,运维中需要解决许多问题:
- 如何判断数据库集群状态是否健康?
- 集群出现故障时,如何解决?
- 快速定位瓶颈并处理这些瓶颈?
- 哪些SQL执行慢,原因是什么?
针对这些问题,我们参考MySQL/Oracle/DB2等系统,开发了TiDB STATEMENT SUMMARY,基于语句和执行计划指纹统计SQL执行情况,并滚动更新和归档,方便用户/DBA排查性能问题。我们还开发了性能诊断框架,提供全集群、全模块、全链路的指标状态收集和展示,甚至可以通过一条SQL获取TiDB/TiKV的运行时CPU和内存火焰图。
我们的团队
地点
TiDB SQL Infra团队成员分布在北京、杭州、成都、广州等多个办公地点。由于TiDB是从开源社区发展起来的项目,远程交流和办公已成为常态。PingCAP不严格划分工作地点,欢迎有兴趣加入TiDB研发团队的同事自由选择工作地点。
工作内容
TiDB是一个开放的项目,我们的工作内容不受限:提升TiDB性能、改善易用性、优化某个功能等,只要你能想到有价值的事情并有兴趣去做,都可以申请参与。在SQL Infra团队中,我们不希望大家仅按既定TODO List工作,而是鼓励大家打开思路,自由探索。
成长
底层系统软件开发具有极高难度,早期数据库系统用C代码垒砌,庞大体系难以现代化理解和调试。现代数据库本身就是挑战,如何将传统的AST解析、计划优化、物理存储用现代语言实现,并赋予Raft高可用性,这对我们来说尤为重要。尤其是TiDB这种HTAP Workload目标、希望部署在各种用户场景下的数据库,挑战更大。
坦率地说,对工程师的要求很高,但我们非常重视成员的个人成长。公司定期举办Infra Meetup、Paper Reading和技术交流分享,团队内部有学习小组,你可以将感兴趣的方向放入主题池,团队每周有专门时间供学习和交流分享。我们相信这些机制可以让你打开思路,多了解业界动态,多思考。
假设思考
TiDB是一个从零开始的数据库,与基于成熟数据库改进的项目相比,我们需要做很多工作。但好处是可以自由按照想法设计和实现,甚至添加新的语法,思考在各种场景下数据库用户使用这些语法时解决的问题,以及后续如何维护。这些事情都可以在TiDB团队实现并推送给广大用户使用。
加入我们
如果你喜欢研究极致性能,乐于思考数据库设计,喜欢对数据库刨根问底,欢迎加入我们!
我们认为优秀的工程师通常具有以下特质:
- 快速学习者
- 真诚的好奇心
- 对开源的信任
- 自我驱动者
- 成功完成事物
如果你符合这些特质,欢迎查看当前开放的工作机会:https://www.pingcap.com/recruit-cn/join/#positions
简历投递至:hire@pingcap.com
实习生福利同样全面,表现优异者可获得校招绿色通道特权。对于时间紧张的小伙伴,可以通过Talent Plan丰富基础知识(https://university.pingcap.com/talent-plan/),或参与TiDB开源社区获取实践机会。
伯乐推荐:如果你身边有符合要求的小伙伴,也可以找我们聊聊,推荐成功即可获得伯乐推荐奖励。邮件格式:[伯乐推荐] 候选人姓名-职位名称-推荐人姓名-推荐人手机号。
延展阅读
发表评论
最新留言
关于作者
