在 Tembo 托管 Postgres 上运行 FerretDB:部署 MongoDB 工作负载的完整指南
后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载FerretDB 是一个真正开源的 MongoDB 替代方案它把 MongoDB 兼容层叠加在 PostgreSQL以及 SQLite等关系型数据库之上Tembo 则是一个以 PostgreSQL 为核心的托管开发平台提供开箱即用的预配置栈。本文将以仓库中的官方博客《How to Run MongoDB Workloads with FerretDB on Tembo》为骨架完整演示如何在 Tembo 上创建 Mongo Alternative on Postgres 实例、获取 TLS 连接串、用mongoimport导入 JSON 数据并通过mongosh执行真实的 MongoDB 查询与聚合工作负载。读完本文你将掌握一套从零开始、可直接用于生产环境的托管 Postgres MongoDB 兼容部署方案并理解其底层认证与 TLS 机制。为什么是 FerretDB TemboFerretDB 是一个可嵌入的 MongoDB 兼容实现客户端使用 MongoDB 协议与它通信而它把文档操作翻译为 PostgreSQL 查询存储层完全由 PostgreSQL 承载。从源码看它的核心配置Config 结构体只要求提供PostgreSQLURL、监听地址ListenAddr与状态目录StateDir即可启动默认通过:27017端口对外提供 MongoDB 协议服务见 监听地址配置。Tembo 的价值在于把托管 Postgres FerretDB 容器打包成了按需创建的服务它提供预构建的 Stacks栈开发者不需要自行构建、安装 Docker 或维护额外的基础设施团队就能获得一个经过调优的文档存储实例。在 Tembo 上FerretDB 以容器形式与你的数据库并置部署在同一网络内从而降低访问延迟。前置条件开始之前请准备好以下环境Tembo 账号用于创建托管实例参考 Tembo 官方 Getting Started 指南完成注册。mongoshMongoDB Shell用于连接和操作 FerretDB 实例也是下面所有示例的执行工具。psqlPostgreSQL 命令行客户端用于在需要时直接检查底层 PostgreSQL 数据或创建用户。了解 Tembo 上的 FerretDB 栈Tembo 中的 Stack栈是一套为特定用途预构建、面向企业场景调优的 Postgres 配置集合。对于 MongoDB 用户Tembo 提供了名为Mongo Alternative on Postgres的栈针对文档存储document store工作负载进行了专门优化栈内组件仍然可调整并且可以利用 Tembo 上丰富的 Postgres 扩展体系进一步扩展能力Tembo 不仅托管你的 Postgres 实例还会在数据库旁边以容器方式运行 FerretDB减少客户端访问 FerretDB 时的网络跳数。对于正在评估 MongoDB 迁移、又希望继续使用成熟 PostgreSQL 生态的团队来说这种几秒钟创建、即开即用的部署方式可以显著降低引入新数据库的管理成本。在 Tembo 上创建 FerretDB 实例登录 Tembo 控制台后创建 FerretDB 实例的步骤如下在创建实例页面选择Mongo Alternative on Postgres栈如上图所示。按需配置云服务商cloud provider、实例规格instance type、存储大小storage size和地域region。点击Create实例预配通常需要几分钟时间。实例就绪后在实例详情页可以查看到连接信息包括连接串connection string、用户名username、密码password和主机host连接串格式与根证书Tembo 上 FerretDB 实例的连接串遵循以下格式mongodb://USERNAME:PASSWORDHOST:27017/ferretdb?authMechanismPLAINtlstruetlsCaFile$(pwd)/ca.crt逐段拆解参数含义mongodb://USERNAME:PASSWORDHOST:27017/ferretdbMongoDB 协议地址、端口27017与目标数据库ferretdbauthMechanismPLAIN认证机制由 Tembo 连接详情生成配合 Tembo 侧的用户体系使用tlstrue启用 TLS 加密连接客户端与服务端之间的流量将被加密tlsCaFile$(pwd)/ca.crt指定 SSL 根证书的本地路径$(pwd)表示当前工作目录你需要先从连接详情面板下载根 SSL 证书root CA certificate。如果证书不放在当前目录请把$(pwd)替换为证书实际路径例如mongodb://USERNAME:PASSWORDHOST:27017/ferretdb?authMechanismPLAINtlstruetlsCaFile/your/certificate/path/ca.crtTLS 配置并不是 Tembo 独有FerretDB 自身同样支持通过FERRETDB_LISTEN_TLS等环境变量开启 TLS 监听客户端侧使用tlstrue与tlsCAFile参数建立加密连接完整说明见 TLS 连接文档。用 mongoimport 向 FerretDB 导入 JSON 数据从下载好的证书所在目录执行mongoimport可以把一个包含采购记录supply records的 JSON 文件导入ferretdb数据库的supply集合中mongoimport --urimongodb-connection-string --db ferretdb --collection supply --file /path/to/exportedFile.json使用时请将mongodb-connection-string替换为上面获取到的完整连接串/path/to/exportedFile.json替换为 JSON 文件的真实路径。mongoimport是 MongoDB 官方工具链的一部分FerretDB 对这类原生工具保持兼容在仓库的 数据迁移指南 中同样推荐使用mongoexport/mongoimport以及mongodump/mongorestore在 MongoDB 与 FerretDB 之间迁移数据命令格式与 MongoDB 完全一致。通过 mongosh 连接并运行 MongoDB 工作负载导入成功后在包含根证书的目录中用mongosh直接连接实例mongosh mongodb-connection-string连接建立后即可执行标准的 MongoDB 操作。下面以supply集合为例展示三类典型工作负载。示例 1查看单条采购记录先通过findOne()了解supply集合中文档的结构与字段类型db.supply.findOne()结果response { _id: ObjectId(65c0d6d5cfba3092d3958fbf), transaction_id: 10004, customer_name: Jorge Lopez, customer_location: Madrid, Spain, product_category: Sports Equipment, transaction_time: ISODate(2023-07-10T10:00:00.000Z), product_name: Adidas Running Shoes, price: 75, quantity: 2, payment_method: Bank Transfer }可以看到每条记录包含交易编号、客户、品类、时间、商品、价格、数量与支付方式等字段_id由 MongoDB 风格的 ObjectId 自动生成。示例 2按日期范围查询数据分析某段促销周期内的销售影响时可以用$gte/$lte限定transaction_time的取值区间db.supply.find({ transaction_time: { $gte: ISODate(2023-07-01T00:00:00.000Z), $lte: ISODate(2023-07-03T23:59:59.000Z) } })结果节选response [ { _id: ObjectId(65c0d6d5cfba3092d3958fdb), transaction_id: 10032, customer_name: Emma Olsen, customer_location: Bergen, Norway, product_category: Electronics, transaction_time: ISODate(2023-07-01T14:00:00.000Z), product_name: Amazon Echo, price: 99, quantity: 1, payment_method: Bank Transfer }, { _id: ObjectId(65c0d6d5cfba3092d3958fdc), transaction_id: 10033, customer_name: Jens Petersen, customer_location: Copenhagen, Denmark, product_category: Fashion, transaction_time: ISODate(2023-07-02T15:00:00.000Z), product_name: Fossil Watch, price: 150, quantity: 1, payment_method: MobilePay }, { _id: ObjectId(65c0d6d5cfba3092d3958fea), transaction_id: 10047, customer_name: Sarah Johnson, customer_location: Sydney, Australia, product_category: Electronics, transaction_time: ISODate(2023-07-03T13:00:00.000Z), product_name: Dell Laptop, price: 1200, quantity: 1, payment_method: Credit Card }, { _id: ObjectId(65c0d6d5cfba3092d3958feb), transaction_id: 10048, customer_name: Mehmet Yilmaz, customer_location: Istanbul, Turkey, product_category: Fashion, transaction_time: ISODate(2023-07-03T14:00:00.000Z), product_name: Handmade Bag, price: 80, quantity: 1, payment_method: Debit Card } ]该查询只保留 2023 年 7 月 1 日至 3 日之间发生的交易可用于促销活动效果的对比分析。示例 3聚合找出销量最高的商品借助聚合管道可以按商品名分组并汇总销售数量从而识别最热销的商品db.supply.aggregate([ { $group: { _id: $product_name, totalQuantity: { $sum: $quantity } } }, { $sort: { totalQuantity: -1 } }, { $limit: 1 } ])结果response [{ _id: The Alchemist, totalQuantity: 5 }]这个操作先把记录按product_name分组用$sum累加各商品的quantity再按totalQuantity降序排序并只取第一名最终得到销量最高的商品。以上只是几个代表性格例findOne/find覆盖了文档查询聚合管道覆盖了$group、$sort、$limit等常用阶段。FerretDB 对这些 MongoDB 语义都有对应的实现与集成测试支撑例如查询类命令可参考 integration/query 目录下的测试聚合类命令可参考 aggregation 集成测试你可以在自己的实例上继续尝试insert、update、delete、索引等更多操作。底层机制认证与 TLS 如何工作在 Tembo 上运行的连接串看似简单背后是 FerretDB 与 PostgreSQL 深度集成的结果。理解这些机制有助于你在自建环境中复现同样的部署认证转发给 PostgreSQLFerretDB 自身不保存用户名与密码而是把凭据转发给 PostgreSQL 校验。仓库的 认证文档 明确指出客户端侧目前支持SCRAM-SHA-256机制用户在 PostgreSQL 中创建后即可通过mongodb://user:passwordhost:27017/访问 FerretDB。认证流程在服务端由saslStart/saslContinue命令实现入口见 msg_saslstart.go 中的 msgSASLStart。TLS 加密tlstrue与tlsCaFile是标准 MongoDB URI 参数。FerretDB 在服务端通过--listen-tlsFERRETDB_LISTEN_TLS、证书文件与 CA 文件三个配置项开启 TLS 监听详见 TLS 连接文档Tembo 托管实例则在连接详情中直接生成了带这些参数的连接串省去了手工拼接。端口约定MongoDB 协议默认监听27017端口FerretDB 默认值为127.0.0.1:27017Docker 场景为:27017见 flags.md因此 Tembo 的连接串也统一使用该端口。下一步通过本文的流程你可以在几分钟内获得一个高可用、可扩展的托管 Postgres MongoDB 兼容层组合Tembo 负责实例运维与扩展生态FerretDB 负责把 MongoDB 工作负载翻译并落到 PostgreSQL 上期间无需自行搭建 Docker 环境或维护复杂构建。如果你的目标是从 MongoDB 迁移到开源方案并且希望工作负载运行在托管 Postgres 服务之上那么基于 Tembo 的 FerretDB 栈是一个值得评估的起点。你也可以参考仓库中的 FerretDB 安装文档 与 认证配置在自有基础设施上复现同样的架构。赞分享后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载相关推荐在 Taikun CloudWorks 上运行托管 FerretDB 实例迁移 MongoDB 工作负载的完整实战指南在 Taikun CloudWorks 上运行托管 FerretDB 实例迁移 MongoDB 工作负载的完整实战指南 本文以 FerretDB 官方博客指南后端数据库文档数据库使用 FerretDB 在 Aiven for PostgreSQL 上运行 MongoDB 工作负载云上部署实战指南使用 FerretDB 在 Aiven for PostgreSQL 上运行 MongoDB 工作负载云上部署实战指南 本指南将带你完整走一遍以 Aiven后端数据库文档数据库在 Kubernetes 上使用 CyberTec Postgres Operator 部署 FerretDB开源 MongoDB 替代方案的完整实操指南在 Kubernetes 上使用 CyberTec Postgres Operator 部署 FerretDB开源 MongoDB 替代方案的完整实操指南 本后端数据库文档数据库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

