RA Team:让 TiDB 插上“实时分析”的翅膀| PingCAP 招聘季

Stella981
• 阅读 602

这是一个 RA 组招聘文章,但是这里所说的都将是非常坦诚的。RA 是 Real-time Analytics 的缩写。是的,我们负责 TiDB 的实时分析场景,与传统的数仓方案不同,TiDB 的分析能力更偏向于实时场景。

**TiDB 一直的定位是 HTAP ,即拥有 Hydrid Transactional / Analytical Processing 能力的数据库。**不过,不管怎么说,它都是一个源于 TP 场景的产品,而 AP 部分则是处在不断探索和完善的过程中。从最初没有独立的项目,到借助明星项目人气的 TiSpark,到现在整体分析场景架构初步成型。随着公司的不断壮大,我们逐步理清了实时分析方面的产品方向。之前在 DTCC 2019 的讲稿 《TiDB 的 HTAP 之路》算是原原本本说了这一路我们的困扰和努力,有兴趣了解 TiDB 分析场景的同学可以看看。随着 TiDB 4.0 列存引擎 TiFlash 发布,我们从来没有如此确信,这条路虽然还很漫长,但却是正确的。

TiFlash 和 TiSpark

TiSpark 是我们很早就推出的 Spark 连接器,通过深度对接 Spark Extension,我们能从 Spark 的 Parsing,Meta Resolution 一直到 Plan 插入算子,全程修改 Spark 的行为逻辑。它不但是 TiDB 体系下 ETL 以及大数据生态衔接的良好补充,也是在 TiDB 没有独立的分布式计算引擎之前处理大规模计算的最佳选择。

而刚提到的 TiFlash 则是我们这一年投入最多精力的产品。这是一款列存引擎,架构上可以简单认为是一个 TiKV 的补充和延伸,使用 Raft Learner 协议异步抄写数据,但是通过 Learner Read 协议加上同样的 MVCC 事务模型提供一样的一致性保证。通过这样的架构,我们同时做到了:

  1. 资源隔离:我们可以使用两组不同的机器分别处理 TP 和 AP 业务,而且不互相影响;

  2. 新鲜度:AP 侧可以保证读取到最新的数据,哪怕是一瞬之前你刚写入的;

  3. 一致性:提供了和实际写入点 TiKV 一样的一致性保证,事务不会因为数据同步而被拆分或者乱序;

  4. 性能:在上述各种限制下,仍然可以拥有和独立 AP 解决方案一样良好的查询速度。

TiFlash 在两个主要场景下有很好的“疗效”:

  • 一个是纯粹的 HTAP 场景:你可以以极高的一致性要求查询在线库最新发生的交易,比如实时查看交易报表。而这一切都无需你搭建复杂的数据抽取和同步管道,或者小心地维护数据的一致性。

  • 另一个场景是作为 TiDB 的特殊列存索引引擎:你可以为一张表创建列存索引,而 TiDB 会按照实际场景选择在行存点查或者列存上进行高速的批处理,甚至在同一个查询结合两者。这使得你在同一个数据库上可以完成截然不同的两种作业负载,而且无需操心细节。

今年,以 TiFlash 为依托,我们将向更高更远的目标挑战:补完一个 HTAP 数据库从 TP 数据进入、到数仓、乃至末端数据服务层的所有链路,让各种复杂的架构简化到同一个平台上。要做到这点,我们有以下计划:

搭建原生的 MPP 引擎

我们希望 TiDB 产品体系能拥有原生的 MPP 计算框架。大家都知道,TiDB Server (TiDB 的计算节点)本身仍然是单机的,这并不是我们设计的选择,而只是当前暂时的状态。2020 年,我们将会把它变成一个具有 MPP 引擎的数据库。至此,TiDB 的存储和计算力才算真正匹配。这将是一个特别的跨组合作项目,因为这里牵涉的任务非常复杂,包含了执行器,优化器和协处理器等等不同的模块,如果你:

  • 熟悉 MPP 框架,不论是大数据生态的 Impala,Presto 还是传统的 MPP 数据库例如 Greenplum,Vertica;

  • 熟悉数据库执行器构建,例如向量化和 SIMD,内存管理,Cache Locality 优化等;

  • 熟练掌握 C++(加分项)。

