在 Elestio 上部署托管 FerretDB:五分钟搭建生产可用的 MongoDB 替代方案

发布时间:2026/9/24 14:14:49
在 Elestio 上部署托管 FerretDB:五分钟搭建生产可用的 MongoDB 替代方案 后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载FerretDB 是一款开源、以 PostgreSQLDocumentDB 扩展为后端的 MongoDB 替代品。本指南基于官方部署文档讲解如何在 Elestio 这一 DevOps 平台上以托管方式在任何云环境或本地机房中快速创建生产级 FerretDB 实例并通过mongosh连接执行 CRUD 操作。读完本文你将掌握从服务开通、云厂商选择、凭据获取到数据读写验证的完整实战流程同时理解其认证机制在源码层面的实现原理。FerretDB 与 Elestio 是什么FerretDB 是一个开源 MongoDB 替代品。按照仓库 README.md 的定义它是一个代理proxy将 MongoDB 5.0 的 wire protocol 查询转换为 SQL并以带 DocumentDB 扩展的 PostgreSQL 作为数据库引擎。对大多数只需要易用开源文档数据库的团队来说FerretDB 可以作为一个 drop-in 替代方案使用。Elestio 是一个 DevOps 平台负责帮你配置、运行、监控、备份、维护和加固开源软件实例。在 Elestio 上部署 FerretDB意味着你不需要自己搭建服务器、维护数据库进程和操心运维琐事就可以在任何云厂商AWS、DigitalOcean、Hetzner 等或本地on-premise环境获得一个托管实例整个开通流程通常不超过 5 分钟。仓库的 README.md 在 Managed FerretDB at cloud providers 一节中也将 Elestio 列为 FerretDB 官方认可的托管服务商之一。前提条件在开始之前你需要准备两样东西一个Elestio 账户用于创建和管理 FerretDB 服务mongoshMongoDB Shell用于连接数据库并执行操作。mongosh是一个独立的命令行客户端如果你的机器上尚未安装可以按 MongoDB 官方渠道安装也可以使用仓库快速上手方案中提供的 Docker 容器内置 Shell参见 README.md 的 Quickstart 部分。如何部署 FerretDB第一步选择 FerretDB 服务登录 Elestio 后从 Elestio 的服务仪表盘services dashboard中选中FerretDB服务进入创建流程。第二步选择云服务商接下来为你的项目选择一个云服务商。Elestio 提供了多种选项包括DigitalOceanHetznerAmazonAWSLinodeVultrScalewayBYOSBring Your Own Server自带服务器以本例来说我们在 DigitalOcean 上创建 FerretDB 实例。除了云服务商你还可以在此页设置Service Cloud Region服务云区域和Service Plan服务套餐按你的业务规模和地域需求选择合适的资源配置。第三步选择支持级别与高级配置在下一个页面选择你需要的技术支持级别例如远程备份保留时长remote backup retention服务快照service snapshots响应时间response timeSLA服务等级协议优先排队priority queuing等。确认配置后点击创建服务。实例和相关资源的开通provisioning可能需要几分钟时间之后你的 FerretDB 托管实例就绪了。第四步使用mongosh连接 FerretDB连接数据库需要实例的连接字符串connection string。在 Elestio 的服务仪表盘上选择Display DB Credentials显示数据库凭据即可获取。得到凭据后用mongosh按如下格式连接实例mongosh mongodb://username:passwordhost-address/ferretdb?authMechanismPLAIN替换其中的username、password、host-address为你的实际凭据与实例地址即可。连接成功后你就进入了 FerretDB 的交互式 Shell。连接字符串与认证机制的原理上面连接字符串中的?authMechanismPLAIN指定了认证机制。这里有必要结合 FerretDB 的源码说明其背后原理避免误解FerretDB不自己存储用户名和密码而是完全依赖 PostgreSQL 的认证体系所有用户凭据由 PostgreSQL 管理和校验。官方文档 website/docs/security/authentication.md 明确说明了这一设计客户端把凭据交给 FerretDBFerretDB 转发给 PostgreSQL由 PostgreSQL 校验后把结果回传。在客户端侧FerretDB 目前只支持SCRAM-SHA-256认证机制。这一点在源码中有直接证据saslStart命令的实现 internal/handler/msg_saslstart.go 中如果收到的mechanism不是SCRAM-SHA-256会直接返回MechanismUnavailable错误同时hello命令的响应中saslSupportedMechs也仅声明SCRAM-SHA-256见 internal/handler/msg_hello.go。示例中的PLAIN是连接层使用的机制标记实际落地认证时由 PostgreSQL 侧的用户凭据完成校验。认证默认是开启的对应启动参数--auth默认true关闭认证则可通过FERRETDB_AUTHfalse或--no-auth实现但官方不推荐在生产环境关闭参见 cmd/ferretdb/main.go 与认证文档。托管实例的用户凭据由 Elestio 在开通时为你创建好因此直接使用 Display DB Credentials 提供的连接串即可无需手动建用户。在实例上执行基本 CRUD 操作连接成功后即可向 FerretDB 实例写入和读取数据。下面按增、查、改、删四个步骤演示所有命令都在mongosh中执行。插入Insert向record集合插入一条文档db.record.insertOne({ username: JD, content: Enjoying the beautiful weather today! #sunnyday, likes: 120, timestamp: new Date() })insertOne在 FerretDB 中对应insert命令其命令注册与实现位于 internal/handler/commands.go 与 internal/handler/msg_insert.go。查询Read插入后执行db.record.find()查看文档response [ { _id: ObjectId(66d6a9346e70f5ffc91022c0), username: JD, content: Enjoying the beautiful weather today! #sunnyday, likes: 120, timestamp: ISODate(2024-09-03T06:14:12.634Z) } ]可以看到 FerretDB 返回了 MongoDB 风格的文档结构自动生成的_idObjectId 类型、原始字段以及ISODate格式的时间戳。find对应的命令实现可参考 internal/handler/msg_find.go。更新Update把 JD 这条帖子的likes更新为 150db.record.updateOne({ username: JD }, { $set: { likes: 150 } })输出response { acknowledged: true, insertedId: null, matchedCount: 1, modifiedCount: 1, upsertedCount: 0 }matchedCount: 1表示匹配到 1 条文档modifiedCount: 1表示实际修改了 1 条。更新命令由 internal/handler/msg_update.go 实现。你也可以再次执行db.record.find()确认数据已更新。删除Delete最后从集合中删除这条文档db.record.deleteOne({ username: JD })删除操作的命令实现位于 internal/handler/msg_delete.go。至此你已经完成了一次完整的增删改查闭环验证证明托管实例可以正常读写数据。生产环境使用要点虽然 Elestio 已经替你处理了大部分运维工作但有几点仍值得在生产中留意认证与用户管理托管实例的凭据由平台分配。如果你需要自己管理用户FerretDB 支持通过createUser命令创建 PostgreSQL 用户见 internal/handler/msg_createuser.go未指定角色时会默认添加clusterAdmin与readWriteAnyDatabase角色。也可以直接在 PostgreSQL 中使用CREATE USER创建。后端存储FerretDB 的数据实际存放在 PostgreSQL 中Elestio 的备份、快照等能力本质上是在保护 PostgreSQL 数据选择支持级别时建议按数据重要程度配置合适的备份保留策略。端口与连接安全默认 MongoDB 协议监听 27017 端口可参考 README.md 的 Quickstart 示例生产环境建议通过 Elestio 的网络配置限制来源 IP并妥善保管数据库凭据。结论通过 Elestio你可以在任意云环境或本地机房中在几分钟内获得一个生产可用的托管 FerretDB 实例不必再操心 DevOps 和基础设施问题。整个过程从选择服务、选云厂商、配置支持级别到用mongosh连接并完成 CRUD 验证链路清晰、上手门槛低。而且 FerretDB 本身是开源软件不存在厂商锁定no vendor lock-in问题未来随时可以把数据迁移到任何其他云环境。如果你希望深入了解 FerretDB 本身的能力边界、支持的命令清单与兼容性差异可以继续阅读仓库中的 website/docs 文档目录以及源码中 internal/handler/commands.go 内完整注册的命令列表。赞分享后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载相关推荐在 Kubernetes 上部署 FerretDB以 DocumentDB 为后端的高可用 MongoDB 替代方案在 Kubernetes 上部署 FerretDB以 DocumentDB 为后端的高可用 MongoDB 替代方案 本篇指南以 FerretDB v2.7后端数据库文档数据库5分钟上手FerretDB开源MongoDB替代方案的极速部署指南5分钟上手FerretDB开源MongoDB替代方案的极速部署指南 你还在为MongoDB的SSPL许可证烦恼吗还在寻找轻量级、易部署的开源文档数据库本文后端数据库文档数据库在 Kubernetes 上使用 CyberTec Postgres Operator 部署 FerretDB开源 MongoDB 替代方案的完整实操指南在 Kubernetes 上使用 CyberTec Postgres Operator 部署 FerretDB开源 MongoDB 替代方案的完整实操指南 本后端数据库文档数据库上一篇基于BookCorpus与Wikipedia的预训练hf_mirrors/JiangSuAscend/albert-base-v2数据处理全流程下一篇Bit v1.6.145 发布解读bit lane eject 新命令、Lane 作用域校验与多项稳定性修复创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考