我把 Jev 接入了业务系统:3 个真实场景告诉你什么时候该用它、什么时候别用

我把 Jev 接入了业务系统:3 个真实场景告诉你什么时候该用它、什么时候别用

最近 Jev 这个词在技术圈刷了屏——前 OpenAI 研究员做的「System One」决策模型,号称比传统大模型快 200 倍、成本低 100 倍。很多同学问我:这玩意儿到底能不能用在生产环境?适合什么场景?这篇文章不讲虚的,直接上干货…

2026/9/24 3:33:37 阅读更多 →
基于SG3525的750W半桥开关电源设计与调试全解析

基于SG3525的750W半桥开关电源设计与调试全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 3:33:37 阅读更多 →
[从0开始精通AI] Python基础06 模块与软件包

[从0开始精通AI] Python基础06 模块与软件包

摘要:本文系统讲解Python模块与软件包的核心知识,涵盖模块概念、五种导入方式、自定义模块中的__name__与__all__变量作用,以及包的结构、__init__.py功能和绝对/相对导入区别。通过实例演示模块复用、代码组织与导入控制,帮助开发…

2026/9/24 3:33:37 阅读更多 →

最新新闻

AI陪伴机器人API设计-api-users到api-alerts的二十个接口

AI陪伴机器人API设计-api-users到api-alerts的二十个接口