那么我们期待和你共事!

构建支持不同业务形态的存储层

从去年开始,我们实验性地在 TiFlash 中开始了一个新的存储引擎项目,目标是构建一个能适应 TP 类高速更新且提供优异批量读取的列存引擎。从原理上来说,同时支持高频更新和高效批量读取是一件非常困难的事情。是的,这是一个很有挑战的任务。就现在而言,这个项目仅仅是完成了最初的设计目标,而在新的一年,为了补完产品形态,它需要在单机存储层进一步支持数仓类的大批量写入,以及在分布式层支持脱离 TiKV 体系的独立扩容和容错机制,甚至为今后整体上云打下基础。等到这些完成了,配合 MPP 和 TiSpark,TiDB 将拥有处理数仓业务的能力,更进一步将复杂的数据平台简化。如果你:

  • 熟悉存储系统的开发和设计,无论是分布式文件系统,NoSQL,或者各类数据库存储引擎;

  • 熟练掌握 C++(加分项);

  • 对存储硬件有良好的理解,熟悉 Linux IO(加分项)。

那我们期待你的加盟!

不断快速迭代和打磨产品

随着更多的用户使用 TiDB 构建自己的数据分析平台,我们将会以很快的速度迭代打磨产品。从既有舒适区的场景,到新形态下之前从未接触的用例,产品必然需要各个维度的打磨。例如适合数仓的事务模型,推进云化形态接入 K8s 和云存,更深入的 Spark 体系整合,统一的权限体系等等,这些工作充满挑战。如果你

  • 熟悉分布式系统或者数据库开发;

  • 拥有良好的编程技巧和解决问题的能力。

那么我们欢迎你加入!

产品以外的闲话

关于公司的氛围什么的,就不在这里赘述了,但有一点:RA 组应该算是整个公司气氛「最逗比狂野又和谐」的存在,相信一起共事的同事都有一样的看法,也相信即将加入的你一样会得到快乐 :)

加入我们吧!

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

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

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

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

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

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

延展阅读

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

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

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

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

写给 TiDB 原厂 DBA 的一封信:连接技术和价值的“最后一米”

TiDB SQL Engine Team:纯手工打磨前沿的优化器和执行引擎

E.T. 团队:TiDB 开源生态宇宙构造者

我眼中的 PingCAP 工程师文化

程序媛眼中的 PingCAP:无法抗拒的五大吸引力

Cloud Team:上能修 DB,下能改容器的云原生信仰者

RA Team:让 TiDB 插上“实时分析”的翅膀| PingCAP 招聘季

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Easter79 Easter79
3年前
TiDB 的现在和未来
本文根据黄东旭在PingCAPD轮融资线上发布会的演讲实录进行整理。!(https://oscimg.oschina.net/oscnet/upceee1b1ad10e2bcde45dbe1cc00dc0688fc.png)TiDB的现在和未来大家好,我是黄东旭,是PingCAP的联合创始人和CTO
Easter79 Easter79
3年前
TiDB 部署及数据同步
简介TiDB是PingCAP公司受GoogleSpanner/F1论文启发而设计的开源分布式HTAP(HybridTransactionalandAnalyticalProcessing)数据库,结合了传统的RDBMS和NoSQL的最佳特性。TiDB兼容MySQL,支持无限的水平扩展,具备强一致性和高可用
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
暗箭伤人 暗箭伤人
1年前
【www.ithunter.club】 20230922下午
不容易的2023年,我们一起努力【www.ithunter.club】(2023092208:00:00.8872062023092216:00:00.887206)1.人事招聘专员数名(可选远程或入职)2.招聘向坐标东京Yahoo、Shift、L
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这