FerretDB 2.7.0 介绍与选型指南
基于官方资料梳理 FerretDB 2.7.0 的定位、PostgreSQL 加 DocumentDB 架构、命令支持与已知差异、DEB 快速上手、适用场景,并与 MongoDB、PostgreSQL JSONB、Apache CouchDB 做许可与发版节奏选型对比
FerretDB 2.7.0 介绍与选型指南
一、信息基准
- 查询日期:2026-10-18(本文全部版本号、发行日期、许可与兼容信息均于该日联网溯源官方渠道,未做本地安装与实测)。
- 版本依据:FerretDB 官方最新稳定版为 v2.7.0(GitHub Releases 发行记录,发布于 2025-11-10);官方文档站当前版本为 v2.7(另有 v2.8 开发中文档、v2.5 与 v1.24 维护文档)。
- 组件版本配对:FerretDB v2.7.0 官方声明与 DocumentDB v0.107.0-ferretdb-2.7.0 扩展搭配工作最佳;后端依赖 PostgreSQL 加 DocumentDB 扩展。
1.1 官方来源清单
| 来源 | 地址 | 用途 |
|---|---|---|
| FerretDB 官方文档(Introduction) | https://docs.ferretdb.io/ | 产品定位、协议转换说明 |
| 兼容性与已知差异(Compatibility) | https://docs.ferretdb.io/migration/compatibility/ | 命令支持矩阵、限制条目 |
| 安装文档(DEB 包) | https://docs.ferretdb.io/installation/ferretdb/deb/ | 快速上手步骤 |
| GitHub 仓库 README 与 LICENSE | https://github.com/FerretDB/FerretDB | 架构图、许可证(Apache-2.0) |
| GitHub Releases(releases.atom) | https://github.com/FerretDB/FerretDB/releases | v2.7.0 发行说明与日期 |
| DocumentDB 扩展仓库 | https://github.com/documentdb/documentdb | 存储引擎扩展 |
| 官网 | https://www.ferretdb.com/ | 商业与托管信息 |
| 仓库元数据查询(ungh.cc 同步副本) | https://ungh.cc/repos/FerretDB/FerretDB | GitHub stars 数 |
二、软件概述
本文介绍的是 FerretDB 2.7.0。FerretDB 是一个开源的 MongoDB 替代品:它本身是一个代理服务,将 MongoDB 5.0 及以上版本的线上协议(wire protocol)查询转换为 SQL,并以 PostgreSQL 加 DocumentDB 扩展作为实际数据库引擎。项目采用 Apache-2.0 许可证,主程序使用 Go 语言编写。
项目诞生的直接动因是 MongoDB 从开源许可证转向 SSPL 后带来的授权复杂性:官方 README 明确指出,多数 MongoDB 用户并不需要 MongoDB 的高级特性,他们需要的只是一个"好用、驱动熟悉、且不受许可限制"的开源文档数据库,FerretDB 正是为填补这一空白而生。
在兼容性定位上,官方文档表述为:所有与 MongoDB 5.0+ 兼容的驱动与应用,理论上都应与 FerretDB 兼容;在多数场景下可作为 MongoDB 5.0+ 的直接替换(drop-in replacement)。官方同时建议在迁移生产前先通过预迁移测试验证应用适配性。
v2.7.0 是 2.x 系列的当前稳定版,官方发行说明要点包括:
- 跳过了 v2.6.0 版本号,以对齐 FerretDB 与 DocumentDB 的版本编号体系;
- 新增基础版 MCP server 支持(后续版本将持续增强);
- PostgreSQL 连接改为复用模式,通常带来一定性能收益;
- Prometheus 指标与 OpenTelemetry 追踪名称有变更,官方标注其"尚不稳定"。
三、核心架构
3.1 三层组件模型
官方 README 给出的架构流向为:
任意应用(任意 MongoDB 驱动)
│ MongoDB 协议(BSON)
▼
FerretDB(Go 单二进制代理)
│ PostgreSQL 协议(SQL)
▼
PostgreSQL(DocumentDB 扩展)─── 实际数据存储
- 客户端层:任何 MongoDB 驱动或应用程序,无需修改代码即可连接;
- 代理层:FerretDB 负责 MongoDB 线上协议的解析、命令转换与鉴权,本身不持久化数据;
- 存储层:PostgreSQL 挂载微软开源的 DocumentDB 扩展,承担文档数据的落盘、索引与查询执行。
3.2 版本配对机制
FerretDB 与 DocumentDB 扩展存在严格的一一配对关系,这是 2.x 架构最核心的运维约束:
| FerretDB 版本 | 配对 DocumentDB 版本 |
|---|---|
| v2.7.0 | v0.107.0-ferretdb-2.7.0 |
| v2.5.0 | v0.106.0-ferretdb-2.5.0 |
官方安装文档明确要求:升级 FerretDB 前必须先升级至匹配版本的 DocumentDB 包,并称"遵循 DocumentDB 升级指南是升级成功的关键"。
3.3 分发形态
- Linux 软件包:
.deb(Debian/Ubuntu)与.rpm(RHEL 系)包,DEB 包内置 systemd 单元;.deb分生产包(ferretdb.deb)与调试包(ferretdb-dev.deb,含明显降速的调试特性,禁止用于生产); - 独立二进制与源码构建:官方建议用户直接使用官方发布的二进制与软件包,而非自行构建;
- Go 库嵌入:提供 Go library package,可将 FerretDB 嵌入应用程序进程;
- 托管服务:官方列出 FerretDB Cloud,以及 Civo、Tembo、Elestio、Cozystack 等第三方托管。
四、功能特性
4.1 MongoDB 协议兼容
- 支持 MongoDB 5.0+ 线上协议,可直接复用既有 MongoDB 驱动与应用;
- 官方维护"已测试兼容应用"清单(compatible applications)与公开路线图;
- 使用与 MongoDB 相同的错误名称与错误码。
4.2 命令支持面(官方兼容矩阵节选)
以官方 Compatibility 页(v2.7 文档)为准,管理命令支持情况节选:
| 命令 | 状态 |
|---|---|
| create / createIndexes / listCollections / listDatabases / listIndexes | 支持 |
| drop / dropDatabase / dropIndexes / renameCollection | 支持 |
| collMod / compact / reIndex / currentOp / getParameter / killCursors | 支持 |
| aggregate / count / distinct(聚合类) | 支持 |
| cloneCollectionAsCapped / convertToCapped / dropConnections | 尚未实现 |
| killOp / logRotate / setParameter / shutdown | 尚未实现 |
4.3 可观测性
- 内置 Prometheus 指标暴露与 OpenTelemetry 追踪;官方在 v2.5.0 与 v2.7.0 发行说明中两次强调指标命名处于调整期、"尚不稳定",升级时需关注 breaking changes;
- 提供日志获取指南(getting logs)用于运维排障。
4.4 新兴集成
- v2.7.0 起提供基础 MCP server 支持,面向 AI 工具链接入场景;
- 内置遥测(telemetry)机制,官方建议开启以获取新版本通知。
五、快速上手
以下步骤引自官方安装文档《DEB package》(https://docs.ferretdb.io/installation/ferretdb/deb/ ),本文未做本地实测:
- 准备存储引擎:FerretDB 不会自动安装 PostgreSQL 与 DocumentDB 扩展,需先按官方《DocumentDB extension DEB package installation guide》完成两者的安装;
- 下载软件包:从 GitHub Releases 发行页下载与发行说明匹配的
.deb包(生产场景推荐ferretdb.deb;调试场景使用带-dev后缀的包),重命名为ferretdb.deb; - 安装并验证:
sudo dpkg -i ferretdb.deb
ferretdb --version
- 启动管理:
.deb包自带 systemd 单元,安装后自动启动 FerretDB,systemd 配置方法见官方《systemd configuration guide》; - 客户端连接:使用 MongoDB 连接串
mongodb://<username>:<password>@127.0.0.1:27017/,通过mongosh或任何 MongoDB 5.0+ 客户端/驱动连接; - 版本升级:先升级 DocumentDB 到与新版本匹配的包,再安装新
.deb包并以ferretdb --version验证。
更快捷的评估路径:官方文档另提供 Evaluation setup guide(评估环境指南),适合快速体验;正式部署请遵循上述安装指南。
六、适用场景与限制
6.1 适用场景
- 团队需要 MongoDB 驱动生态的易用性,但 SSPL 许可构成法务障碍(开源项目、早期商业项目);
- 已有成熟的 PostgreSQL 运维、备份与监控体系,希望文档数据库复用该体系;
- 需要将 FerretDB 以 Go 库形式嵌入应用,或选用托管服务快速起步;
- MongoDB 侧仅使用常规 CRUD、索引与聚合能力,未深度依赖未实现的管理命令。
6.2 已知限制(引自官方 Compatibility 页)
- 错误消息文本可能与 MongoDB 不完全一致(错误名与错误码保持一致);官方明确表示此项不计划修改;
- 集合名必须为合法 UTF-8 字符串,MongoDB 允许的非法 UTF-8 集合名在 FerretDB 不受支持;
- 部分管理命令尚未实现(见 4.2 节矩阵中"尚未实现"条目);
- 除上述两类官方声明外,其余行为差异官方均按问题(bug)对待并纳入公开路线图;
- 运行依赖 DocumentDB 扩展且版本必须严格配对,升级顺序敏感;
- Prometheus 指标与 OpenTelemetry 追踪命名尚不稳定,监控告警配置需随版本核对;
- 官方提示:上生产前请验证其是否适合你的应用。
七、同类选型对比
对比对象选取 MongoDB、PostgreSQL(JSONB 文档能力)与 Apache CouchDB,均为可自建的文档型数据库方案。下表数据查询日期均为 2026-10-18,stars 数经 ungh.cc(GitHub 仓库元数据只读副本)查询,发行信息来自各项目官方发行渠道;查询渠道受限未取到的数据如实标注"官方未公布"。
| 维度 | FerretDB 2.7.0 | MongoDB 9.0 | PostgreSQL 18 + JSONB | Apache CouchDB 3.5 |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | SSPL-1.0 | PostgreSQL License(类 BSD/MIT) | Apache-2.0 |
| GitHub stars | 11,101 | 官方未公布(查询渠道受限) | 官方未公布(查询渠道受限) | 官方未公布(查询渠道受限) |
| 最近发版 | v2.7.0(2025-11-10) | r9.0.4(2026-10-14,GitHub Releases) | 18.6(官方源码目录在列最新) | 3.5.3(2026-10-10,GitHub Releases) |
| 版本节奏 | 2025 年内 6/7/8/11 月均有小版本发行,约 1-2 月一版 | 9.0.2 与 9.0.4 补丁同日发布(2026-10-14),补丁节奏快 | 小版本按季度滚动(18.2 → 18.6) | 3.5.x 稳定线滚动维护 |
| 兼容矩阵 | MongoDB 5.0+ 驱动/应用;命令为 MongoDB 子集;依赖 PostgreSQL + DocumentDB | 自家驱动与 Atlas 全生态,功能最完整 | JSONB 文档存取 + 全语言 PostgreSQL 驱动,需 SQL 侧自建查询 | CouchDB HTTP API 与复制协议生态 |
| 官方文档 | docs.ferretdb.io | mongodb.com/docs | postgresql.org/docs | docs.couchdb.apache.org |
选型建议:若团队必须使用 MongoDB 驱动与命令习惯、又要求许可证彻底开源,FerretDB 2.7.0 是当前最直接的替代路径(前提是接受 PostgreSQL + DocumentDB 的版本配对约束与命令子集);许可无忧且需要完整 MongoDB 能力时仍应直选 MongoDB;若业务查询可 SQL 化、无 MongoDB 驱动绑定,PostgreSQL JSONB 的成熟度与生态更稳;仅当多端复制同步是硬需求时再考虑 CouchDB。
八、参考链接
- FerretDB 官方文档首页(Introduction):https://docs.ferretdb.io/
- 兼容性与已知差异:https://docs.ferretdb.io/migration/compatibility/
- DEB 包安装指南:https://docs.ferretdb.io/installation/ferretdb/deb/
- GitHub 仓库(README、LICENSE、架构图):https://github.com/FerretDB/FerretDB
- v2.7.0 发行说明:https://github.com/FerretDB/FerretDB/releases/tag/v2.7.0
- DocumentDB 扩展:https://github.com/documentdb/documentdb
- 官网与托管服务:https://www.ferretdb.com/
- Go 库包:https://pkg.go.dev/github.com/FerretDB/FerretDB/v2/ferretdb