深入了解开源数据库

SegmentFault

共 3855字,需浏览 8分钟

 · 2021-02-20


编译:芒果果丨发自 思否编辑部




开源数据库只是随其源代码一起分发的常规数据库。


用户可以自由地阅读、修改和扩展软件。对于许多人来说,最有吸引力的特性可能是它可以在任何时候在任何地方的任何硬件上运行它。源代码是所有程序员都可以根据自己的需要使用的公共资源。




什么是开源数据库


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


对于与专有软件供应商重新授权谈判的管理人员来说,许可一直很有吸引力。如果源代码不被共享,他们唯一的选择就是转移到另一个产品,这通常包括大量的重写。


但是,天下没有免费的午餐。这些源代码或许也存在一些“陷阱”,有些比较明显有些则是隐藏起来的。许多开源许可证中,有些对用户几乎没有任何限制,有些则坚持要求用户共享任何增强,从根本上确保公共代码对所有人保持开放。


另一个没有明确说明但对用户来说非常重要的就是,必须有人付钱给开发人员。

一些使用开放源码数据库的公司会雇人为代码库做贡献。他们不是购买专有许可证,而是通过向开发人员支付薪水。选择这种方式的公司倾向于他们对所获得的代码库的控制。


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


支持开发的公司的账单通常由逐渐采用”商业版本”的公司支付,这种版本通常提供与处理较大数据集或提供更好的安全性有关的额外功能。它们通常是新开发人员不需要的特性,但是对于运行生产代码的团队来说,它们提供了长期的价值。设置多个版本并确保每个版本都有正确的特性是一门艺术。在商业版中保留太多的功能,没有人会去尝试。在社区版中留下太多,没有人会觉得需要升级和付费。


开放源码数据库可以分为很多类别,这些类别在很大程度上取决于它们的发展时代。最早的工具,如 MySQL 或 PostgreSQL,仿效了商业领袖。它们使用 SQL 语言,并将数据存储在按索引排序、由 JOIN 例程链接的关系表中。有时它们并不提供同样完整的特性选择,但是它们逐渐进化到支持相同的数据存储风格。


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


一些最新的数据库,比如那些支持分类账或地理数据的数据库,通常是几对产品的混合体。一个是免费提供的功能齐全的社区版本。另一个通常被称为“企业版”,因为它包含的特性支持更大的数据集,而这些数据集可能需要更高的稳定性和可靠性。这些额外的功能通常只有在付费的情况下才能使用。




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


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


甲骨文还收购了 BerkeleyDB,这是一组常常被编译成程序的键值数据库。它们使开发人员可以减轻维护数据结构的工作。


微软已经选择在 Azure 云上托管一些主要的开源数据库。希望依赖 PostgreSQL 或 MySQL 的团队可以启动由微软管理的实例,从而省去配置和维护服务器的麻烦。


其他云供应商也在遵循类似的路径,亚马逊、谷歌、DigitalOcean、Rackspace 和其他几家公司都提供了租用全配置服务器的选择,这些服务器都有主流开源数据库的运行版本。亚马逊独自提供了大多数主要开源数据库的托管版本。


这些托管实例的出现使一些开发人员感到困扰。许多云计算提供商发布的新产品公告都提供了安装和维护开源软件包的信息。这些不是无关紧要的任务,但是工作可以自动化。这导致了工具开发人员和云公司之间的摩擦,而这些冲突还远未解决。




从开源项目开始的新数据库


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


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


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


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




如何治理开源数据库


软件的控制是吸引许多用户使用开源数据库的原因,他们愿意为专有软件公司出售的产品按时支付工资,通常是为了避免供应商锁定可能带来麻烦。开源许可证明确地使用户成为控制代码的正式合作伙伴。


但是,这种伙伴关系的性质和局限性仍然受到质疑。最近,几家数据库公司对某些云公司将硬件和维护捆绑在一起的方式表示反感。MongoDB 和 Elastic 都对这一过程是否公平提出了质疑,部分原因是云公司不直接与原公司分享收入。云计算公司并没有违反开源许可协议的字面意思,但有些人认为他们保留了大部分的付款份额,违背了开源协议的精神。


最近,Elastic 的首席执行官 Shay Banon 宣布,他们正在将所有新的开发转移到一套更严格的许可证,旨在阻止大型云提供商自由转售他们的工具,同时不限制终端用户。


他说:“我们尝试了所有可能的途径,包括通过法院。但鉴于 AWS 的持续行为,我们决定改变我们的许可证,这样我们就可以专注于生产产品和创新,而不是诉讼。”


作为回应,亚马逊宣布将为 Elastic“fork”代码。也就是说,他们将公开获取最新版本,并继续自己维护同时在云中转售它。



亚马逊的 Carl Meadows、Jules Graybill、Kyle Davis 和 Mehul Shah “今天,我们在亚马逊 ES 上提供18个 Elasticsearch 版本,没有一个受到许可证变更的影响。未来,亚马逊的 ES 将由 Elasticsearch 和 Kibana 的新分支提供动力。我们将继续提供新的特性、修复和增强功能。”


这其中有两条路径可能沿着相同的方向发展,也可能不会。核心功能可能保持不变,但用户可能需要与其中一个保持一致。他们的代码可能在两者之间顺利工作,或者可能存在问题。我们不知道开发团队会做出哪些决定。


过去已经开发出了这种 Forks 这种方式,甲骨文版本的 MySQL 仍然与 MariaDB 非常相似,并且看起来两家公司都认为保持紧密的兼容性非常重要,至少在核心特性和语法上是这样。


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


MongoDB 首席执行官兼总裁 Dev Ittycheria 在一次采访中说,“我们希望为开发人员提供一种简单的方式来访问我们的产品,这样他们就可以以无摩擦的方式使用、修改和重新发布我们的产品,这在 SSPL 下没有什么不同。”


但他也指出,MongoDB 已经在研发方面投资了7亿美元,这是由合作伙伴支付的。他解释说: “我们希望对抗超级云供应商拿走我们的免费产品并提供服务而不付出任何回报的威胁。自从我们将许可改为 SSPL 以来,已经过去两年多了,这对用户接受程度和我们作为一家公司的成功没有产生任何负面影响。”




开源的真正意义是,竭尽全力支持自由阅读、使用和修改代码的最初愿景。


作为开源软件运动的原始开发者之一,Richard Stallman 曾说过这样一句话:“Open source is free as in freedom, not as in beer.”


本文是翻译,阅读原文:

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




- END -

浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报