1. 总述
数据库软件虽然只是一类基础软件,但其实数据库一定是一种应被大量使用的软件。一种好的数据库产品,一定要有更多的客户不断地在更多的场景中使用的,闭门造车很难研发出一款好的数据库产品。在长期的实践中,无论是方案、研发,或是架构,数据库产品都需要与客户的业务场景进行深度磨合。
传统的数据库有一个最基本的概念——事务Transaction,其最早来源于银行转账的场景。如从A账户给B账户转100元,在这个过程中A减100元,,B加100元,这个减和加的过程需同时存在。因此,出现了事务的概念,这是传统业务对于数据库的要求。
在一些新兴行业中,尤其是互联网时代,它对数据库提出了许多全新的需求。在互联网的大背景下,或是站在业务更加在线化、数据更加智能化的角度,这些需求又十分地普世性。
2. 以游戏行业介绍PolarDB的发展
以游戏行业为例,大型游戏都是由小型游戏逐渐发展而来的,如游戏中各个角色的装备、属性等会随着游戏的发展越来越丰富,对应到数据库中,其数据结构越来越复杂。且数据结构无法从最初就确定下来,因此,游戏开发者会使用文档数据类型来作为它开发的主要数据模型。而传统的数据库对文档的支持性较差,多将其当作大的内存块编辑写下。
第一,随着业务的发展,数据结构不断变化,占用的内存越来越大,相关字段会由最初的几个字节,扩展到几百KB,甚至到几MB。如果很多用户同时进行写入数据库的操作,每次写入都带来几MB的流量,这将对数据库造成巨大的冲击。为此,PolarDB采用了数据结构不断变化的场景。如今,这种基于文档的开发已经十分常见,因为在现代应用的开发过程中,我们最初很难确定相应的数据模型,传统数据库中以对业务清晰建模为前提的实体关系模型已经不复存在,这是由现代应用开发业务发展的不确定性决定的。
第二,PolarDB的杀手锏之一是其备份恢复能力十分强悍,耗时很短。由于客户的业务越来越趋向于在线化,因此其对备份恢复速度的要求会越来越高。以大型游戏为例,它通常需要定期更新版本,而每次版本更新都需要停止运行服务器,官方也经常会发出停服的公告。对于一个全球化的游戏,24小时都会有用户访问使用,如果每次更新都要停服6小时,将会对游戏经营方带来巨大的损失。而在停服过程中,数据库的备份恢复时间往往会占到1/3 ~ 1/2,剩余的一半时间是在处理数据,保证数据的正确性。如果备份恢复时间从三个小时降为10分钟或20分钟,对用户而言则会提高很大一部分收益。
第三,闪回能力。在游戏用户发生数据错误时,如购买的装备消失,体力值下降,这一系列数据错误会给用户带来非常糟糕的体验。假设可以找到过去某段时间正确的数据状态,传统的做法时将该时间点的份数据提取,创建新的实例,然后就行数据的备份恢复,再验证数据,但这样的过程通常需要几个小时,非常耗费时间。而有了闪回能力,我们能够在分钟级实现历史数据状态的查询,进而提升用户的体验感。
因此,可以说,PolarDB以及阿里云数据库其他产品的产生,都在紧跟着客户的需求而发展。在游戏行业、SaaS、物联网,以及很多对分析类、高并发、实时性、复杂分析有一定要求等场景中,阿里云在更加紧密地贴合用户需求的基础上,不断进行数据库功能的研发和技术创新。