iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >TiDB SQL Infra Team:一起打造从计算层到存储层的完美桥梁 | PingCAP 招聘季
  • 683
分享到

TiDB SQL Infra Team:一起打造从计算层到存储层的完美桥梁 | PingCAP 招聘季

摘要

TiDB 作为计算存储分离的数据库,在 SQL Layer 层上要做的东西有很多,比如对上层查询的模式控制,对下层 KV 数据的映射构建。TiDB SQL Infra Team 所做的工作正是成为连接 KV Store 和 SQL Lay

TiDB SQL Infra Team:一起打造从计算层到存储层的完美桥梁 | PingCAP 招聘季

TiDB 作为计算存储分离的数据库,在 SQL Layer 层上要做的东西有很多,比如对上层查询的模式控制,对下层 KV 数据的映射构建。TiDB SQL Infra Team 所做的工作正是成为连接 KV Store 和 SQL Layer 的桥梁。这也是其 sql Infra 名字的由来:Infra 意为基础架构,得益于在线一致性模式变更的存在,使得在各个 TiDB Server 上都可以自下而上地在 Raw KV 上构建起一套成熟的结构化查询体系。

随着 TiDB 研发团体逐渐壮大,TiDB SQL Infra Team 也逐渐从原来数人研发团队中划分出来,工作内容更加形象化,具体化,模块化。TiDB SQL Infra Team 目前更加聚焦于 TiDB 的模式信息处理和维护,DDL 语法控制流程,SQL 诊断数据集成,以及和 Placement Driver(PD)、KV Storage 的数据交互。随着 TiDB 更加注重计算和数据源亲和性,由算子下推衍生的 Coprocessor 协处理逻辑也划分在 TiDB SQL Infra Team 的工作范畴之内。

我们在做什么

TiDB 元信息管理

元信息的管理对于一个数据库的重要性不言而喻。因此,SQL Infra 组内的工作大头就是 TiDB DDL。大家可能知道,作为一个分布式数据库,TiDB 同时基于 Google F1 Online Schema Change 支持在线 DDL 变更,这个理论本身比较简单,但实际进行工程应用的时候,有许多的事情需要考虑:

  • DDL 在线变更怎么和分布式系统的 Failover 结合在一起?哪些状态需要持久化,哪些不需要?

  • DDL 哪些阶段是可以优化(跳过)的?哪些 DDL 是可以并行支持的,又怎么支持?

  • 哪些 DDL 是需要修改用户数据的,哪些其实不需要,在修改数据的时候,怎么避免与用户事务大规模冲突,怎么调整与用户事务对集群资源的争夺?

在这些情况的考虑下,我们对持续对 TiDB 的 DDL 进行了改进:提供在关键时刻可以救命的 FLASHBACK 表级闪回功能,避免“操作不规范,亲人两行泪”。表级可以更好地让 TiDB 支持数据的批量导入/备份/恢复。在极端情况下,TiDB 元数据坏了/丢了,ADMIN REPAIR 也可以对元数据进行修复以避免整个集群不可用。正在开发的 SEQUENCE,则为业务提供了更加灵活的持久化自增值数方案。除此之外,我们还在做进一步优化和探索工作。

TiDB 集群数据收集和诊断

TiDB 是一个存储计算分离,包含多组件的分布式系统,大家可以想象一下,运维起来其实要考虑很多问题:

  • 怎么判断数据库集群状态是否健康?

  • 集群如果有问题/故障,怎么解决?

  • 怎么快速集群当前瓶颈在哪,这些瓶颈怎么处理?

  • 哪一类 SQL 执行的慢?为什么慢,或者什么时候变慢的?

针对上面的问题,我们参考 Mysql/oracle/DB2 等已有系统的 SQL 审计功能,开发了 TiDB STATEMENT SUMMARY,对 TiDB SQL 执行过程进行基于语句和执行计划指纹的统计,并滚动更新和归档,方便用户/ DBA 对不符合预期的性能问题做排查。而开发中的 TiDB 性能诊断框架,则以内置的方式直接提供对 TiDB 全集群、全模块、全链路的指标状态进行收集和展示,可以说你能想到和想不到的指标,都可以通过这个框架获取到。举个例子,你可以使用一条 SQL 获取 TiDB/TiKV 运行时的 CPU 和内存火焰图。

我们的团队

关于地点

TiDB SQL Infra Team 的组员均匀分布在各个 Office(北京、杭州、成都、广州),因为 TiDB 是一个诞生于开源、依托开源社区发展成长的项目,这使得我们认为远程的交流和办公是一个常态。所以 PinGCAP 并不按照工作地点来划分工作模块,只要你有兴趣加入 TiDB 研发团队,你可以自由地选择工作地点。

关于工作内容

其实,TiDB 是一个非常开放的项目,我们的工作内容是不受限的:无论是提升 TiDB 性能、改善易用性、甚至只是让某个功能更加酷炫,只要你能想到有任何的事情能够让 TiDB 变得更好,并且有兴趣挖坑,都可以申请去做。在 TiDB SQL Infra Team,我们不希望大家只是按照既定的 TODO List 去做事,我们希望每个成员都能打开思路,在不断的思考中工作。

关于成长

底层系统软件开发是一个极具挑战性的任务,早期数据库系统是在八九十年代用 c 代码垒起来的,庞大体系难以现代化理解和调试。现代数据库本身就是非常有挑战和有意思的一个项目,如何将传统的 AST 解析,计划优化,物理存储用现代语言实现出来,并赋之以 Raft 高可用实际,这对我们来说也是一个巨大的挑战。对于 TiDB 这种以 HTAP Workload 为目标、希望部署在各种用户场景下的数据库来说,挑战尤甚。

