FerretDB 的第一个稳定版本,基于 PostgreSQL DBMS 的 MongoDB 实现

FerretDB 1.0 项目的版本已经发布,它允许您将面向文档的数据库管理系统 MongoDB 替换为 PostgreSQL,而无需更改应用程序代码。 FerretDB 作为代理服务器实现,它将对 MongoDB 的调用转换为对 PostgreSQL 的 SQL 查询,这允许您使用 PostgreSQL 作为实际存储。 1.0 版被标记为第一个可供一般使用的稳定版本。 代码是用 Go 编写的,并在 Apache 2.0 许可下分发。

FerretDB 的主要目标受众是在其应用程序中不使用 MongoDB 高级功能但希望使用完全开放的软件堆栈的用户。 在当前的开发阶段,FerretDB 支持典型应用程序中最常用的 MongoDB 功能的一个子集。 实施 FerretDB 的需要可能与 MongoDB 向非自由 SSPL 许可证的过渡有关,该许可证基于 AGPLv3 许可证,但不是开放的,因为它包含在 SSPL 许可证下提供的歧视性要求,不仅应用程序代码本身,也是提供云服务所涉及的所有组件的源代码。

MongoDB 在操作键/值数据的快速和可扩展系统与功能强大且易于查询的关系 DBMS 之间占据一席之地。 MongoDB 支持以类似 JSON 的格式存储文档,具有相当灵活的生成查询的语言,可以为各种存储的属性创建索引,有效地提供大型二进制对象的存储,支持记录更改和添加数据到数据库的操作,可以按照 Map/Reduce 范式工作,支持复制和构建容错配置。

FerretDB 1.0 的变化包括:

  • 实现了 createIndexes 和 dropIndexes 命令,用于创建一个或多个索引并将其删除到集合中。
  • 已实现 getMore 命令以显示从执行返回游标的命令(例如查找和聚合)中获得的结果的新部分。
  • 添加了对 $sum 聚合运算符的支持以计算组值的总和。
  • 添加了对 $limit 和 $skip 运算符的支持,以在聚合时限制数量并跳过文档。
  • 添加了对 $count 运算符的支持,用于在聚合时对文档进行计数。
  • 添加了对 $unwind 运算符的支持,以解析传入文档中的数组字段,并为每个数组元素形成一个包含单独文档的列表。
  • 添加了对 collStats、dbStats 和 dataSize 命令的部分支持,以获取收集和数据库统计信息以及数据大小。

来源: opennet.ru

添加评论