05-API设计-api-users到api-alerts的二十个接口黒漂技术佬 AI 伙伴(AI-Partner)「数据接口部署与二次开发」系列 05数据层拆完了,这篇上到接口层。AI 伙伴后端一共 9 个 Controller、19 个 HTTP 接口,全部基于 http://localhost:…

2026/9/24 4:03:53 阅读更多 →
SSM毕设项目:基于 SSM 的视频课程资源管理系统的设计与实现 基于 SSM 的在线学习资源推送系统 (源码+文档,讲解、调试运行,定制等)

SSM毕设项目:基于 SSM 的视频课程资源管理系统的设计与实现 基于 SSM 的在线学习资源推送系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 4:03:53 阅读更多 →
GitHub趋势榜解读:从打不开到跑起来的全能实战指南

GitHub趋势榜解读:从打不开到跑起来的全能实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 4:03:53 阅读更多 →
LDO稳定性设计:STB仿真原理与相位裕度实战解析

LDO稳定性设计:STB仿真原理与相位裕度实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 4:03:53 阅读更多 →
牛客网 HJ61 放苹果

牛客网 HJ61 放苹果

牛客网 HJ61 放苹果题目链接:https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf一、原题完整陈述 题目描述 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?重点&#xff1…

2026/9/24 4:03:53 阅读更多 →
Qwen3-0.6B 后训练实践:一次被数据否定的预注册假设,以及 DPO 在小规模下的失效边界

Qwen3-0.6B 后训练实践:一次被数据否定的预注册假设,以及 DPO 在小规模下的失效边界

本文所有数字均来自本人单卡实测,原始 CSV / 日志见文末仓库。文中结论如无特别说明,均为 seed 42 单种子下的观察,不构成统计意义上的证明。 0. 为什么先写结论 这篇文章记录我做的一次完整的小模型后训练实验:在一张 RTX 4060 …

2026/9/24 4:02:52 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →