MangoDB:MongoDB 的开源替代品

MongoDB 是一款面向文档的 NoSQL 数据库系统,它彻底改变了许多开发者的游戏体验,使他们能够比使用关系型数据库更快地构建应用程序。然而,MongoDB 已经放弃了其开源的初衷,转而采用 SSPL 许可证,这使得许多商业和开源项目无法使用它。

为了应对这一需求,MangoDB 应运而生。对于那些寻求 MongoDB 开发体验的人来说,MangoDB 是一个完美的解决方案,因为它提供了一个实现面向文档的 MongoDB 协议的层,该协议运行在 PostgreSQL 之上。

该项目旨在提供将 MongoDB 应用迁移到 PostgreSQL 的能力,并提供完全开源的软件栈。代码使用 Go 语言编写,并以 Apache 2.0 许可证发布。

值得注意的是,MongoDB 是一个面向文档的数据库管理系统,可以部署在任意数量的计算机上,并且不需要预定义的数据模式。这使得它能够处理 BSON(二进制 JSON)格式的结构化对象,而无需预定义的模式。

换句话说,可以随时“动态”添加键,而无需重新配置数据库。数据以文档的形式存储,文档存储在集合中——一个集合可以包含任意数量的文档。集合类似于关系数据库中的表,而文档类似于记录。

服务器端公共许可证(SSPL) 是 MongoDB 公司开发的专有软件许可证。根据 MongoDB 的说法,SSPL 基于 AGPL3 许可证,并增加了一个新章节,该章节“明确规定了将许可程序作为第三方服务分发的条款”,要求在将软件作为服务的一部分向公众提供时,必须提供所有源代码。

这项变更于 2018 年 10 月实施,此后 Debian、Red Hat Enterprise Linux 和 Fedora 发行版相继放弃了 MongoDB,理由是对 SSPL 存在担忧。亚马逊推出了兼容但专有的 DocumentDB 服务,看来 SSPL 并未提升 MongoDB 的云收入。大多数 MongoDB 用户并不需要 MongoDB 提供的众多高级功能,但他们确实需要一个开源数据库解决方案,而这正是 MongoDB 的用武之地。

我们解决方案的核心是一个无状态代理,它将 MongoDB 协议查询转换为 SQL,并使用 PostgreSQL 作为数据库引擎。 它将与 MongoDB 驱动程序兼容,并且在许多情况下,它应该可以直接替代 MongoDB。

MangoDB 的目标是成为 MongoDB 的事实上的开源替代方案。MangoDB是一个开源代理,它将 MongoDB 的硬编码协议查询转换为 SQL,并使用 PostgreSQL 作为其数据库引擎。MangoDB 将兼容 MongoDB 驱动程序,并在许多情况下直接替代 MongoDB。

该程序充当代理,将对 MongoDB 的调用转换为对 PostgreSQL 的 SQL 查询,并使用 PostgreSQL 作为实际存储。该项目支持 MongoDB 驱动程序,但仍处于原型阶段,尚不支持高级 MongoDB 协议特性,不过它已经能够胜任简单应用程序的转换工作。

由于项目过渡到基于 AGPLv3 许可证但未开放的非免费 SSPL 许可证,可能会出现避免使用 DBMS MongoDB 的需要,因为它包含在 SSPL 下提供的歧视性要求不仅是应用程序本身的代码,还包括提供云服务所涉及的所有组件的源代码。

最后,如果您有兴趣了解更多关于MangoDB 的信息,可以在以下链接中找到详细信息。


在 Google 中将其添加为首选来源