行业底层技术焕发生机总是令人感到惊喜和可贵。数据库作为基础软件的主要组成部分,在行业内的话题度也在一路走高,如今已是最火的一个板块。云原生、分布式、开源,如今谈数据库离不开这些关联词。10 月 14 日,一档专为数据库行业制作的《数据 cool 谈》栏目,邀请华东师范大学副校长、资深数据库学者周傲英、PingCap 联合创始人兼 CTO 黄东旭、阿里云数据库产品事业部负责人李飞飞、InfoQ 主编王一鹏畅谈数据库。
为什么数据库这么火?迎着时代的风,2020 年 4 月,数据被正式列为与土地、劳动力、资本和技术并列的“第五要素”,重要性凸显。在资深数据库学者周傲英看来,数据的事情如今是社会层面的事情。在互联网行业快速发展的大背景下,数据量大爆发,而 IT 行业的发展目的是解决复杂问题,数据管理方式的改变自然而然。
一个明显的变化是,互联网时代的数据库管理方式与 C 端或者说使用端用户密切相关,不只作为基础软件,还开始作为应用软件进行数据管理。“在计算机核心的研究学科方向里面,数据库是最靠近应用的。”周傲英谈道。应用的变化和基础设施的变化,推动身处其中的数据库发生本质上的改变。从传统的企业级应用变成互联网应用和万物互联的应用,应用在发生巨大的改变。底层架构方面,早先是冯·诺依曼架构,步入云计算时代后,计算资源池化,形成“上层万物互联,底层万机(服务器)互联。”传统数据库技术无法解决的问题,交给新的数据库技术来解决。
想要实现底层基础设施池化后,再进行资源解耦,需要先解决很多问题,比如如何面向应用变化?如何面向基础设施变化?如何应对计算存储网络的变化?云原生应运而生。“以前我觉得做技术的要引领这个时代,后来才感觉到行业时代巨大的时代推动力。”李飞飞感慨。“技术走在需求之前”是业内广为流传的一个说法,但是现在的技术思路是“螺旋式”,既有需求推动技术的一面,也有因为相信所以看见的事情。
系统的复杂性是如今数据库行业面临的最大问题。黄东旭认为,摩尔定律已经失效,不会再有单机系统搞定一切的情况,上百台的服务器是无法进行管理的,所以数据库将迎来两大发展趋势:
“未来有一个统一的平台,屏蔽掉底下引擎的复杂性和在引擎之间切换。”李飞飞补充道:“周老师当年讲的一句话对我触动非常深,说让数据无缝地自由流转起来,我觉得这是非常有先见之明的一句话,这一定是未来一个很重要的趋势。”在他看来,数据库系统想要做好,管理好复杂的系统资源,需要“顶天立地”——向上面向应用,向下管理资源。李飞飞认为,数据库是整个基础软件领域上浮过程中的必经之路,也可以称为华容道,和上层应用发生交互必须要通过数据。
“对,我觉得这个是一定会发生的一个事情。”李飞飞斩钉截铁地说,“我们很多的客户、用户的 IDC 的环境里面,基础设施这一层已经是一个云化的部署方式了。操作系统体系结构向上发展过程中,数据库系统是必经之路,底层的基础设施云化以后,对于上层的数据库系统带来的挑战和机遇,就是怎么样更好地去将底层的资源池化、资源解耦优势发挥出来,给用户带来这种高可用、可拓展性、弹性的便利。我觉得对所有的用户、所有的应用场景来讲,这都是一个必然去选择的一条道路。”
黄东旭也深表赞同,业内有一个常见误区:对于辨明主备两台机器属于单机数据库还是分布式数据库抱有疑问。“其实有很多时候,我们在讨论一个事情的定义是特别重要的。”黄东旭举了一个例子,分布式是用来解决大数据的问题的吗?其实很多分布式技术是用来解决类似 self-healing 或者说高可用的问题。未来的系统会变得越来越复杂,手动拉起挂掉的系统是不可规模化的,所以分布式技术会在各种场景中节省人的精力,避免出错。
的确,数据库螺旋式上升发展到新阶段的同时,云也在深化发展。云服务是什么类型的服务?周傲英认为,云服务是处理数据的服务。分布式数据库从系统到应用,都是分布的,他提到,分布式是对数据库的扩展,云原生和分布式是正交的,有强相关性。“我觉得云的很多技术,底层也是在依靠分布式系统的。”黄东旭认同道。
李飞飞认为不是,他认同周傲英提到的两者关系是交叉的,但觉得云原生和分布式如今已经融为一体。如果底层基础设施全部云化,人们思考技术问题的角度自然变成“云原生”角度。“今天很多人觉得云原生数据库不就是这样吗?其实不是,真正的云原生需要你彻底理解底层池化和资源解耦以后,重新设计系统。在这个基础上,分布式不是一件必然的事情吗?”李飞飞谈道,“谁能够把云原生和分布式技术结合得更加完美,从系统设计的角度,从应用使用的角度,我觉得谁就会在未来的市场竞争和产品竞争中占得先机。如果大家今天还是把云原生、分布式对立起来看,我觉得是有问题的。”
细数历史,云原生数据库也并不是一个新鲜的概念。当我们回过头来看,李飞飞认为,Oracle RAC 就是云原生数据库,只不过是在当年的硬件资源环境下只能做小范围的池化。Oracle RAC 是 Oracle 公司针对数据库高可用提出的解决方案,通过对集群内部服务区存储的统一管理,实现集群内部数据库的高可用,进而对外实现提高系统性能、可扩展和降低成本等服务。
“我觉得 Oracle 的人真的还是很厉害的,他们当年不光做了池化,它甚至在 Oracle RAC 上还要去做多读多写,今天我们云原生数据库可能还没有一个真正能够去完美支持多读多写的。Oracle 做了,还是在存储层做的,但是它这个读写路径太长。”李飞飞感慨:“我认为 Oracle 的多读多写做的是失败的,今天旗帜鲜明说出来。AWS 的 Aurora 在存储层‘log is the database’。写进去后,通过‘log is the database’进行重做,这样就导致多读多写写入的链条特别长,latency overhead 承受不了。我个人认为这是失败的一条路。”他认为,在云原生上取得成功,一定将内存池化,这也是阿里 PolarDB 为什么要做内存池化的原因。
对于第一个问题,黄东旭的答案是“是”,TiDB 就是最好的证明。在他看来,数据库之类的基础软件核心竞争力就在于迭代和进化,随着需求越来越敏捷,一招鲜吃遍天已经过时了。“我一直相信没有完美的软件,也没有完美的程序员。”黄东旭提到,想要写出来完全没有问题的东西是不现实的,开源能够让足够多的人、足够多的眼睛参与到项目中,帮助项目更早暴露问题、解决问题。“相当于不是一个人在弄,是整个社区和生态,相当于是撬动了整个社区的力量。”
另一方面,数据库作为通用基础软件,行业属性偏弱,天然具备开源的基础。作为重要的行业基础设施,开源是很好的“降低成本、广纳客源”的一种方式。在黄东旭看来,为了避免像过去一样“为爱发电”,云可以帮助产品交付标准化、可规模化,完美解决了开源软件商业化的问题。他感叹:“这就是为什么我觉得这个年代是做基础软件的好时代,也是做开源软件的好时代。”
在李飞飞看来,开源如今成为数据库的必选项是“人为”:一群非常出色的人将开源作为技术演进路线上的必选项,触发了整个行业环境发生“物种大爆发”一样的变化,适者生存之下,开源从数据库的非必然选项变成了必然选项。从自身云厂商的角度出发,李飞飞毫不讳言开源为阿里云带来了很多好处,其中之一是“加快了物种进化的速度”,让越来越多的人开始使用阿里云的系统。
当然,开源和商业化中存在矛盾点,但李飞飞认为二者同时也在互相解耦,关键在于企业如何处理。开源成功未必有很好的商业化结果,但是如果商业化结果很成功,也未必一定要开源。“对我们云厂商来讲,最重要的也是生态,也是开发者,也是用户,是不是能够用足够低的门槛来使用我们的产品和系统,这个永远是我们的第一思考。”李飞飞提到,如今开源的核心是要把生态建立起来,把握好开源和商业化之间的锚点。厂商开源一部分核心能力,和大家一起建立好的开源社区,加快演进、迭代速度。
“商业化的成功是技术进步的前提”这一观点在现场达成了共识。周傲英也表示,“开源跟商业本身不是一回事,只有企业才能把开源得有商业价值。我们要重新定义知识产权,要重新来审视我们对知识产权的理解,只有企业在实践中才能知道。”在他看来,开源是创造性生产方式的改变,有非常重要的社会价值,甚至是哲学价值。从 Hadoop 到 Ingress、MySQL 和 PostgreSQL,细数数据库开源发展历程,周傲英强调:“开源就是一种自发的行为,开源就是开放,开放才能创新,开放才能很好地迭代。开源做数据库的目的是什么,让每个人都来参与数据库的开发。”
行业有关注度是好事,但凡事过犹不及。行业热度下,一些问题也逐渐暴露出来。在黄东旭看来,目前开源产业有三大问题:
但是他仍然乐观:“这个领域很有希望,最怕死水一潭,没人关注,我觉得反而是有困难就意味着这个有希望。”
李飞飞也表达了自己的担忧:部分开源厂商的开源并非原汁原味的开源,开源社区也不一定是真正的开源社区,不仅仅是技术问题或者商业问题,非常复杂。“他们是不是在真正尊重这个知识产权或者是这个项目的原作者的知识产权。其实我觉得不见得所有人都是有共识的。”黄东旭补充道。
当被问及理想中的开源生态是什么样的?黄东旭认为,企业是建设理想开源生态的发动机,做开源生态不能想着为了赚钱,构建生态是需要花钱的,真正好的生态要构建在共识和标准之上。
李飞飞总结道:“理想的开源生态我觉得是一个从教育产业到 non-profit,大家都能够去参与到其中去的。我觉得拿英文来说就是 Stakeholders,至少是所有主要的 Stakeholders 能够在一个有序的良性的生态里面去共生共存,我觉得这是我想到的未来的一个趋势,今天我觉得我们在往这个方向演进,这条路上还是任重道远的,还有非常长的一段路要走。”
风物长宜放眼量,期待理想的开源生态实现的那一天。