这是一个 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 事务模型提供一样的一致性保证。通过这样的架构,我们同时做到了:
-
资源隔离:我们可以使用两组不同的机器分别处理 TP 和 AP 业务,而且不互相影响;
-
新鲜度:AP 侧可以保证读取到新的数据,哪怕是一瞬之前你刚写入的;
-
一致性:提供了和实际写入点 TiKV 一样的一致性保证,事务不会因为数据同步而被拆分或者乱序;
-
性能:在上述各种限制下,仍然可以拥有和独立 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 开源社区获得更多实践机会!
伯乐推荐:如果你身边有符合以上要求的小伙伴,也可以找我们聊一聊,推荐成功就有机会获得伯乐推荐奖励。伯乐推荐邮件格式:[伯乐推荐] 候选人姓名-职位名称-推荐人姓名-推荐人手机号。