云·创数据库公开课第1期 | 腾讯云:新基建大潮下国产数据库的探索与思考

6月中旬起,量子位发起了以数据库为主题的系列公开课,邀请来自腾讯云、浪潮、蚂蚁集团等头部企业的数据库技术线负责人,围绕数据库的行业现状、趋势与技术进展等内容,以线上直播的形式为大家带来3期分享。

6月17日第一期直播中,腾讯云数据库副总经理—王义成全面剖析了全球数据库的发展历程,同时分享了如何将云计算、新基建、数据库的能力进行融合创新,以及自主创新研发新型国产数据库技术背后的历程。此外还结合实际金融案例,详细介绍了腾讯云自研国产数据库TDSQL和TBase的产品核心架构和最佳实践。

直播回放:

以下是分享内容实录:

数据库行业发展剖析

中国数据库行业发展史

首先我们回溯一下中国数据库行业发展史。中国数据库行业的起源是在恢复高考之后(1978年),当时萨师煊老师出版了中国第一部数据库教材《数据库技术概论》,当时国防、军工等很多核心领域开始应用数据库。90年代初,中国商业数据库的格局初步形成。1989年,Oracle正式进军中国,依靠强大的生态、服务体系和产品优势,垄断了金融、电信等许多行业,占据了中国数据库市场份额的半壁江山。

2000年起BAT相继创立,而当时Oracle价格昂贵,互联网公司资金有限的情况下难以承受庞大的数据库商业费用。所以在这时,以MySQL为首的开源数据库就开始与互联网公司进行碰撞了。MySQL在互联网公司呈现了一统江湖的状态,丁奇等优秀的开源技术领袖都是在那个阶段开始逐渐涌现。

2010年4G开始大批量使用,2011年相继出现了很多优秀的互联网公司,如美团,滴滴等。到2013年这些优秀的公司开始迸发,一直到今天,这波互联网红利还在持续地演进。这个阶段是互联网百花齐放的一个阶段,消费互联网还在延展,并且正在进入消费互联网和产业互联网结合的阶段。To C领域的消费互联网,还在大批量的迸发,诸如拼多多等破千亿美元市值的公司还在出现。

所以我认为,从2013年到现在,优秀的应用、公司开始涌现之后,也迎来了业务多元化高速发展的阶段。我们也看到这些优秀的互联网公司里开始不再只是MySQL一种引擎去支撑公司的业务发展。像Postgre、MariaDB、Redis、Cassandra、MongoDB等优秀的开源数据库也都开始在这些互联网新贵的核心业务系统中承载很重要的作用。

数据库商业模式变迁

换一个维度来看,数据库的商业形态、商业模式上到底有什么样的变迁?

刚才讲到90年代Oracle数据库开始进军中国,这是一种传统商业数据库的模式,以卖license、卖服务的模式来提供商业价值。这种模式以Oracle、SQLServer、Informix、DB2为代表,这种商业模式已经存在了多年。今天早上我看了Oracle公布的第四季财报,整体收入同比下降6%;软件license的收入同比下降超过20%。从财报的数据可以看到,这种传统的商业模式正在被逐渐的侵蚀,客户的付费模式在发生变化。这时一定有新的商业模式来替换。

再看中间“百花齐放”的几个发展阶段,又可以分为三大类。第一类是老牌国产数据库,如达梦、人大金仓、南大通用等以高校为背景成立的优秀数据库公司,他们的模式跟商业数据库很像,但是他们有新的响应模式,他们切的是老的党政机关政务内网、政府等一些集中式的数据库场景。

随着时间的延伸,逐渐出现第二类—开源商用数据库,MySQL、MongoDB、Redis等优秀的开源数据库出现。但开源总归是一门生意,它是一个闭环的商业模式。国外有很多优秀的商业公司在后台运作这批开源数据库,来为用户提供更加高价值、或者企业化的服务,来完成它的商业模式闭环。比较有代表性的比如MongoDB atlas,它把MongoDB做开源之后,提供atlas云服务,也提供线下的企业版服务,来形成商业模式的闭环;而RedisLab主要是以色列人和美国人建立的,利用Redis开源软件逐渐的实现它的企业级功能,然后为用户提供服务。

