乐趣区

关于tdengine:5-年前他的一个设计思路让-TDengine-时间压缩提升近-50-倍

小 T 导读:作为开创团队成员之一,廖浩均在 2017 年就正式退出了涛思数据,彼时整个团队才不过寥寥五个人,TDengine 也才诞生不久。作为一位毕业于中科院计算所的计算机利用技术业余博士,廖浩均为什么会决定从一家稳固的上市企业转移阵地到一家数据库初创公司?在进入涛思数据之后,他又见证和参加了 TDengine 的哪些扭转与提高?立足当下展望未来,携手 TDengine,他会如何走好接下来的路?在对廖浩均的采访记录中,这些问题的答案也曾经跃然纸上。

创始人“三顾茅庐”,博士“大佬”做出最终抉择

作为一个学霸,廖浩均的学业生涯是比拟顺畅的,从北京师范大学信息管理与信息系统业余毕业后,他十分顺利地就考取了中科院计算所(中科院研究生院)计算机利用技术业余的硕士,接着一路绿灯开挂式地走完了博士学位。在毕业之际,因为盲目并不太善于科研畛域的工作内容,他决然而然决定进入工业界待业。

但一贯雷厉风行的廖浩均却在承受到涛思数据递出的橄榄枝时犹豫再三,在 Jeff(涛思数据创始人陶建辉)的“三顾茅庐”后才终于下定决心。

在正式退出涛思前,廖浩均在一家绝对稳固的上市企业中工作,循序渐进的工作中没有多少惊喜也没有太多的波澜,长此以往他便生出了换份工作的想法,而恰逢其时,通过读书期间实验室师兄的推荐,他结识了正在进行人生中第三次守业的 Jeff。提起来和 Jeff 的初次见面和沟通,廖浩均依然历历在目。

“在和 Jeff 电话简略聊过后,我打算去望京科技园实地访问,过后感觉时序数据库(Time-Series Database)这个方向还是很有意思的,Jeff 也是一个相当充斥激情的人。但两次交换后我依然无奈下定决心退出,次要来源于我对本人的顾虑,尽管我之前做过数据库的相干工作,然而曾经有一段时间没有接触数据库技术了,我有些放心本人无奈胜任。”

带着这种虚心的态度,廖浩均决定要和 TDengine 这款产品再彼此多理解一些。在随后几次与 Jeff 更深度的沟通下,他逐步为这位年近 50 却仍旧奋斗在代码创作第一线上的创始人的激情和保持折服,也为 TDengine 这款时序数据库所深深吸引,同时也看到了物联网、时序数据库畛域广大的市场时机,他决定挑战一下本人,抓住这次转换赛道的机会。

“在与 Jeff 的面对面交换中,我更加深刻地理解了 TDengine,也看到了 Jeff 的技术能力——做分布式通信的专家开始跨界搞数据库,而且竟然应用不带插件的 vim 编程。此外,我发现过后的涛思数据尽管‘庙小’,但包容的‘大神’却并不少,不仅有刚毕业的新锐海归,还有工业数据库畛域的资深专家。总的来说, 感动我退出涛思数据的起因有三点:Jeff 是一个很厉害的专家,他的工程能力和产品认知的敏锐性在我意识的人中无出其右;时序数据这个方向也很有前景;我本人应该可能胜任这个挑战。”

Jeff 的“穷追猛打”下,廖浩均心中沉寂已久的技术激情又开始蠢蠢欲动了,最终他信心 All In 时序数据库,而这个抉择的正确性也在前面几年工夫里失去了印证。

“其实,在退出涛思之前,我并不是很理解时序数据库这个细分畛域中的产品。在 2017 年,时序数据库这个概念对国内的诸多用户来说还是太前沿,然而万物互联和物联网的迅猛发展的确都能切身体会到。一般来说,此前只有公交车、出租车等机动车上装置有用于上传车辆状态和地位数据的专门设施,起初在智能穿戴设施、2017 年最火爆风口‘共享单车’、主动驾驶等方向上都会产生大量的时序数据……毫无疑问,这些场景都在激发着时序数据利用和治理的需要。依照这个趋势倒退上来,时序数据库的倒退势不可挡,在我看来,这种直观的感触和体验最有说服力。”

一个被申请了专利的设计思路,将工夫压缩晋升近 50 倍

