从数据库开源商业版本差异谈起

时间:2020-12-31 00:51:55

数据库,作为基础软件产品,其研发资源及成熟应用,需要较大投入和较长周期。开源作为一种新的软件开发协作模式,可大大加速这一过程。从上世纪九十年代,以 MySQL 和 PostgreSQL 为代表的开源数据库兴起;到近些年来国内数据库也纷纷走向开源道路。的确,开源能为企业及产品带来很大的收益,如加快研发周期、加速产品成熟、促进生态建设等。当然,出于商业化诉求,企业也纷纷摸索在开源条件下的商业模式,大部分企业在开源的同时也提供了商业版本。作为最终用户,是选择社区开源版本还是商业闭源版本,是个值得思考的问题。本文收集数据库领域几家代表性企业开源(社区)版本与商业(企业)版本产品功能及差异,并对这一差异背后的原因加以思考。本文部分资料来自阿里云、甲骨文、PingCAP、OceanBase 公司朋友提供,特表示感谢。


1. 常见数据库开源商业差异

1).MySQL

MySQL 作为最为流行的一款开源数据库,其社区版是完全免费的;企业版则需要支付许可证费用且提供了更强功能。针对社区版本,功能大家已经比较熟悉了,下面重点说明下企业版的增强功能。总体来说,MySQL 企业版的功能比社区版更丰富,而且有更高的安全性、可管理性及配套服务等。其具体增强功能如下:

从数据库开源商业版本差异谈起

2).TiDB

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性,支持在本地和云上部署。其产品在诞生之初,就秉承开源理念,其核心多款开源项目合计 Star 数突破50K。其企业版和社区版产品差异如下:

从数据库开源商业版本差异谈起

3).OceanBase

OceanBase 一款开源分布式 HTAP 数据库管理系统,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。自2021年6月开源以来,秉承内核完全开放的原则,已开源超 300 万行代码。其希望通过开源让更多的上下游厂商、伙伴和开发者参与进来了解和使用产品,使产品发展的更快、更好、更普及,旨在共同将OceanBase打造成全球最具竞争力的分布式数据库。其提供企业版和社区版两种形态:

  • OceanBase 数据库企业版:OceanBase 企业版是一款完全自研的企业级原生分布式数据库,在普通硬件上实现金融级高可用,首创“三地五中心”城市级故障自动无损容灾新标准,刷新 TPC-C 标准测试,单集群规模超过 1500 节点,具有云原生、强一致性、高度兼容 Oracle/MySQL 等特性。

  • OceanBase 数据库社区版:兼容 MySQL 的单机分布式一体化数据库,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 社区版数据库内核开源,与 MySQL 兼容,对接虚拟化和大数据技术及产品,支持多种图形化的开发工具、运维监控工具和数据迁移工具;同时社区版提供开放的接口和丰富的生态能力,支持企业或个人更好的实现定制化业务需求。

从数据库开源商业版本差异谈起

4).PolarDB-X

阿里云,近些年来非常重视开源生态建设。在数据库领域开源了多款产品,以 PolarDB-X 产品为例,是在2021年的云栖大会正式开源。其负责人表示“我们将阿里最核心的云原生数据库技术进行开源,希望开发者和客户通过开源版本快速使用阿里云数据库产品技术,并参与到技术产品的迭代过程中来,共建云原生分布式数据库生态。”PolarDB-X是由阿里自主研发的原生MySQL分布式数据库,兼容MySQL协议与客户端,具备自动负载均衡、高可用、HTAP混合负载、支持分布式事务、全局二级索引等重要特性,专注解决超高并发吞吐、海量数据存储、大表瓶颈等数据库瓶颈难题,历经各届天猫双11及全行业客户业务的考验。从范围上看,PolarDB-X 开源较为彻底,开发的新功能在经过三个月的线上试用后,就会合入到开源分支中。除了阿里系其他生态工具类产品外,其自身功能全部实现了开源。其主要功能包括:

从数据库开源商业版本差异谈起


2. 数据库商业化功能思考

从上面几款数据库产品可见,开源产品与商业产品在大体功能上相差不大,重点是在部分企业级功能和服务上面。这其中主要包括几个方面:

1).安全

安全功能,是企业选择一款产品的重点考虑要素之一,特别是数据库这种承载数据,担负企业核心业务的基础平台。关于安全还可细分为三类功能:一是访问行为类,如审计、白名单、防火墙;二是数据存储展示类,如加密、脱敏、签名;三是安全扩展类,如对接第三方安全系统。上述三类功能,重点是解决数据库平稳运行、数据合规使用及管理便利性问题。企业版可以很好地满足此类需求,如用户使用社区版本则需通过外购第三方或自研的方式解决。

2).运维

运维能力,是企业能否用好产品的关键因素之一。好的产品,还需要好的运维支撑能力来辅助。企业版软件在这部分功能上主要是提供可视化、便捷的运维方式为主,包括常见的安装部署、备份恢复、监控告警、异常诊断、性能优化等。重点是解决数据库的运维效能问题。这部分相对难度不大,如用户使用社区版本可通过自研方式去解决;而且对于中大型企业来说,往往都有一套成熟运维体系,即使企业版提供也许融入自有体系中,因而相对不是很刚需。

3).生态

生态功能,主要是指企业的上下游及关联方使用好此产品所需要的功能。这其中可细分为几种情况:一是开发者生态,提供好的设计、开发平台供开发者使用,方便开发者快速上手;二是数据生态,即数据如何流入、流出此平台,企业内往往不止一种数据库,需要数据在多平台间流动;三是兼容生态,即为了充分享受其他产品的生态能力二提供的兼容性功能,如协议、语法、工具等方面的兼容。上述功能是重点解决企业使用数据库开发好系统的问题。这部分相对难度较大,但有些功能属于非刚需。特别在兼容性上做的很好的产品,通常可利用原有生态上的部分能力,可解决一定问题。

4).服务

只有好的产品,没有好的服务,是无法保证能够使用好的。特别是对于承载企业关键业务的数据库,是不允许出现任何闪失的。这也是很多用户考虑购买企业版,希望能得到的“兜底”服务效果。企业版提供的服务,不仅在范围上、时效性、预防类等多方面比社区版本更有保障,而且有公司能够担责对用户也是一种解脱。当然现在也有一种"开源商业服务"的形式,即提供对开源产品的商业服务,能在一定程度上解决企业使用开源的问题。这种情况,则需重点考虑服务企业的资质能力(特别在此开源项目上)。