第三类是新晋的国产数据库,他们的商业模式本质上没有变化,而是切入了更新的场景。比较典型的代表有PingCAP、巨杉等,他们提出的场景是出于用户的开发者高效运维的角度来切一个特定场景,然后用传统的企业软件模式或者license模式来切这部分相应的市场。

最后就是云服务模式的到来,即云服务厂商来提供相应的数据库服务。不再是提供license授权、或提供人工服务,而是采用租用模式,改变了整个数据库商业模式。比如腾讯云、阿里云、AWS数据库,都是云服务厂商基于开源数据库或者商业数据库做相应的产品化、商业化的工作,为用户提供租用数据库服务。

国产数据库布局

上述我们了解了近30到40年数据库行业在商业模式上的大变迁。下面我们聊一下国产数据库的布局。在中美贸易战背景下,包括类似Matlab软件使用限制事件发生后,国内有很大的声音在呼吁做自主可控的“中国芯”核心组件。而我们认为,IT基础设施三个最核心的组件,一个是服务器/芯片,一个是操作系统,另一个就是数据库

国产数据库有哪些商业模式和应用场景?

第一类是传统国产数据库,由高校系的老师带领团队做产品化和商业化的运作,比如达梦、金仓等,更多的是贴合集中式数据库场景,他们的具体客户案例以集中式数据库偏多。

第二类是互联网厂商性质的数据库(也包括华为),这类的数据库厂商就是自己使用,自己的数据库在自己的业务中做了很多的独特的打磨,然后在自己的这种大规模的并发业务中,承担了很多的流量之后,再把这样的数据库去产品化,提供给广大用户。以腾讯和阿里为代表,腾讯的像TDSQL,TBase都是支持内部的微信支付,财付通,有很大的交易流量,之后再逐步产品化,给外部用户使用。像阿里的OceanBase可能也是这样的,内部支持蚂蚁金服,然后再去逐渐的开放给广大的传统行业去使用。

第三类就是新兴的数据库,说新兴是因为他们不是一种传统高校的背景,也没有他们自己的数据库,也没有自己内部的一个场景,但是他们确实看到了用户使用上的一个痛点,从一个细分场景去切,然后逐渐的去把这种商业的盘子做大。比如像PingCAP这样的数据库,他们刚开始起步的时候,出于用户使用分布式数据库开发角度,或者说运维角度的不便利,使用传统的计算跟存储分离的模式,然后以一个统一的使用方式去调用分布式数据库,然后切到了相应的场景去做线下的产出跟商业化的操作。

第四类就是第三方平台型的数据库,这类一般是指公司在某个行业有多年积累,然后根据这个行业的特定场景做一款数据库,之后再逐步推广到其他领域,比如亚信,中兴。亚信是一个运营商行业老牌公司,对于运营商的一些核心业务系统,他们使用了适用于这些业务的数据库,再从运营商推广到其他行业,逐步的产品化。

综上,目前我们国产数据库也是一个百花齐放的状态,大致可以分为这4类。我认为第二类的数据库厂商可能是更适合于在现在的大环境,因为它毕竟是在大规模的应用上已经自己磨练出来了一套相对稳定、功能相对齐全的一套数据库,然后再去应用不同的场景,再把这样的数据库推给更多的用户,更多的行业去使用。我认为这种模式在工程化跟商业化实践中,更容易摸索出一条成功的道路。

新基建对数据库行业的机遇

第二个话题是关于新基建对于数据库行业的挑战和机会。新基建包括了大概7个领域,包括5G基站、城际高速等,其中跟产业互联网相关的,主要是5G、大数据中心、人工智能、工业互联网这几个领域,我总结新基建主要分为三个部分。

第一部分是信息基础设施,包括三部分,一是通信网络基础设施的提升,比如说5G可能有上百万个基站要去部署,整个网络的提速会非常快。二是新技术的基础设施,主要是指人工智能大数据等技术怎么去应用在新的技术基础设施上实现一个整体的提升。三是算力的基础设施的提升,主要包括在大数据中心,智能数据中心,边缘计算这些的基础设施方面的布局和建设。

第二部分是融合基础设施。一是物联网的智能交通的基础设施,其中整个的数据传导、数据汇聚、数据分析,以及在这套整体的基础设施中做的整个的产业互联网的布局的加速。二是智能能源的基础设施,就是七大领域中的工业互联网,包括这些基础的组件,数据的抽取、汇集、分析、加工,以及在整体基础设施上的全面提升。

