5分钟上手FerretDB:开源MongoDB替代方案的极速部署指南
你还在为MongoDB的SSPL许可证烦恼吗?还在寻找轻量级、易部署的开源文档数据库?本文将带你5分钟内完成FerretDB的部署与基础使用,让你零成本体验与MongoDB兼容的开源数据库方案。读完本文你将掌握:Docker快速启动FerretDB、基础CRUD操作、数据持久化配置以及生产环境部署要点。
为什么选择FerretDB?
MongoDB曾以其易用性和丰富的驱动生态改变了开发者对数据库的认知,但随着许可证变更为SSPL,许多开源项目和中小企业不得不寻找替代方案。FerretDB作为真正开源的MongoDB替代品,通过将MongoDB协议转换为SQL,使用PostgreSQL作为存储引擎,完美填补了这一空白。
FerretDB的核心优势在于:
- 100%兼容MongoDB 5.0+协议,无需修改应用代码
- 基于PostgreSQL的稳定性和成熟生态
- 完全开源的MIT许可证,无商业使用限制
- 轻量级架构,资源占用远低于MongoDB
极速体验:Docker一键部署
环境准备
开始前请确保已安装Docker环境。通过以下命令验证安装:
docker --version
docker-compose --version
启动FerretDB容器
执行以下命令启动包含FerretDB和PostgreSQL的一体化容器(记得替换<username>和<password>):
docker run -d --name ferretdb -p 27017:27017 \
-e POSTGRES_USER=<username> \
-e POSTGRES_PASSWORD=<password> \
-v ./data:/var/lib/postgresql/data \
ghcr.io/ferretdb/ferretdb-eval:2
此命令会:
- 拉取最新的FerretDB评估镜像
- 创建数据卷确保数据持久化
- 暴露27017端口(MongoDB兼容端口)
- 启动内置的PostgreSQL数据库(带DocumentDB扩展)
验证部署状态
检查容器运行状态:
docker ps | grep ferretdb
成功运行后,你可以通过三种方式连接FerretDB:
-
MongoDB客户端:使用标准MongoDB连接字符串
mongodb://<username>:<password>@127.0.0.1:27017/ -
内置MongoDB Shell:直接进入容器执行
docker exec -it ferretdb mongosh mongodb://<username>:<password>@127.0.0.1:27017/ -
PostgreSQL直接连接:查看原始数据存储
docker exec -it ferretdb psql -U <username> postgres
基础操作指南
连接数据库
使用MongoDB Shell连接FerretDB:
mongosh mongodb://<username>:<password>@127.0.0.1:27017/
基本CRUD操作
创建数据库和集合:
use mydb
db.createCollection("users")
插入文档:
db.users.insertOne({
name: "Alice",
age: 30,
hobbies: ["reading", "hiking"]
})
查询文档:
db.users.find({ age: { $gt: 25 } })
更新文档:
db.users.updateOne(
{ name: "Alice" },
{ $set: { age: 31 } }
)
删除文档:
db.users.deleteOne({ name: "Alice" })
操作示例源码:website/blog/2022-11-14-mongodb-crud-operations-with-ferretdb.mdx
生产环境部署要点
数据持久化配置
评估环境中我们使用了本地卷挂载确保数据持久化:
-v ./data:/var/lib/postgresql/data
生产环境建议使用更可靠的存储方案,如:
- 网络存储卷(NFS/iSCSI)
- 云服务商提供的持久化存储
- PostgreSQL主从复制架构
安全加固
生产部署必须注意:
- 使用强密码并通过环境变量注入
- 限制容器网络访问,仅暴露必要端口
- 定期更新FerretDB镜像
- 启用TLS加密(FerretDB v1.2+支持)
性能优化
根据官方文档,可通过以下方式优化性能:
- 调整PostgreSQL配置参数
- 合理设计索引
- 监控慢查询并优化
- 考虑读写分离架构
性能调优指南:website/docs/configuration/
进阶使用与生态集成
FerretDB兼容大多数MongoDB工具和客户端,如:
- MongoDB Compass(图形化管理工具)
- Studio 3T(高级MongoDB客户端)
- NoSQLBooster(查询构建工具)
- 各种语言的MongoDB驱动
同时,FerretDB提供多种部署选项:
- 二进制安装包
- Kubernetes部署
- 云服务商托管版本
- 源码编译(不推荐生产使用)
客户端使用指南:website/blog/2023-07-10-mongodb-gui-using-ferretdb-nosqlbooster.md
总结与资源
通过本文,你已掌握FerretDB的基本部署和使用方法。作为MongoDB的开源替代方案,FerretDB在保持兼容性的同时,提供了真正的开源许可和轻量级架构。
相关资源:
- 官方文档:website/docs/
- 社区教程:README.md
- 部署指南:website/docs/installation/
- 兼容性列表:website/docs/migration/compatibility/
如需进一步学习,可以探索FerretDB的高级特性,如聚合管道、事务支持和备份策略。加入FerretDB社区,获取最新动态和技术支持。
停止容器命令:
docker stop ferretdb
完整操作指南:website/blog/2022-10-06-how-to-start-ferretdb-locally-with-docker.md
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



