跳转到主要内容
Chinese, Simplified

开源数据库只是一个普通的数据库,它与源代码一起分布。

用户可以自由地阅读、修改和扩展软件,尽管很少有人利用这些机会。对许多人来说,最吸引人的功能可能是随时在任何硬件上运行它的权利。源代码是所有程序员都可以使用的公共资源。

并不是说定义开源数据库的架构、语言或特性集有什么不同。事实上,许多开源选项讲的是SQL的一个版本,就像它们的专有同类一样。

对于那些与专有软件供应商进行过重新许可谈判的经理来说,许可证一直都很有吸引力。如果源代码不被共享,那么他们要想应对价格的大幅上涨,唯一的选择就是转向另一个产品,这通常包括大量的重写。

但是没有免费的午餐。源代码的天赋可能会带来一些捕获,有些是显式的,有些是隐式的。有许多开源许可证。有些人对用户几乎没有任何限制,有些人坚持要求用户共享任何增强功能作为回报,基本上确保公共代码对所有人开放。

另一个没有明确说明但对用户来说显而易见的义务是,必须有人向开发人员付费。一些使用开放源代码数据库的公司雇佣人员为代码库做贡献。他们不是购买专有许可证,而是通过工资支付。选择这条道路的公司倾向于赞扬他们对代码库的控制。

许多开源数据库是在混合模式下发布的。有些人会创建两个不同的版本,其中更简单、更通用的代码可能会被称为“社区版”之类的东西,并发布以自由流通。开发人员可以免费下载这项技术并创建新的原型。

为支持开发的公司支付的费用通常由那些逐渐采用“商业版”的公司支付,后者通常提供与使用更大的数据集或提供更好的安全性相关的额外功能。它们通常是新开发人员不需要的特性,但对运行生产代码的组具有长期价值。

设置多个版本并确保每个版本都有正确的功能是一门艺术。在商业版中保留太多的特性,没有人会去尝试。在社区版本中留下太多,没有人会觉得需要升级和付费。

开源数据库分为许多类别,这些类别很大程度上取决于它们的开发时代。最早的工具,如MySQL或PostgreSQL,模仿了商业领袖。他们使用SQL,将数据存储在按索引排序并通过连接例程链接的关系表中。有时它们并没有提供相同的完整功能选择,但它们逐渐演变为支持相同样式的数据存储。

后来的NoSQL数据库,如MongoDB和Cassandra,以其灵活的模式和文档风格的键值对存储而闻名。这类特殊的数据库在很大程度上是作为开放源代码发展起来的。

一些最新的数据库,比如支持分类帐或地理数据的数据库,通常是与不断发展的产品对的混合。一个是免费提供的全功能社区版。另一个通常被称为“企业版”,因为它包含支持可能需要更高稳定性和可靠性的更大数据集的功能。这些额外的功能通常只提供一个价格。

主要供应商是如何接受开源的

甲骨文在2009年收购Sun Microsystems的过程中收购了MySQL,有效地认识到了开源模式的威力。他们继续开发和支持数据库。用户可以选择免费版(称为社区版),也可以选择更高级的版本,其中包括更大公司需要的额外功能。备份、额外的安全性和群集管理都是收费的。

Oracle还购买了BerkeleyDB,这是一组经常被编译成程序的键值数据库库。它们允许开发人员减轻维护数据结构的工作。

微软已经选择在其Azure云上托管一些主要的开源数据库。想要依赖PostgreSQL或MySQL的团队可以启动由Microsoft管理的实例,从而省去了配置和维护服务器的麻烦。硬件和馆藏的价格是捆绑在一起的。

其他的云也在遵循类似的路径。Amazon、Google、DigitalOcean、Rackspace和其他一些公司提供了租用完全配置的服务器以及运行主要开源数据库版本的选项。仅Amazon就提供了大多数主要开源数据库的托管版本。

这些托管实例的出现让一些开发人员感到恼火。云计算提供商发布的许多新产品都提供了安装和维护开源软件包的功能。这些不是虚无缥缈的任务,但工作可以自动化。这导致了这些工具的开发者和云公司之间的一些摩擦,而这些冲突远未得到解决。

新贵

许多新数据库都是从开源项目开始的。有几十家新公司在社区开源许可下发布了新的数据库。大多数公司还试图通过出售一些混合的支持和额外的专有功能来支持自己。

有些项目建立在以前的版本上。MariaDB是MySQL的一个分支,由MySQL的创始人之一montywidenius发起。他在把MySQL卖给甲骨文之后开始了这个新版本。早期版本是从最初的代码库开始的,但最新版本增加了一些特性,可以加快处理超大数据集的速度。SQL语法的许多基本特性和核心部分是相同的,因为它们有共同的传统,所以许多开发人员可以在它们之间自由切换。在未来,这种差异可能会扩大。例如,MariaDB增加了与Cassandra、TokuDB和SphinxSE等流行数据库的集成。