第三部分就是创新基础设施,包括一些重大科技的基础设施的提升,然后科教基础设施的提升,产业技术包括创新科技园整个创新基础设施的全面提升。

宏观上来看新基建的7大领域会大概分为这三类,那么这些方面的提升对于数据库来说到底有什么本质上的冲击?

我认为,不管怎么变化,其实数据库的作用一个是装数据,一个是运算数据,一个是分析数据,最后是呈现数据。所以对于数据库来说,新基建和基础设施的提升主要有三个挑战:

第一,数据量会出现全面井喷的状态。在4G的模式下,AR、VR等并没有很好的用户体验,但真正到了5G时代,这些相应的基础设施能力提升之后,用户体验也会随之大幅提升,带来的问题可能就是数据量会出现井喷式增长。对于数据库来说,一方面在线交易的数据库的性能会爆发,尤其是频繁的增删改查的数据库操作。需要应对这种数据量的井喷,来满足实时的进行相应的运算。另一方面是在线分析数据库的业务性,怎么能够快速的进行在线的分析,这也会对于在线分析的数据库性能有较大的挑战。

第二是业务融合多样化的挑战。数据的呈现是多模态的,各种数据需要不同模式的数据库来承载,对于数据库来说就会滋生多模的业务需求(对于不同的数据类型、对于同样的业务接口或者指标,怎样把数据汇集和加工)。另外就是场景、部署的业务融合,新基建的领域里,有智能的IDC也有大数据中心,智能中心,有这种产业互联网融合基础设施的提升,不同的部署场景,不同的部署模式或者说不同的数据中心的部署,其实对于业务的融合也有很大的挑战。数据库是否能够接受在不同的业务中心、数据中心、基础设施之间去做相应的部署和融合,这也是未来对数据库一个大的挑战跟冲击。

第三是数据自动化治理或者数据库自动化优化层面的诉求和要求。随着中国老龄化的逐渐演变,包括人才红利的释放之后,数据库人才缺口可能会更大。对于数据库的提供商来说,就是要为用户提供多种的自动化的服务,或者说是AI类的服务。另外就是对于数据库多模的现状,数据库的厂商是否能为用户提供这种自动运维的服务,也是对整个数据自动化治理的重要挑战。

腾讯云数据库发展的整体布局和应对策略

基于这样的一个大的历史机遇,腾讯云数据库的发展布局是怎样的呢?

上图是腾讯云数据库整体的产品矩阵。最底层的数据库PaaS产品我们提供了多模的数据库:包括以MySQL为代表的关系型数据库,以Redis为代表的非关系型数据库,还有分布式的数据库来支持海量的分析、在线交易,同时还有以游戏场景为衍生的支持王者荣耀的TcaplusDB数据库。

正如刚刚说的,新的历史机遇到来时,腾讯云也有数据治理、数据自动化管理方面的数据库智能服务,提供了多种数据库SaaS产品。包括怎么去做数据的迁移、怎么去做智能的DBA优化(智能管家DBbrain),另外还有数据管理服务等七八款相应的数据库SaaS产品,配合腾讯云的数据库PaaS产品,为用户提供了全栈的数据库解决方案。

为了支撑上述产品和布局,腾讯云数据库也在北京、上海、广州、深圳、成都建立了多个数据库研发团队,有自主可控的开源分支,有中国数据库社区的主席团成员,也参与一些国家云计算的标准的制定。

腾讯云数据库的自研技术思路主要包含两个维度

第一个维度,叫互联网类的数据库,腾讯云从自有的业务开始孵化,逐渐去做商业化的结合。所以腾讯云的数据库其实最早都是自有业务开始打磨,这些数据库在自家的业务上摸爬滚打多年,然后支持相应的定制来满足不同的用户需求。

比如财付通、微信支付,以及第一家互联网银行WeBank,都是先跑在腾讯云数据库之上,很好的支持内部业务之后;然后在合适的时间点上,我们开始跟高校的团队做相应的AI结合,像基于AI的优化器性能调优、相应的课题研究等;然后到了下一个阶段,我们把这些数据库产品化商业化之后,再给广大用户提供服务,比如公有云(拼多多、美团等)客户,也有私有云(银行、政府小程序等)客户。