在退出涛思数据后,廖浩均次要负责查询处理相干的工作,在读书时他就接触过大量空间数据相干的工作,钻研畛域次要集中在空间数据索引和查问算法两大方向上,因而在解决工作时也绝对比拟得心应手。“我在入职两三天后就上手了工作,做的第一件事就是减少 TDengine 的聚合查问性能。”

廖浩均的一个直观感触是,在一个全新的设计理念下发展设计以及进行工程开发,没有其余的任何可借鉴的实践经验,真的十分考验技术人的思考能力和创造性。 例如 TDengine 中的多表架构设计,其最开始的状态是采纳每个表程序查问迭代来实现,起初发现这种办法效率太差,百万级别的表查问耗时都会达到小时级别。

“在某天下班前,我打算在服务器上跑一下刚实现的查问代码,后果等了快 10 分钟还没有出后果,起初发现查问跑了 1 个多小时当前过程挂起,最初后果也没进去。过后就头大了,这种查问效率基本没法应用,可是怎么改却没有现成的思路,只能本人尝试。起初憋了好几天,迸发出的灵感也帮忙我打造出了全新的解决逻辑,前面我将思路与 Jeff 简略交换了一下,失去认可后就开始入手调整代码。调整后初步测试后果,就将工夫压缩到分钟级别,晋升近 50 多倍。随着后续又进行了一系列工程优化办法,调整实现当前间接将工夫压缩到秒级。这是我印象中特地粗浅的一件事。”

在 TDengine 的发展史中,正是这个设计让多表交互式查询处理成为了可能,为 TDengine 可能高效进行查询处理服务胜利奠基。 之后这个设计思路申请了 PCT 寰球专利爱护,也成为廖浩均职业生涯中的又一个闪光点。

家喻户晓,TDengine 还有一个外围技术创新点叫超级表,但其实在超级表的模型问世之前,其曾经有一套流程和逻辑了,在超级表模型确定后,廖浩均等人又开始针对 TDengine 的写入、查问、数据存储等多个方面进行调整和适配。

“因为 TDengine 是一款具备肯定探索性的产品,其性能的边界和定义并不是十分分明清晰,因此在架构设计上也很难八面玲珑,并确保足够的余量和扩展性设计。如果后期没有做好设计,前面减少性能的时候会面临十分大的艰难。架构设计思考得不欠缺,须要重构,然而又不可能大规模调整框架设计。只能采纳小步快跑的形式,不停进行代码和设计架构的小规模重构和优化工作,还要防止重构工作引入新的 Bug。”

在廖浩均的印象中,针对 TDengine 进行开发和调试 Bug 时,为了定位解决代码中的逻辑谬误,就须要浏览和剖析大量的日志,在这一工作中,通过日志剖析定位代码中的逻辑谬误问题是一个十分重要的能力。“咱们最长工夫的一次日志剖析断断续续花了 1 天半的工夫,是剖析一个服务器、客户端之间的查问日志,通过日志信息剖析还原了 3 个线程之间的、对于一个内存区的应用 + 线程调度问题解决中呈现的 race condition。因为架构设计的起因,须要应用的解决形式和解决技巧绝对简单,起初 Jeff 为 TDengine 减少了对象生命周期治理的模块,才防止了后续持续在这个问题上掉坑。 在减少和欠缺音讯交互的流程追踪机制根底上,从几十 GB 的日志中捞进去所需的两三行确定性要害日志成为了惯例操作,同时十几、二十分钟就能疾速定位出问题,给出谬误起因并将谬误场景还原。”

TDengine 从 0.x 到 3.0,他既是见证者也是建设者

作为涛思数据的“元老”之一,回顾 TDengine 的一路成长,廖浩均倍感光荣和快慰。

“一些敌人可能不太分明 TDengine 是怎么孵化出超级表概念的,其实这一概念是 Jeff 在与网宿科技交流过程中碰撞进去的,过后的数据库畛域中并没有这样一种设计,可能解决须要创立很多表的场景(TDengine 的独特设计要求每个设施有一个写入表),表的模式统一,具体性能上既须要可能独自写入、又须要实现通过一条 SQL 语句就可能查问全副雷同模式的表。乏味的是,超级表的设计和整体逻辑是 Jeff 提出来的,但名字却是我取的。”

超级表的问世无疑给 TDengine 注入了满满活力和生机,也让 TDengine 在后续的市场竞争中胜利怀才不遇。