坦率的讲,这对工程师的要求是非常高的,而我们也非常重视大家在工作中的个人成长。公司定期举办 Infra Meetup、Paper Reading 以及各种内外部技术交流分享,我们 Team 内部有学习小组,你可以把自己感兴趣的方向放到学习小组的主题池中,每周我们都有专门的时间供大家学习,并相互交流分享。我们相信这些机制可以让你打开思路,多了解业界的动态,多思考。

闲话二三

TiDB 是一个从零写起来的数据库,与基于某一个成熟的数据库做改进、开发中间件相比,这种从头写代码的做法自然要做很多的工作。但好处在于,你可以自由地按照自己的想法做设计、做实现,甚至为理想中的功能添加新的语法,并思考在各种场景下,数据库的用户在使用这些语法时的场景是什么,希望解决什么问题,后续的如何维护?这些事情,都可以在 TiDB 团队实现,去推送给广大的 TiDB 用户使用。

如果你喜欢研究极致的性能,乐于思考数据库的设计,喜欢对数据库刨根问底,欢迎加入我们!

加入我们吧!

我们认为优秀的工程师或多或少有以下共同特质:

· A Quick Learner
· A- n Earnest CuriOSity
· Faith in Open Source
· Self-driven
· Get Things Done

如果你符合以上特质,欢迎进入招聘页面查看目前开放的工作机会:

https://www.pingcap.com/recruit-cn/join/#positions

简历投递通道:hire@pingcap.com

实习生:公司的各项福利和学习资源对实习生全面开放,更重要的是实习生还未毕业就有机会接触工业级项目,而且实习期间表现优异者将有机会获得校招绿色通道特权。针对实习时间并不充裕的小伙伴,你可以先通过 Talent Plan 丰富基础知识(https://university.pingcap.com/talent-plan/),也可以通过参与 TiDB 开源社区获得更多实践机会!

伯乐推荐:如果你身边有符合以上要求的小伙伴,也可以找我们聊一聊,推荐成功就有机会获得伯乐推荐奖励。伯乐推荐邮件格式:[伯乐推荐] 候选人姓名-职位名称-推荐人姓名-推荐人手机号。

延展阅读

是的,我们在招人!PingCAP 2020 招聘季正式开启

TiDB Architecture Team:挑战数据库的本质难题

揭秘 PingCAP 年轻前沿的团队:用户生态

您可能感兴趣的文档:

--结束END--

本文标题: TiDB SQL Infra Team:一起打造从计算层到存储层的完美桥梁 | PingCAP 招聘季

本文链接: https://www.lsjlt.com/news/4935.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql拒绝访问怎么办
    mysql 出现拒绝访问的原因和解决方法:权限问题:授予用户适当的数据库或表访问权限。防火墙或安全组:允许对 mysql 端口(3306)的入站连接。密码错误:重置 mysql 密码或使...
    99+
    2024-05-17
    mysql
  • mysql怎么比较日期大小
    mysql 中比较日期大小的方法包括:直接比较两个日期,使用 、= 运算符。使用 date_format() 函数将日期转换为字符串,然后比较字符串大小。使用 str_to_date()...
    99+
    2024-05-17
    mysql
  • mysql怎么加锁
    mysql中加锁是一种确保数据并发访问一致性的机制。加锁方式有:表级锁(对整个表加锁)和行级锁(对特定行加锁)。加锁类型有共享锁(允许读取但禁止修改)、排他锁(禁止读取和修改)和意向锁(...
    99+
    2024-05-17
    mysql 并发访问
  • mysql误删数据怎么恢复
    mysql误删数据可通过以下步骤恢复:停止数据库服务,防止数据覆盖。若开启binlog日志,可从中提取删除语句,再重新执行后将数据恢复。使用恢复工具修复表文件或恢复事务。从备份中恢复数据...
    99+
    2024-05-17
    mysql
  • 怎么判断mysql安装成功
    成功安装 mysql 的方法:检查命令行界面版本号;连接到 mysql 服务器,输入 "mysql -u root -p";创建数据库,输入 "create database test;...
    99+
    2024-05-17
    mysql linux macos 防火墙配置
  • mysql怎么修改表名
    如何修改 mysql 表名:检查当前表名:show tables;运行 rename table 语句:rename table 旧表名 to 新表名;验证更改:show tables;...
    99+
    2024-05-17
    mysql
  • mysql删除的表怎么恢复
    mysql 中已删除表的恢复方法主要涉及以下步骤:检查 binlog 日志以获取删除事务信息;使用数据恢复工具扫描数据库文件;从备份还原表数据;或联系 mysql 支持寻求帮助。 My...
    99+
    2024-05-17
    mysql 数据丢失
  • mysql复合主键怎么写
    在 mysql 中编写复合主键:在 create table 语句中使用 primary key 约束并列出字段名称。复合主键的好处包括提高查询效率、保证数据完整性和强制数据顺序。注意选...
    99+
    2024-05-17
    mysql
  • 怎么查看mysql数据库版本
    如何查看 mysql 数据库版本?连接到数据库并执行查询:select version();检查命令行或 mysql workbench 中的服务器属性。 如何查看 MySQL 数据库...
    99+
    2024-05-17
    mysql linux
  • 怎么检测mysql安装成功
    要验证 mysql 安装是否成功,请执行以下步骤:检查系统服务是否正在运行。使用 mysql 命令行工具连接到服务器。创建一个测试数据库并使用它。在数据库中创建一个测试表。插入测试数据并...
    99+
    2024-05-17
    mysql linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作