现在国内数据库市场正百花争春,数据库产业也取得很好的发展。在刚刚举办的第15届中国数据库技术大会(DTCC2024)上,我们看到了各方的热情和更加务实的讨论。所谓务实,便是既仰望星空,又脚踏实地,这样才能走得长远。
中国数据库的繁荣既有长期因素,也有短期因素。做数据库是长期主义,我们不仅要立足当下,还要考虑长远的未来。中国数据库如何才能保持长远繁荣?用户现在使用的数据库未来有没有被淘汰的风险?现在世界主流数据库发展趋势又是什么?
OceanBase首席科学家 阳振坤(正祥)
OceanBase首席科学家阳振坤是低调务实的数据库人,在会场带来了他深刻的观察和思考,我们也有幸在会后采访到了阳老师。他强调,数据库与语言、文化、地域是弱相关的,中国数据库的发展一定会融入全世界潮流里面去,因为数据库本身就是在全世界范围内竞争的产品,很难说一个数据库只能用于某个语言或者某个地方。
云数据库已经成为全世界主流
如今云数据库已经成了全世界的主流,根据Gartner公开数据,全球范围内云数据库超过了 60%,云数据库增量贡献已经超过了90%。从数据库厂商占比来看,市场份额大于5%的4家数据库厂商中,有3家都是纯粹的云厂商。
为什么是云数据库?我们知道产品的演进由需求和供给决定,数据库的演进也可以从这两个方面来分析。
从需求端来看。福布斯技术委员会曾提出15个数据库不可或缺的需求,以下是比较重要的三点需求:
一是,扩展性(Scalability,伸缩能力)。如今业务更加复杂多元,数据量和并发量变得越来越大,弹性扩缩容能力非常重要。
二是,应用敏捷(Application Agility),福布斯这里强调的是数据库既要有交易处理能力,也要有分析处理能力,还要有多模能力。也就是需要能支持HTAP混合负载,也能处理多模数据。
三是,总体拥有成本(TCO,Total Cost Ownership),包括数据库采购、运维、升级、培训等所有的成本。
从供给端来看,云已经成为新的IT基础设施,数据库的底层环境已经从传统的硬件变为云环境。云带来了很多好处,一方面,云更加易用,能够实现动态伸缩、按需使用。另一方面,云可以实现计算、存储、网络、服务资源的共享和复用,带来了降本增效。
不难看出,云能为数据库带来了用户所需的扩展性、低成本等特性,云数据库自然顺理成章地成为了世界的主流。
当前云数据库的不足
云数据库经过多年发展,目前还没有统一的定义。赢得用户才能赢得市场,能很好满足用户需求可以作为好的云数据库的衡量标准。如此来看,当前云数据库还存在很大不足。
比如用户非常看重的扩展性(伸缩能力)方面,如今云上数据库使用很广泛的MySQL和PostgreSQL两个开源数据库都是单机数据库,可以很好地垂直伸缩,但是水平伸缩会受限,无法很好复用云资源,造成云资源的浪费。比如,某云虚拟机是由多台100个CPU的物理机组成,某个业务在高峰时需要6个CPU扩容,如果此时没有一台物理机空余6个CPU,便无法实现垂直扩容,物理机中空余的CPU此时便无法发挥效用。
另一方面,从应用敏捷方面来看,云数据库应该能支持HTAP混合负载,支持多模处理,简化IT架构。当前云上数据库主要还是TP库和AP库分别单独部署,中间通过ETL把TP库中的数据同步到AP库中进行分析。这样的系统其还存在不足,多个技术栈使得运维复杂,一些Zero ETL概念本质上还是ETL,只不过把某些细节隐藏到背后去了。一个系统同时支持交易和分析的能力依然缺失,更不用说具备多模能力了。
阳振坤认为,云数据库本质上还是一个数据库,需要数据库基于云的环境构建己身,借鉴或参考云的易用性、资源动态伸缩、按需使用和按需付费、资源池化和复用等特性,实现比原来传统环境更加易用、效率更高,更进一步降低成本,更好地满足未来业务对数据库的需求。
数据库想要乘云而上,还是要在数据库本身下功夫,将原来数据库直接搬上云是不太可行的。
什么是好的云数据库?如何实现?
综合来看,分布式HTAP数据库能够很好地发挥云优势,满足用户的需求。
首先,分布式架构既能实现垂直伸缩,也能实现水平伸缩。上面提到的业务高峰期需要6个CPU扩容,如果支持水平伸缩,就可以找2台空余3个 CPU的机器或3台空余2个 CPU 的机器解决此问题。垂直伸缩是在一台机器上扩展,水平伸缩可以使用多台机器扩展,这样能够充分利用云的资源。
HTAP在理想情况下要在一个数据库甚至一个事务中,既能执行交易型的SQL 语句,又能执行分析型的SQL语句。这样的业务场景有很多,比较典型的如财务系统的分析能力需求,对于中小企业而言,单独架设一套风控系统有很高的成本,最好的方式是在财务系统里面做一些在线实时风险判断。需要系统同时具备一定的分析能力来支持风险评估。即便需要TP库和AP库隔离开,主库使用行存处理TP负载,备库使用列存处理AP负载,依然属于同一个数据库范畴。这样的系统是单一的技术架构,相比于ETL技术栈,同样简化了系统复杂性。
所以,分布式架构的HTAP云数据库有更大可能成为好的云数据库。
小结:未来云数据库的展望
当前云数据库还在随着云环境以及需求的变化而不断演进,还有一些挑战需要克服。
在应用敏捷性方面,未来随着技术的发展,数据可能既不是单纯的行存,又不是单纯的列存,而是行列混合,但是HTAP实现行列混存自由转换存在挑战,目前已知比较可行的方案是使用LSM-tree存储,把整个数据分成基线数据和增量数据,并在系统相对空闲的时候把增量数据合并到基线数据。
但是使用LSM-tree作为数据库的存储子系统与传统数据库的定长块原地更新相比,差异很大,会带来一些挑战。比如,对于SQL优化器而言,传统数据库只需要处理定长块这一个模型。如果采用LSM-tree,内存里插入或删除了大量的数据,但基线数据并没有真正修改,这对SQL优化器的代价模型有比较大的影响。
尽管当前大部分分布式数据库都具备垂直伸缩、水平伸缩和动态伸缩能力,但是敏捷性仍然不足。当下没有可用的分布式共享存储,几乎所有的分布式数据库都是Shared-Nothing架构,数据在每个节点上,无论是云盘还是本地盘,扩缩容都需要进行数据复制,带来很大的时间、IO带宽、网络带宽消耗,无法保证伸缩的敏捷性,这仍是行业内需要继续探索和改进的方向。
独行快,众行远。阳振坤认为,百花齐放才是春,中国数据库的繁荣需要大家一起努力,与世界接轨,不断创新探索,才能走得长远,脚踏实地,一步一步从国内做到海外,真正走向全球技术竞争的舞台。