第二个维度是在自主可控的研发思路上。腾讯一直秉承着先把开源在内部应用,针对自己的业务场景做相应的技术创新和突破,然后再去回馈开源,来维护开源社区里自己的分支代码,最后实现研发自主可控的思路。

上图是腾讯云分布式数据库的发展历史。我们从08年开始起步支持内部的基础业务,目前腾讯云的自研数据库支持着腾讯系全部交易类的数据。随着业务的发展,2012年开始孵化TBase产品,支撑腾讯内部的广告业务。随着腾讯向产业互联网的转型,我们也逐渐把这些云服务封装到公有云、专有云。

到2018年,我们发现在切到传统市场的时候,这些交易类数据库的用户还在使用传统的分布式存储、前端加上一个集中式的模式,来解决OLTP的并发或者扩展性的问题。所以腾讯云自研了云原生的、存储和计算分离的数据库CynosDB,后续在这个模式上会持续推进。

腾讯云数据库的布局大概分两类。从引擎的角度来说,我们会拥抱开源的两个引擎,一个是MySQL引擎,一个是PostgreSQL引擎。

从技术架构来说,一是分库分表的分布式数据库的架构,它的优势在于其性能可以无限扩展;二是云原生的分布式数据库的架构,其存储层面会有相应的Share模式,计算机节点则是相应的独立。

这就是腾讯在自研数据库的发展布局,采用Shared-Storage&shared-Nothing双架构,双引擎的双核出击方案,满足不同的业务需求,覆盖主流应用场景。

自主研发数据库TDSQL和TBase核心架构揭秘和实践

接下来从技术架构和基础功能两个角度,来分享下腾讯云数据库的构建思路和产品化演进的思路。

上图是上述讲到的水平扩展的分布式数据库架构,我们把数据分配多个分片,然后通过强大的SQL引擎来做相应的分发,并且做基层的下推,将数据下推到各个节点去做相应的数据运算,最后汇聚数据,来为用户提供可平滑扩展的分布式数据库架构。

上图是计算存储分离的分布式数据库架构。我们认为,改变用户的已有使用习惯是很难的,但是培养一个新习惯也许还可行。因此,在某些传统的商业数据库模式下,改变用户使用Oracle的模式会有相应的阻力。但是,对于传统的Oracle它还是一种Share的模式,所以我们布局了这种分布式数据库的架构,将计算跟存储分离,区别在于它是一种日志级的数据库。

我们在上层、在交换机的三个节点是纯计算节点,这些计算节点可以完全兼容MySQL或者Postgre的协议,然后数据的日志通过网络交换机下发到底层的DB节点,让底层的存储节点来感知日志,再把日志逐步的回放。

这种架构的优势是存储层面可以水平扩展,当用户拉起一个读取节点的时候,可以瞬间启动一个读取节点,不用做相应的数据重放。另一个优势是它不像Oracle模式整页刷新,也不依赖于IP交换机的模式,而是只在交换机层面去传输日志,所以基本上一个传统的万众交换机就能满足这种业务场景。因此,在整体的成本或性能上都是一种非常有性价比的技术架构。

除了技术架构的优势,再来分享一下腾讯云数据库在用户功能层面(产品化层面)的一些设计理念。我们认为一款优秀的数据库应该遵循6个特点:

1、数据强一致

腾讯云是基于主从架构的“并行多线程强同步复制方案”,以保证数据的强一致,整体上可以保证主从节点这种默认强度的模式下,性能还不亚于原生的异构同步。

从上图(英特尔公司测试数据)可以看出,TDSQL真正跑起来之后比原生的异构同步的性能还要高,其实就是要靠这种强同步的逻辑,再加上多线程的同步方案做一定的改造。

2、金融级高可用

腾讯云提供了跨机房容灾、跨地域容灾等多种模式来保证整个金融级别的高可用。在系列功能上,我们提供了多达384项监控指标、进程保护机制、系统免切机制、毫秒级切换机制等,通过SQL-Engine的路由,保证一个整体毫秒级的切换,提供6个9以上的金融级别的高可用。

3、高安全性

安全性分为事前、事中、事后三个维度:

事前是指在攻击发生之前,采取某些措施保证数据库不被黑客所攻击。腾讯云提供了传输层加密、数据层加密、权限细粒度鉴权等事前的监控策略。