SequoiaDB是一个大型分布式数据库,支持SQL、键值文档存储和直接JSON存储。数据库将各种节点连接在一起,每个节点可能是不同的存储引擎,如MySQL或PostgreSQL。数据库将查询路由到适当的节点,同时确保事务可以提供ACID级别的并发性。核心是在AGPL下发布的,而一些连接器是由Apache许可证管理的。

虽然许多新的数据库都是开源的,但并不是所有的公司都接受这种模式。例如,fanus为其分布式数据库选择了一个商业许可证。企业友好型的特点是面向那些必须同时处理数据保留策略和快速扩展的管理者。新开发人员可能无法访问源代码,但他们可以使用托管服务的免费层,该层对每个月可以读取或写入的元素数量进行严格限制。

治理问题

软件的控制吸引了许多用户使用开源数据库。他们愿意为私有软件公司出售的产品及时支付工资,通常是为了避免因供应商锁定而带来的痛苦。开源许可证明确地让用户成为控制代码的完全合作伙伴。

然而,这种伙伴关系的性质和局限性仍然受到质疑。最近,一些数据库公司对一些云公司将硬件和维护捆绑在一起的方式进行了反抗。首先是MongoDB,最近是Elastic,质疑这个过程是否公平,部分原因是云计算公司没有直接与原始公司分享收入。云计算公司并没有违反开源许可证的规定,但一些公司认为他们保留了大部分的支付份额,这违反了开源许可证的精神。

找到解决办法并不简单。最近,Elastic的首席执行官Shay Banon宣布,他们正在将所有新的开发转移到一套更严格的许可证上,旨在阻止大型云提供商在不限制最终用户的情况下自由转售他们的工具。

巴农在2021年1月的公告中说:“我们已经尝试了所有可用的途径,包括通过法庭,但随着AWS的持续行为,我们决定改变我们的许可证,以便我们能够专注于建筑产品和创新,而不是诉讼。”

亚马逊对此做出回应,宣布将为Elastic“分叉”代码。也就是说,他们会公开使用最新的版本,并继续自己维护,同时在云中转售。

亚马逊的Carl Meadows、Jules Graybill、Kyle Davis和Mehul Shah在公告中写道:“今天,我们在Amazon ES上提供18个版本的Elasticsearch,这些版本都不受许可证更改的影响。”未来,亚马逊ES将由Elasticsearch和Kibana的新分支提供支持。我们将继续提供新功能、修复和增强功能。

将有两条路径可能沿着相同的方向发展,也可能不沿着相同的方向发展。核心特性可能会保持不变,但用户可能需要将自己与其中一个保持一致。他们的代码可以顺利地处理这两个问题,或者可能有问题。我们不知道开发团队会做出哪些决定。

像这样的叉子是在过去发展起来的。Oracle的MySQL版本仍然与MariaDB非常相似,似乎两家公司都认为保持紧密的兼容性很重要,至少在核心特性和语法上是如此。

另一家数据库公司MongoDB是采用限制性更强的许可证(服务器端公共许可证(SSPL))的先驱之一,该许可证限制了非其合作伙伴的云提供商。自2018年以来,该公司一直在此许可证下发布产品,平衡了公司和用户的需求。

“我们希望为开发人员提供一种方便的方式来访问我们的产品,以便他们能够以无摩擦的方式使用、修改和重新发布它。MongoDB首席执行官兼总裁DevIttycheria在接受采访时表示:“在SSPL下,这没有什么不同。”。

但他同时指出,公司在研发方面投入了7亿美元。”他解释说:“我们想对抗超规模云供应商的威胁,他们把我们的免费产品作为一种服务提供,而不给予任何回报。”我们将许可证更改为SSPL已经两年多了,这对用户采用和我们作为一家公司的成功都没有负面影响。”

换言之,该公司已经不遗余力地支持自由阅读、使用和修改代码的原始愿景,同时缩减了一类尚未与之形成成功商业伙伴关系的公司。正如开源软件运动的最初开发者之一richardstallman喜欢说的那样:开源是自由的,而不是啤酒

原文:https://venturebeat.com/2021/02/18/understanding-open-source-databases/

本文:http://jiagoushi.pro/node/1499

讨论:请加入知识星球【首席架构师智库】或者小号【cea_csa_cto】或者QQ【2808908662】

Tags
 
Article
知识星球
 
微信公众号
 
视频号