Percona 创始人推出的一个新项目,FerretDB 提供了一个开源的 MongoDB NoSQL 文档导向数据库系统的替代品。
FerretDB 并不是 MongoDB 的分支,也不是对 MongoDB 的重写。它是一个代理程序,将 MongoDB 5.0+ 协议查询转换为 SQL。它运行在标准版本的 PostgreSQL 上。
FerretDB 系统还可以作为 MongoDB 兼容云服务的本地替代品,尤其是微软的 CosmosDB 和亚马逊网络服务(AWS)的 DynamoDB(谷歌云本身提供了 MongoDB Atlas,这是 MongoDB 的商业云版本)。
本周二,该公司发布了开源软件的 2.0 版本,该版本由于引入了微软提供的 PostgreSQL 的 DocumentDB 扩展作为数据库引擎,性能得到了显著提升。
此外,DocumentDB 扩展支持 BSON(二进制 JSON)数据类型,并能够通过 SQL 查询文档数据。
实际上,FerretDB 可以将任何 PostgreSQL 数据库系统变成 MongoDB 服务提供商。
开源的重要性
FerretDB 并不旨在作为所有 MongoDB 实例的直接替代品——尤其是那些使用高级专有功能的实例——但据 FerretDB 联合创始人兼首席执行官彼得·法尔卡斯(Peter Farkas)在接受《The New Stack》采访时表示,它应该适用于大约 80% 的工作负载。
它还与大多数第三方 MongoDB 工具和驱动程序兼容。
法尔卡斯与彼得·扎伊采夫(Peter Zaitsev)和阿列克谢·帕拉日琴科(Alexey Palazhchenko)共同创立了 FerretDB。扎伊采夫是 Percona 的联合创始人之一,该公司专注于提供 MySQL、MongoDB 和 ValKey 等数据库的高性能支持。帕拉日琴科和法尔卡斯也是 Percona 的早期员工。
最初,MongoDB 作为 Web 开发者存储数据的一种简单且非常可扩展的方式而受到青睐。Mongo 使用更受开发人员欢迎的 JSON 格式以文档导向模型存储数据,这比 SQL 定义的结构化列和行更容易使用,尤其是对于复杂的嵌套数据。
2018 年,MongoDB 将其同名文档存储的许可从 GPLv3 更改为更具限制性的 SSPL 许可,主要是为了阻止云提供商在不回馈项目或支付 MongoDB 费用的情况下提供 MongoDB 功能(Redis 几年后也遇到了类似的情况)。
2021 年启动这个项目时,这三位 Percona 的前员工预计许多 MongoDB 用户需要一个开源许可版本。他们可能为一个完全基于开源软件构建软件堆栈的组织工作,或者他们可能需要一个开源的本地备份,以应对云提供商,法尔卡斯解释道。
OpenDocDB 标准
许多用户可能不想在一个由单一公司控制的开源项目上运行关键系统。鉴于此,该公司启动了 OpenDocDB 计划,希望围绕 FerretDB 吸引一个开发社区。
其想法是,正如 SQL 已成为查询结构化数据的供应商中立标准一样,OpenDocDB 也可以从 MongoDB API 出发,成为查询文档导向数据库的标准。
遵循Percona 操作手册,FerretDB 本身计划通过提供工具和高级企业功能、云服务以及针对高可用性关键部署的高级支持来赚钱。




