MangoDB 已现代化,现在更改为 FerretDB

最近s天公布了项目启动的消息 FerretDB(以前称为 MangoDB),它允许您将 MongoDB 的面向文档的 DBMS 替换为 PostgreSQL,而无需对应用程序代码进行任何更改。

FerretDB 被实现为代理服务器,它将对 MongoDB 的调用转换为对 PostgreSQL 的 SQL 查询,允许您使用 PostgreSQL 作为实际存储。

FerretDB(前身为 MangoDB)的成立是为了成为 MongoDB 的事实上的开源替代品。 FerretDB 是一个开源代理,它使用 PostgreSQL 作为数据库引擎,将 MongoDB 有线协议查询转换为 SQL。

由于 MongoDB 过渡到基于 AGPLv3 许可证但不是开源的非自由 SSPL 许可证,可能需要迁移,因为它包含在 SSPL 许可证下不仅提供应用程序的歧视性要求代码本身,以及提供云服务所涉及的所有组件的源代码。

FerretDB 的目标受众是不使用 MongoDB 高级功能的用户 在他们的应用程序中,但希望使用完全开放的软件堆栈。

在目前的发展阶段,FerretDB 它仍然只支持部分 MongoDB 功能 最常用于典型应用的。 未来,他们计划实现对 MongoDB 的完整驱动程序支持,并提供使用 FerretDB 作为 MongoDB 透明替代品的能力。

应该记住的是 MongoDB 在快速且可扩展的系统中占有一席之地 以键/值格式对数据进行操作,以及关系型 DBMS,在生成查询时功能强大且方便。

大多数 MongoDB 用户不需要 MongoDB 提供的许多高级功能。 但是,他们需要一个易于使用的开源数据库解决方案。 认识到这一点,FerretDB 来填补这一空白。

MongoDB的 支持以类似 JSON 的格式存储文档,具有相当灵活的生成查询语言,可以为各种存储属性创建索引,提供高效的二进制大对象存储, 支持记录操作以更改和添加数据 对于数据库,它可以根据 Map/Reduce 范式工作,它支持复制和容错配置的构建。

在 FerretDB 0.1.0 的发布中,注意到 完全重新设计了 PostgreSQL 数据的检索方式. 以前,对于每个传入的 MongoDB 请求,都会生成一个 SQL 到 PostgreSQL 查询,使用函数来处理 JSON 格式并在 PostgreSQL 端过滤结果。

由于差异 在 PostgreSQL 和 MongoDB json 函数的语义中, 有出入 在比较和订购不同类型时的行为。 为了解决这个问题,现在从 PostgreSQL 中提取了一个冗余数据样本,并在 FerretDB 端完成了结果的过滤,这使得在大多数情况下重复 MongoDB 的行为成为可能。

提高兼容性的代价是性能损失, 在未来的版本中,预计将通过在 FerretDB 端对存在行为分歧的查询进行选择性过滤来抵消。

例如,查询“db.collection.find({_id: 'some-id-value'})”可以在 PostgreSQL 中完全处理。 该项目现阶段开发的主要目标是实现与MongoDB的兼容,性能仍然退居幕后。

在新版本的功能更改中,支持所有位运算符、“$e”比较运算符以及“$elemMatch”和“$bitsAllClear”运算符。

最后 对于那些有兴趣了解更多信息的人,他们应该知道代码是用 Go 编写的,并且是在 Apache 2.0 许可下分发的,并且 您可以在以下链接中查看其代码。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。