作者:IT圈黎俊杰
笔者在参与国内某大型央企信创替代研究工作中,遇到从各方面传来的“云平台上的RDS就是国产数据库,使用RDS替代原数据库,也是信创替代”的说法,当说的人多了,产生的误导性强了以后,就有可能会影响信创替代的决策。
由于此大型央企云平台上输出的RDS最多的属RDS-MySQL,所以本文重点以RDS-MySQL为例,深入分析RDS-MySQL它到底算不算国产数据库,以及使用RDS-MySQL的风险问题。
本文仅作为技术探讨,不作为商业指南。
一、RDS-MySQL的技术本质
随着云技术的兴起,众多传统关系型数据库(如MySQL、PostgreSQL、SqlServer等),被云厂商搬上了云平台,通过开发对传统关系型数据库的自动调度与白屏化操作管理等能力的服务体系软件,实现以租户的方式对外提供服务,命名为“关系型数据库服务(Relational DataBase Service,简称为RDS)”,也被常称为“云数据库”。
将MySQL数据库以服务方式输出的数据库服务叫RDS for MySQL或RDS-MySQL或RDS MySQL版等;
将PostgreSQL数据库以服务方式输出的数据库服务叫RDS for PostgreSQL或RDS-PostgreSQL或RDS PG版等。
以RDS-MySQL为例,它的整体架构体系如下:
RDS它是一个名称,是指为调动数据库工作的“服务体系软件”+关系型数据库软件而输出的数据库服务。RDS如果没有了实体数据库的运行,那就是”RDS“少了”RD”,只剩下个为了服务而无法服务的“S”了。
RDS-MySQL的核心能力仍然在于MySQL数据库,“服务体系软件”侧重于辅助能力的提供,它没有数据库最基本的计算能力和存储能力。
调动MySQL数据库工作的“服务体系软件”是自主研发软件不错,但MySQL是不折不扣的国外开源数据库软件。
下面是阿里云官网上,对RDS MySQL版的产品描述,很坦诚的写出了它是“全球最受欢迎的开源数据库之一”
下面是华为官网上,对RDS MySQL版的产品描述,也很坦诚的写出了它是“全球最受欢迎的开源数据库之一”
RDS-MySQL不管是在私有云还是公有云上,它都只对“服务体系软件”、云平台和硬件资源进行收费,云厂商对“MySQL数据库”软件是不收费的,原因如下:
“服务体系软件”和“数据库软件(MySQL)”不存在包含关系,更不存在嵌入关系,它两者是绝对相互独立的产品,RDS是两个独立产品输出能力的逻辑组合,如果不独立,相互物理嵌入了,云厂商再售卖RDS-MySQL,那就该向Oracle公司付费购买商业授权了。
为什么“服务体系软件”和“数据库软件(MySQL)”必须是相互独立的原因,且不对MySQL数据库软件收费,大家在继续往下读完本文的第三章“RDS-MySQL的使用风险”后自然就会明白了。
二、信创的初心和使命
国家在近年大力推行信息技术应用创新产业(简称“信创"),初心和使命在于通过政策与资金的扶持,瞄准、突破核心基础软硬件关键技术,建立自主工具体系、产品体系和生态体系,孕育独立于国外体系的自主技术与产品体系的孵化池,培育出能够不被西方卡脖子的技术,能够实现西方有啥,我们有啥,实现信息安全不受制于人,产业发展不受制于人。
三、RDS-MySQL的使用风险
无数据库不RDS。由于RDS-MySQL的核心是MySQL,所以MySQL的风险,就是RDS-MySQL的风险。
(一)协议限制风险
MySQL数据库使用了GPL许可和商业许可两种许可模式。
1、GPL(General Public license)是公共许可,遵循了GPL的软件是公共的(需开源和免费使用)。如果某软件使用了GPL软件,那么该软件也需要开源和免费,如果不开源和免费,就不能使用GPL软件,这和是否把该软件商用与否是没关系的。
2、如果无法满足GPL公共许可,即对自己的商业应用程序中嵌入了MySQL 软件(包含对MySQL本身的修改),但不想受 GPL 约束,也不想开源自己应用程序的源代码、可免费使用,就需要获得商业许可,通过与Oracle公司联系,制定解决方案,受Oracle公司约束。具体约束包括:
(1)不允许对在MySQL上作出的任何修改申请专利;
(2)基于MySQL上的修改需要公开,且所有权归Oracle所有;
(3)出于纯学术目的、练习目的的源码修改也要符合GPL要求的;
(4)Oracle的MySQL企业版或高级功能会涉及费用,并且Oracle公司不允许基于MySQL的软件闭源。
(二)制裁限制风险
MySQL数据库是美国Oracle公司旗下产品,MySQL 数据库源码的开发、维护、提交等权限在 Oracle 公司手上,MySQL全球开发者提交的代码所有权都归Oracle公司。因此,Oracle公司有权将产品对特定的群体断供。
(三)安全与漏洞风险
由于MySQL数据库代码开源,和闭源商业软件相比,更能被黑客发现安全漏洞,更能被黑客研究出实现原理,从而更为轻松的实现入侵和破坏。
运行在生产环境里的国外软件,更能被国外所利用的可能性,甚至在后台收集数据向外发送等。
四、MySQL风险下无知的可怕性
现实中,笔者听到一些国内厂商对甲方宣称“他完全掌握了全部MySQL的源码,就是断供了也可以独立发展”。这只能说是掩耳盗铃、自欺欺人和无知的可怕。原因如下:
(1)国外程序员编写代码里的安全漏洞,你都发现了吗?
(2)你得不到MySQL全球开发者贡献的新代码,仅凭你一已之力怎能超越得了全球开发者的创新能力与产品输出能力?
(3)你能做到像Oracle公司一样对MySQL产品的持续大规模研发投入,来保证产品能力的持续提升吗?如果做不到,那你的产品迭代提升能力在哪里呢?最多也就是一个修修补补的落后产品罢了。
(4)如果你说能做到像Oracle一样长期维对MySQL产品大规模的研发投入,是不是要靠售卖产品来获取经费呢?而MySQL使用的GPL开源协议对修改后的和嵌入了MySQL程序的软件需继续开源和免费,如果想要对嵌入有MySQL程序的软件进行售卖或转售,则需要花钱向Oracle公司购买商业授权。人家不给你授权,断供,你还能靠售卖产品来获取维持对MySQL洐生产品的大规模研发经费投入吗?
结论:
云平台上的RDS-MySQL肯定不能算是国产数据库,并且RDS-MySQL同MySQL数据库一样存有可能的断供风险。全体国民应该借助信创机遇,牢记信创使命,永葆信创初心,脚踏实地的研发自主数据库产品,突破核心关键技术,建立自主生态,达到数据库技术摆脱“卡脖子”限制的目的。