jjzjj

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

韩锋频道 2023-03-28 原文
​数据库,作为基础软件产品,其研发资源及成熟应用,需要较大投入和较长周期。开源作为一种新的软件开发协作模式,可大大加速这一过程。从上世纪九十年代,以 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).服务

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

有关从数据库开源商业版本差异谈起的更多相关文章

  1. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  5. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  6. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  7. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  8. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  9. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  10. ruby-on-rails - 如何在发布新的 Ruby 或 Rails 版本时收到通知? - 2

    有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:

随机推荐