随着数据快速增长,数据库稳定性问题导致的故障也越来越严重。我们先看几个具体的例子,是ChatGPT帮我找的:
2016年,某社交网络应用的一名工程师在修改一条SQL查询时犯了一个错误,导致了该公司的服务在全球范围内停机。该错误导致了数据库中某些表的数据无法访问,最终导致了整个系统的故障。
2017年,某电商企业曾因一次故障而导致其S3服务在美国东部地区停机。事后调查发现,该故障是由一个错误的删除指令引起的,这个指令本来只想删除一小部分数据,但由于编写了烂SQL,结果导致了整个数据中心的数据丢失。
2018年,某云厂商的云存储服务出现了一个故障,导致一些客户的数据无法访问。调查后发现,这是由于一个工程师在修改数据库的查询语句时犯了一个错误,导致了整个服务出现了故障。
我其实也问了中国大陆地区的情况,ChatGPT的回复也是有很多例子,但是不能够告诉我具体的公司名称,看来目前还是很保护中国大陆厂商的面子的,这背后不知道是否有团队在帮助做一些工作。
这些例子,比如烂SQL导致的系统不稳定,在数据规模不大的时候都不成为问题,但是目前的趋势就是数据规模越来越大,数据库作为保障信息系统稳定性的重要兜底装置,身上的担子就越来越重了。
近些年在数据管理领域的很多挑战,根本原因都可以归结到数据快速增长。信通院的报告显示,中国数据库市场规模近几年保持25%左右的年增长率。
表面上我们看到的是,数据存储规模在快速增加,数据库市场规模在不断增长。我们服务的用户场景,有一些具体的例子:
从数据库开发者的视角来看,或者说从数据库开发工具的视角来看,这背后数据库的实例数量、数据库实例内存储的对象的数量、使用数据库的业务系统的数量、以及数据库厂商的数量、数据库从业人员数量,都在不断地增长。
伴随着上述的诸多变化,给数据库的使用带来了很多问题,近些年在数据管理领域的很多挑战,根本原因都可以归结到数据快速增长。
数据快速增长,应用数量也不断增长,个人、企业的敏感数据流通范围更广了,数据带来的隐私泄露问题也越来越严重。这几年我们国家从顶层设计、法律法规、行业规范、企业自主意识方面都对敏感数据保护越来越重视。
列举一些近些年我们国家颁布的,一系列关于保障信息安全的法律法规和行业标准。
在数据安全之中,数据库扮演至关重要的角色,保证数据不泄露、丢失。数据不丢失是由ACID来保障的,不泄露则需要业务应用系统来和管理工具一起保障。很多客户已经开始重视这个问题,正在寻找解决方案,但解决方案并不普及,目前行业方案还不成体系,配套的开发工具也不够成熟。
数据量在快速增长,数据库实例数量在快速增长,行业的从业人员也在快速增长,但是不同角色并不是等比例增长。
在十几年前,一个OracleDBA管理的数据库实例规模在25个左右,总数据规模在5TB左右。现在的数据规模,如果按照之前的模式,DBA数量是远远不够的。此外,我们发现数据分析师角色人数也逐渐在增长,不同角色在和数据库打交道的时候,工作方式是不一样的。比如数据分析师,几乎不会去用Java连数据库做事务提交,更多的是写SQL、Python脚本等,然后在团队内也有协同的诉求。
从比例去看,DBA和总协同人数的占比甚至小于1/100,在大型互联网公司,这个比例已经接近1/1000。
我们选取了OceanBase服务的用户场景的数据库开发协同过程,不同角色的人员规模,出于保护客户信息的需要,这里的人数是一个近似值而不是准确值。
伴随数据增长产生了很多变化,这些变化导致各类风险的出现或者加剧,我们观察到的挑战,包括以下3个类别。
应对风险,不同行业、不同规模的企业也采取了很多办法,各有各的招,这里举一些典型的实践方案。
大型传统企业:通常采购数据库特权访问系统,基于特权系统的权限管控、SQL审核等功能,数据库特权访问管理系统也叫作数据库堡垒机,会和数据库客户端工具集成来实现权限管控,通常这些功能更多的应用于生产环境而不是开发环境;
大型互联网企业:通常选择自研平台,有独立团队负责开发维护数据库管控平台,对数据库变更过程、运行过程进行全流程管控;
中小型企业:私有云大量采用开源组装,开源产品选择面比较多,但是单一开源产品支持的数据库类型比较单一,功能也不够丰富,所以需要进行组装;
中小型企业:公有云直接依托云服务厂商提供的内置服务,比如阿里云RDS的用户直接使用DMS。
蚂蚁集团数据库开发的协同过程,整体是面向业务Developer视角来看的,因为业务侧才是需求方。
下图是Developer和DBA的协作模型,DBA负责资源规划和审批、部署运维、监控诊断、故障处理、变更审核,开发者负责资源申请、数据库变更。其中资源申请、权限申请、数据库变更等关键操作,需要业务方负责人和业务归口的DBA审核确认后才可以执行。
这里列举蚂蚁集团DBA日常工作中,使用的几个主要的系统:
上述系统大部分是DBA使用,Developer和DBA协同的主界面则是ODC。除了基本的资源申请和变更管控,ODC还提供了一系列用于保障数据安全稳定的功能,比如风险识别、高危操作管控、勿删应急等功能。
我们调研分析了一些数据库开发工具,范围涉及国内市场、海外市场,包括云服务和桌面软件,有商业工具,也有开源免费的工具,通过这些工具我们可以发现协同开发逐渐成为主流。
这里先列一个清单,是这两年从用户侧了解到有在使用的一些工具。
此外我们也看到这两年有一些新的产品出现,比如Bytebase、NineData等。
其中作为云厂商基础设施的,最典型的是DMS,DMS是阿里云的数据库开发安全管控产品,类似的还有华为云的DAS等。
MySQL生态,有不少开源工具产品也被大范围地使用,典型的如Yearning、SOAR、See等。
这里也列一个表格,和国内工具产品不同,海外市场商业工具更加成熟,开源工具更侧重于基础开发功能。
这里举两个比较特殊的产品,Navicat和Bytebase,这两个产品各有典型性。
作为广受开发者喜欢的数据库图形化客户端工具,Navicat给大家的印象更多时候是一个面向个人开发场景的工具。实际上Navicat也提供了协同能力,如NavicatCloud和NavicatServer,可以让用户在不同的设备和团队中共享和协作数据库。用户可以将数据库文件保存到NavicatCloud中,从任何设备上访问和编辑数据库。
NavicatServer则提供了一些高级功能,如用户管理、权限控制和版本控制等,可以帮助团队更好地管理和保护数据库。
Bytebase是2021年国内团队做的数据库协同开发工具,也是开源模式,高阶功能需要收费。基于项目进行协同,以数据库对象为管控目标。Bytebase也提供SQL检查、数据库变更流程、Git集成、备份恢复等功能。
作为数据库开发工具,我们在最开始看到是数据增长带来了一系列变化,并因此带来了系统稳定、协同效率和安全合规三个方面的问题。这个是大的趋势,我们认为数据库开发工具需要去解决这些重要的问题,但是具体到数据库开发工具还需要去做哪些考量,我们不能脱离数据库行业整体的一个格局和趋势,所以首先我们来看数据库行业的一些现状以及趋势。
刚开始看到DMS的时候,我其实觉得还挺强大的,不仅支撑了阿里巴巴、蚂蚁集团大规模业务场景下的数据库协同,也适用于各种阿里云数据库产品的开发和管控,功能非常全面。并且我也去找了国外的竞品,比如AWS/Azure等产品并没有类似的DMS这样强大的数据库管控功能。
那么事实果真如此吗?数据库全行业看,2021年全球数据库市场规模为697亿美元,其中中国数据库市场规模为47亿美元(约合305.8亿元人民币),占全球5.2%;美国开源与商业数据库数量基本持平,我国商用和开源占比分别为83.4%和16.6%;国内MySQL生态为主,海外PostgreSQL生态更活跃;国内数据库协同开源项目较多,海外开源项目以面向个人开发者为主,商业数据工具普遍在往DevOps方向发展。
混合云和多云的发展,可以说是客户驱动云厂商在做产品形态变化,中大型客户不再愿意被一家云厂商绑定。我们看到越来越多的行业场景在做应用架构、数据库架构的时候,混合云和多云成为趋势。这里混合云指的是公有云和私有云混合使用,此时云厂商一站式解决方案不再可用。
为什么这么说,因为TP和AP都有非常优秀的产品在做了,其中有一些还有显著的优势,那么我们是选择做一款更加厉害的TP产品,还是做一款更加厉害的AP产品好呢?每个厂商有自己的答案,对于OceanBase而言,我们相信TP和AP都可以,首先TP是我们的优势,而AP我们也做得不差,那就是HTAP。
话虽如此,当时实际上这个过程没有那么简单,有很多问题需要去解决,我们可以预见在几年之内,TP+AP混合场景仍将是主要场景。但是无论是TP+AP,还是HTAP都对开发工具提出了新的要求,实际上是一套库,还是多套库不是最关键的,最关键的是数据协同的角色,写数据的人和分析数据的人会比以前更加紧密地去协同,这个时候数据库开发工具就需要具备数据同步、全局对象检索MetadataCatalog、多角色协同等相对应的一些能力。
上面我们讲了市场格局、混合云和多云的趋势、还有HTAP或者说TP+AP这些新的场景,这里我们汇总一些具体到数据库开发工具方向,未来会是怎样的趋势,我判断会有5个趋势。
这是是我们今天讲的核心,数据库协同开发会越来越流行。
这一点是对协同开发的延伸,从开发工具到数据协同平台,这里有个概念叫做DataOps,目前为止还不是那么清晰,Gartner去年的报告对DataOps领域做了一些解读,认为未来三到五年会形成一个清晰的市场。
我们会看到数据库开发工具会兼具TP场景和AP场景下的功能。
集成主要是账号系统、审批系统的集成;被集成则是需要产品能够提供API,易于二次开发。
从两个方面去看:一方面是云,目前国内市场数据库60%以上的份额,已经在云上了,而且大家不愿意被一家云厂商绑定,所以跨云的SaaS是很自然的结论。
另一方面,软件业的开源趋势应对全球市场的优势,特别是在现在跨地域、跨云的场景下,在数据管理领域,被全球更广泛的客户信任非常重要,那么你的服务形态一定是SaaS。此外,还要用最低的成本获取更多地区的客户信任,答案就是开源了。所以我认为未来的趋势,开源和SaaS是必然。
正是由于数据的不断增长,带来了数据库稳定性、数据安全、协同效率等三大挑战,云数据库、混合云、HTAP等数据库技术和使用趋势,又给数据库开发工具提出新的功能要求。所以数据库开发工具需要提供更加完善的功能,帮助DBA减轻负担,从而提升数据库开发和运行效率、保障数据库稳定运行。
目前,OceanBase针对上述问题已经有了自己的一套解决办法,我在这里简单介绍一下OceanBase的开发者中心即ODC,这几年它从一个数据库图形化客户端工具,逐渐变成一个面向协同开发场景的管控平台。
OceanBase的功能有很多,不仅有图形化的客户端工具,还在系统稳定,协同效率方面都有功能提供,上图中,黑色字体是已有的东西,蓝色是正在做和今年会做的东西,今年我们将在SQL开发、协同效率、系统稳定、安全合规四个方面做各种各样的优化。