据廖浩均回顾,在刚刚退出时,TDengine 的架构还非常简单,也没有太简单的解决逻辑,只能进行简略的投影查问。“过后整个零碎的基础架构以及外围组件,包含通信模块、音讯队列、事件驱动执行模块、SQL 解析、查问执行框架、Driver,这些基本上都是 Jeff 本人在几个月工夫内实现的,因为人手和工夫的起因,这套服务端查询处理框架从 0.x 版本始终延用到 1.x 版本,在 2.0 版本中才进行了较大规模的逻辑优化和重构。”

回顾 TDengine 从 0.x 到 2.x 的倒退,廖浩均感叹颇多。“得益于 Jeff 对时序数据库这一细分畛域的前瞻性和洞察力,涛思在较早的阶段就进入其中,霸占了肯定的产品和市场先机,但这间隔咱们想要把 TDengine 打造成物联网行业首选时序数据库乃至全球化产品的指标还相距甚远,所以从 0.x 到 2.x,TDengine 也在一直进行技术创新和深耕。”

TDengine 0.x 的版本基本上奠定了后续的技术根底,包含治理节点、数据节点、虚构节点的设计和性能边界、代码实现,音讯通信体系,分布式框架和元数据管理架构等要害内容,具备了根本的 SQL 操作能力和超级表模型,较齐备的高性能数据写入流程和缓存中数据组织机制、以及 WAL 设计,具备优异读写性能的文件组设计,数据生命周期管理机制,以及日志模块和参数治理模块,还包含同步异步反对的 Driver 等。

在随后的 1.x 版本中,TDengine 联合用户的需要,退出了预计算性能、减少了乱序数据写入能力,在 SQL 语法上进行加强,修复了零碎整体上存在的大量问题并欠缺各模块的性能,同时从 1.4 版本开始进行开源,将外围代码公开于 GitHub 上,在 GitHub 寰球趋势排行榜上屡次霸榜,这一行动也为 TDengine 带来了更多技术关注。

“敢于开源代表着咱们不惧外界的技术质疑,同时开源也有助于咱们更加间接疾速地取得用户对于产品的反馈,放慢产品演进和研发速度。随着开源力度的加大、引擎研发团队技术人员的减少以及团队本身教训的积攒,2.x 版本中咱们进行了更优异的模块化和重构工作,对简直全副的性能组件进行梳理和重构。尽管在用户层面能看到的性能加强和改善并不多,然而从产品角度来说,2.0 真的是 1.x 版本的一次本性难移式的降级。”

现在,间隔 2.0 版本公布曾经过了两年工夫,为了让用户在应用体验上更加顺滑,如廖浩均个别的涛思技术人也在加班加点地对 TDengine 进行新一轮的优化和迭代。 在他们的致力和一众用户的反对下,2022 年下半年,3.0 版本也将如期而至,届时 TDengine 将迎来进一步降级和变质。

展望未来,携手 TDengine 继续前进

回顾退出涛思数据的这些年,廖浩均示意最大的播种就是结识了一群很优良的共事,大家为着独特的指标而致力,是一件让人很冲动很兴奋的事件。而他自己也在这个过程中受益匪浅,通过参加一套根底软件系统从 0 到 1 的开发,不仅重塑了集体的常识体系,对于数据库系统的了解达到了一个新的档次,也极大晋升了数据库相干的工程能力。

谈及本身的下一步倒退,他心愿还能持续深耕在时序数据库畛域,一是源于趣味,二是源于前景。“物联网时序数据畛域还处于疾速倒退的阶段,将来肯定会有较大的倒退空间,对于我本人来说,投身于这样一个一直倒退的畛域,也能鞭策着我一直学习和提高。只有脱离舒服区,做有挑战性的工作,能力让能力晋升这件事放弃可持续性。 如果你也对此感兴趣,那开源社区是一个十分好的学习渠道,通过优良的开源我的项目,可能学习到十分多的教训,欢送你成为 TDengine 的贡献者。”

而谈及 TDengine 的将来,他心愿通过工夫的洗礼,TDengine 可能倒退成为一个具备开箱即用、高性能时序数据处理能力的重要软件产品,涵盖时序数据日常利用中的重要场景所涉猎的性能,具备优良的伸缩能力、容错能力、异构环境部署能力以及面向用户的性能扩大。在数据中心和边缘侧具备同样的便捷性、易用性的应用体验,进一步为用户提供高性能、高效能、高可靠性、低成本的时序数据处理性能。


想理解更多 TDengine Database 的具体细节,欢送大家在 GitHub 上查看相干源代码。

退出移动版