只有天空才是你的极限,我们热爱探索的过程并沉浸其中
Hackathon 本身带给我们的是一次全新的探索,并不只是一队人有一个明确的目标,花几天时间写代码,那其实是很无聊的。探索的本身让我们发现,越探索越能找到更新、更好、更优雅的解决办法,我们热爱这个探索的过程并沉浸其中…… —— TiMatch 赛队
战队成员之一柏佳辰是一个爱画画、爱摩托车、喜欢读《理想国》,建筑学出身的程序员。
在 TiDB Hackathon 2020 赛事中,TiGraph 项目在 TiDB 中实现了一套新的 Key-Value 编码来引入图模式,处理传统关系型数据库难以覆盖的图数据分析场景,实现了 TiDB 在四度人脉的计算性能大幅提升,夺得了二等奖。
在刚刚收官的 TiDB Hackathon 2021 赛事中,TiMatch 在去年项目的基础上做了一次进化升级,构建了基于 TiDB 和 TiKV 的语法完备的分布式图数据库,探索出一条在 TiDB 之上构建一个成熟且易于使用的图数据库的路径。项目获得了现场评委的一致肯定,拿下本届赛事的二等奖。
TiMatch - 语法完备的分布式图数据库,去年 TiGraph 已经让大家惊艳,今年 TiMatch 更让人期待了。这次易用性更好,而且对于老集群也能直接升级使用。因为 TiMatch 只是内部建立了一套 graph index,然后通过 TiDB 分布式事务机制,跟原先关系表的数据统一更新。语法上面,借鉴了 Oracle graph 的语法,所以已经是关系完备的了,不过我觉得后面的挑战在于性能上面,希望后续这块能给大家展示相关的数据。
——评委唐刘
点评非常惊艳,借助 TiKV 的扩展能力+ TiFlash 的分析能力,想象空间很大,希望能尽快 GA!
——评委冯光普
为什么选择图数据库这个方向?
图技术已成为现代数据和分析能力的基础,能够在不同的数据资产中发现人、地点、事物、事件和位置之间的关系。依靠图技术可以快速回答以往需要了解情况并理解多个实体之间的联系和优势之后才能回答的复杂业务问题。从去年的 TiGraph 到 TiMatch
项目实现了哪些提升?
去年的 TiGraph 项目留下了一些遗憾,比如图查询语言不完备,没有接入 TiKV 存储引擎等。这次 Hackathon 赛事中 TiMatch 的任务就是基于 TiDB 和 TiKV 设计语法完备的分布式图数据库雏形,继续探索在 TiDB 之上构建一个成熟且易于使用的图数据库的路径,TiMatch 实现了三大方面的提升。提升语法的完备性,语言上面引入了 Oracle PGQL 语法
通过在 WHERE 子句后引入 TRAVERSE 子句来进行图遍历,主要是探索看看是否能进行有效整合,是否可以无缝算子复用,语法是否足够简单,子查询是否可以友好地相互嵌套。虽然最终是达到了验证的目的,但是由于数据来源需要依赖底层的 SELECTION 算子,所以进行图计算时不能进行多个边匹配,在子图匹配和最短路径等其他图算法场景中难以构造对应的查询,本质上是语法的完备性存在问题。降低系统复杂度和学习成本
简化和完备性的提升直觉上是相悖的,这次的方案在读取路径和写入路径上区别对待,读取路径尝试通过 PGQL 图查询语言来提升查询的完备性,需要引入新的语法规则。在写入路径上,探索出一个全新的方案,去年的方案我们引入了很多新的语法,比如:CREATE TABLE ( a bigint /*T! SOURCE KEY REFERENCES students */, b bigint /*T! DESTINATION KEY REFERENCES students */ )
从单机存储 unistore 到 TiKV+TiFlash,提升数据集支持规模
Hackathon 2020 由于时间所限使用了用于跑单元测试的 unistore,而今年引入 TiKV 存储引擎,运算性能也极大的提升,在 Demo 演示中可以看到,100 万点的单源 6 度人脉查询只需要 200 毫秒,相比去年在 unistore 上 10 万数据需要 6 秒来说,性能提升极为明显。未来还可以引入 TiFlash,利用 TiFlash 的 MPP 能力进行大规模图计算。通过两届 Hackathon 的迭代
在 TiDB 上实现图数据库
TiMatch 探索出了一条怎样的路径?
在 Hackathon 上获得二等奖的好成绩
最主要的原因是什么?
最主要的原因是这个项目站在了“三层”巨人的肩膀上面,才能呈现在大家的面前作为一名北美的选手
首次参加 TiDB Hackathon 有什么感受?
柏佳辰
GitHub ID:JeepYiheihou
哈佛硕士毕业,现就职于 AWS 温哥华,从事 ElasticCache 缓存数据库核心研发工作,利用假期参与了此次 Hackathon。整个 Hackathon 的过程对我来说是一次开心的体验。赛队全情投入,竞争特别激烈,赛制给足了时间让我们进行思考和创意,很多项目的完成度很高,也涌现了不少实用的项目。评委们提了不少犀利的问题,可以看出他们不止看到当下项目的闪光点,更会以长远的眼光去发掘这些项目在未来的方向和价值,我觉得评委们也是非常 enjoy 这个过程。
全栈程序员是怎么炼成的?
因为热爱。赛队的视频以及 RFC 的 PPT 都是出自柏佳辰之手。之前学过八年的建筑学,做精美的 PPT 是必修课,做视频也是自学的。这次赛队的宣传视频,借鉴了黑客帝国的主题,有一些帧用的是 processing 进行编程的可视化,用了 pathon 语言呈现了图、网格和网络。在转行做程序员之前,对编程很感兴趣,自学学编程,接触过使用可视化工具来制作视频,刚好这次用上了。不管做转行前或者转行后的任何事情,做职业决定的时候,要确定你是真的热爱它。热爱它,你就会对这件事情全神贯注,投入精力进去。转行做程序员大家都知道怎么去做准备,重要的不是第一步你怎么跨入这个行业,重要的是怎么把后面的每一步都做好。