事中是指真正攻击已经发起,我们需要采取一些保护策略。首先,腾讯云有内核级的安全策略、内置的SQL防火墙,我们可以配置那些安全性非常差的SQL命令,收到这条SQL命令之后,直接阻塞攻击,这也是一种内置防火墙的机制。其次是防误操作机制,比如像delete全表或者join表结构等命令,都会被系统默认过滤掉,不会真正下发到命令解析器做出相应操作。

事后是指上述操作已经被执行之后,整个产品体系有一套标准的溯源功能。腾讯云的事后安全审计策略,一方面是有全部的运维操作审计、数据库层面的审计,在不耗费性能情况下,能够将全部的数据库操作记录下来,包括读操作(比如某些数据被拖走时,我们可以查到哪个IP、在什么时间点、用什么账号、采用什么模式、拿走了哪些数据,以尽量减少数据损失)。另外还有服务器审计、超级权限控制等。

4、良好的扩展性

扩展性分为两类,一类是资源层面的扩展,一类是功能层面的扩展。

资源层面的扩展,腾讯云提供两种模式。从集中式的实例可以一键扩展到分布式实例,然后分布式实例也可以自动挂载多个分片来加分片,自动的做数据重分布、平滑的数据迁移。用户可以在刚开始使用时选择较低的配置,然后随着业务的爆发,可以直接多加分片,并且整个的操作过程是全部平滑的,对于性能的损失基本都为零。

功能层面的扩展,比如热点更新的扩展,支持更大存储的引擎(RocksDB),产品中支持这种写量超大、数据量超大的场景,以及适配于物联网的传感器数据。另外还提供了像JSON、线程池等扩展。

5、便捷的运维

便捷的运维性也有两个维度,首先我们要把运维系统做的足够便捷,其次还要基于AI、数据模型的算法,提供更优化的数据库工具,来为用户提供更加便利的功能。

运维系统方面,腾讯云为业务方提供云数据库管理系统,通过租户视角,使用者在一键化的控制台上做相应的实例申请与退还、系统监控、备份与恢复、性能优化等。同时为运维方提供运营平台,从管理员的角度,提供TDSQL的全部运维功能,可管理TDSQL集群的物理资源、调度决策系统、备份与恢复系统、可用区管理、实例管理等。

运维工具方面,腾讯云为用户提供了一套智能管家运维服务,叫DBbrain。可以支持多种数据库实例,包括MySQL、Redis、MongoDB等,通过采集它们的监控数据,然后去做相应的审计日志的上传与抽取,包括MySQL数据分析;然后基于这些整体数据,再做数据的计算跟加工,基于现在数据性能的点、数据库的日志、MySQL整体等推算出全盘的审计数据,直接做实例的诊断,告诉用户在哪个时间点、哪些SQL语句、哪些调用导致了数据库性能在什么时间点、出现了什么异常。

同时我们还在做微信端的打通,用户未来在自己的微信公众号或者微信小程序上,就可以实时的操作数据库,脱离电脑的束缚,实时通过微信小程序对数据库做相应的操作和运维。

应用案例:微众银行

腾讯云数据库经过多年的发展,支撑起网上政务、金融交付、互联网、物联网等应用。其中分享一个比较有代表性的案例—微众银行,来看下腾讯云数据库如何支撑客户的业务系统。

整体而言,银行系统有三部分比较重要,一是核心交易系统,二是数据库,三是硬件(芯片、服务器)。而微众银行不仅是第一个互联网银行,也是第一个把全部业务系统国产化的企业:由一家国内公司做核心业务系统开发,数据库跑在腾讯云数据库之上,核心交易系统采用了华为鲲鹏,整个体系都是跑在国产的自主可控的路线之上。而腾讯云的数据库TDSQL也很好的支持了微众银行全部的交易数据。

腾讯为什么要做微众银行?哪些点是新兴互联网企业、传统银行转型时所看中的?

我认为,首先是多维度的监控能力,秒级监控、数据实时推算、基于数据的汇聚为用户提供的实例分析的诊断等。其次是基于租户端或基于运维端的自动化运维能力,让用户可以自行的对数据库做相应的部署和运维。其次是多副本的强一致性,以及跨机房容灾、跨地域容灾等模式。

—完—

 

版权所有,未经授权不得以任何形式转载及使用,违者必究。