卷首语

五年之后,数据库会变成什么样子?

作者 黄东旭

我还清楚记得,五年前的这个时候,当时还在豌豆荚,午后与刘奇和崔秋的闲聊关于未来数据库的想象,就像一粒种子一样,到了今天看起来也竟枝繁叶茂郁郁葱葱,有点感慨。按照惯例,五年是一个重要的节点,没有十年那么冗长,也没有一两年的短暂,是一个很好的回顾与展望节点。

五年前创业的出发点其实很朴素:做一个更好的分布式数据库。从学术的角度上看起来,并不是提出了什么惊天地泣鬼神的神奇算法,我们选择的Shared-nothing的架构其实在当时的业界也不是什么新鲜的事情了,但真正令我激动的是:我们要造的是一个真正能作为整个系统的Single Source of Truth的基础软件。

创业五年,TiDB按照我们当初的设想一步步变成了现实,在这个旅途中,我们一步步看到了更大的世界。那么接下来的五年会发什么?随着对于行业和技术的理解的加深,至少有一点我深信不疑的是:弹性调度会是未来的数据库的核心能力。

谁都不会否认,最近十年在IT技术上,最大的变革是由云带来的,这场革命还在进行时。云的核心能力是什么?我认为是弹性。计算资源分配的粒度变得越来越细,就像从只能买房变成可以租房,甚至可以像住酒店一样灵活。这意味着什么?本质在于我们可以不用为‘想象中’的业务峰值提前支付成本。

过去我们的采购服务器也好,租赁机柜也好,都是需要设定一个提前量的,当业务峰值没有到来之前,其实这些成本是已经提前支付的了。云的出现将弹性变成了基础设施的一个基础能力,我预计数据库也会发生同样的事情。

可能有很多朋友会有疑问,现在难道不是几乎所有数据库都号称能够支持透明水平扩展嘛?其实这里希望大家不要将‘弹性调度’狭隘的理解为扩展性,而且这个词的重点在‘调度’上,我举几个例子以方便大家理解:

1.数据库能不能够自动识别workload,根据workload进行自动伸缩?例如:预感到峰值即将来临,自动的采购机器,对热数据创建更多副本并重分布数据,提前扩容。在业务高峰过去后,自动回收机器进行缩容。

2.数据库能不能感知业务特点,根据访问特点决定分布?例如:如果数据带有明显的地理特征(比如,中国的用户大概率在中国访问,美国用户在美国),系统将自动的将数据的地理特征在不同的数据中心放置。

3.数据库能不能感知查询的类型和访问频度,从而自动决定不同类型数据的存储介质?例如:冷数据自动转移到S3之类比较便宜的存储,热数据放在高配的闪存上,而且冷热数据的交换完全是对业务方透明的。

这里提到的一切背后都依赖的是‘弹性调度’能力。未来我相信物理资源的成本会持续的降低,计算资源的单价持续下降带来的结果是:当存储成本和计算资源变得不是问题的时候,问题就变成‘如何高效的分配资源’。如果将高效分配作为目标的话,‘能调度’就是显而易见的基础。

当然就像一切事物发展的客观规律一样,学会跑步之前,先要学会走路,我相信在接下来的一段时间内,我们会看到第一批初步拥有这样能力的新型数据库,让我们拭目以待。

对于更远的未来是怎么样子的?我不知道,但是就像The Machine一样,只有足够数据才能诞生出智能,我相信就像我们不了解宇宙和海洋一样,我们现在对于数据的认识一定是肤浅的,甚至大量的数据我们都还没记录下来,一定有更大奥秘隐藏在这海量的数据中,从数据中能获取什么样的洞察,能够怎么样更好的改变我们的生活,我并不知道,但是做这件事情的主角我猜不会是人类。虽然在这个小节我们讨论的东西可能就有点像科幻小说了,不过我愿意相信这样的未来,从数据的海洋中诞生出新的智能体。

我有一个梦想,未来的软件工程师不用再为维护数据库加班熬夜,各种数据相关的问题都将被数据库自动且妥善的处理;

我有一个梦想,未来我们对数据的处理将不再碎片化,任何业务系统都能够方便的存储和获取数据;

我有一个梦想,未来的我们在面临数据的洪流时候,能从容地以不变应万变。

最近我听到一句话,我个人很喜欢:雄心的一半是耐心。构建一个完美的数据库并不是一朝一夕的工作,但是我相信我们正走在正确的道路上。

凡所过往,皆为序章。