拓冰建站拓冰建站
首页 / 资讯中心 / 正文

PostgreSQL 能否成为“一库通吃“的数据库?FerretDB 与 Tembo 的生态实践

后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载PostgreSQL 凭借开源特性与可扩展的扩展生态正在被越来越多团队用来承载超出传统关系型场景的工作负载。本文基于 FerretDB 与 PostgreSQL 开发平台 Tembo 团队的一次深度访谈梳理 PostgreSQL 扩展生态如何支撑一库通吃的愿景重点剖析 FerretDB 如何让 Postgres 承载 MongoDB 文档数据库工作负载并结合仓库源码讲解 FerretDB 的架构、配置方式与在 Tembo 上的集成细节。读完本文你将理解Postgres 万能论背后的真实工程逻辑并掌握 FerretDB 作为文档工作负载扩展的实际接入路径。PostgreSQL为什么能承载一切工作负载PostgreSQL 是全球最流行的数据库之一围绕它已经形成了庞大的商业与开源生态。访谈中 Tembo 团队给出了一个核心判断PostgreSQL 之所以有潜力成为一库通吃的数据库根本原因在于两点——开源与可扩展性。开源意味着任何人都可以无限制地学习、使用和贡献这催生了大量围绕 Postgres 的专家与公司可扩展性则让 Postgres 能突破传统 OLTP 场景通过扩展覆盖各类非典型用例。Tembo 团队在访谈中列举了典型的扩展组合工作负载对应 PostgreSQL 扩展向量检索pgvector机器学习postgresml联机分析处理OLAPcolumnar地理空间PostGIS文档数据库MongoDB 兼容FerretDB正如 FerretDB 仓库 README.md 所述FerretDB 是一个开源 MongoDB 替代方案本质上是将 MongoDB 5.0 线协议查询转换为 SQL 的代理以带 DocumentDB 扩展的 PostgreSQL 作为数据库引擎。这正是用 Postgres 做更多事的典型实现。Tembo把 Postgres 生态产品化的开发者平台Tembo 的目标是把整个 PostgreSQL 生态产品化成一个开发者友好平台让开发者在数据栈中需要使用的工具更少。Tembo 团队在访谈中指出现代数据栈已经变得过于庞杂——每个工具都承诺解决一个数据问题但合在一起却带来了不断增长的复杂性和成本。Tembo Stacks面向特定用例的预配置组合Tembo Stacks 是经过精选的扩展、应用与 Postgres 配置组合针对特定用例设计以开源形式提供可通过 Kubernetes operator 部署在 Tembo Cloud 上支持一键部署。访谈中 Tembo 团队强调开发者经常只用到 PostgreSQL 能力的一小部分因为发现、评估、信任、安装并成功使用扩展是一件困难的事。Stacks 正是为解决这一痛点而生让开发者不必纠结该用哪些扩展、如何安装组合、如何为用例配置 Postgres。对社区的投入与开源许可Tembo 团队还介绍了他们对 PostgreSQL 社区的多项贡献包括 pgmq、trunk、pg_later、pg_vectorize、prometheus_fdw、clerk_fdw 等扩展且全部采用 PostgreSQL 许可证发布。访谈中特别提到一个衡量项目成功的指标pgmq 已有非 Tembo 雇员的外部开发者担任 codeowner这说明开源协作已经深入项目日常。为什么是 PostgreSQL稳定性、社区与反锁定Tembo 团队在访谈中解释了选择 PostgreSQL 的理由它是一个稳定、由社区支持、可靠的开源项目声誉卓著。更重要的是开源数据库是长期趋势MySQL 与 PostgreSQL 都已有数十年历史新数据库也多以开源形式出现供应商锁定vendor lock-in对数据库这类业务关键组件是真实问题基于开源数据库构建能保留足够的选项与灵活性PostgreSQL 是真正由社区运营的项目尽管出现过诸多 forkPostgres 依然存活并超越了它们。FerretDB 在一库通吃版图中的位置访谈中Tembo 团队将 FerretDB 称为用 Postgres 支撑更多非典型用例的完美例子。其核心价值在于开发者可以在不修改应用的情况下用 Postgres 承载文档存储工作负载这大大降低了迁移 MongoDB 应用的门槛。FerretDB 的架构协议转换代理从仓库源码可以确认 FerretDB 的代理架构。ferretdb.go 中定义的Config结构体揭示了核心运行参数// Config represents FerretDB configuration. type Config struct { // PostgreSQL URL. Required. PostgreSQLURL string // Listen TCP address for MongoDB protocol. // If empty, TCP listener is disabled. ListenAddr string // State directory. Required. StateDir string // Defaults to [slog.LevelError]. LogLevel slog.Leveler ... }客户端通过 MongoDB 协议BSON与 FerretDB 通信FerretDB 将其转换为 PostgreSQL 协议SQL发往后端数据库。README 中的架构图清晰地描述了这一链路这意味着应用侧可以继续使用原有的 MongoDB 驱动、工具、UI 与查询语言而数据实际存储在 PostgreSQL 中从而规避 MongoDB SSPL 许可证带来的开源与早期商业项目使用限制。关键配置如何把 FerretDB 指向 PostgresFerretDB 通过--postgresql-url标志环境变量FERRETDB_POSTGRESQL_URL连接 PostgreSQL默认值为postgres://127.0.0.1:5432/postgres。完整参数见 flags.md 与命令行入口 main.go。该文档还说明了连接池的默认行为pool_min_conns未设置时为 10覆盖 pgx 默认的 0pool_max_conns未设置时为 50覆盖 pgx 默认的 4application_name始终设为FerretDBtimezone始终设为UTC。监听 MongoDB 协议的地址由--listen-addrFERRETDB_LISTEN_ADDR控制默认127.0.0.1:27017在 Docker 镜像中则为:27017。FerretDB 还支持 Unix socket--listen-unix、TLS--listen-tls及相关证书参数、HTTP Data API 与 MCP 服务器等多个监听口具体见 flags.md。Tembo 上的 Mongo Alternative on Postgres 栈Tembo 团队在访谈中说明他们构建了Mongo Alternative on Postgres栈用户获得托管 Postgres 体验API 则由 FerretDB访谈原文称 Ferret驱动。这样不擅长运维 Postgres 的开发者也能以一键方式使用 FerretDB。该栈针对文档存储工作负载做了优化同时仍可在此基础上叠加 Tembo 上的其他 Postgres 扩展。集成过程中的最大挑战在网络路由层面Tembo 的 tembo-operator 原先只为与 Postgres 通信的服务支持 TCP 入口为 Pod 中并置的应用服务支持 HTTP 入口。为了让用户成功连接 FerretDB 容器团队需要为应用服务新增向 Kubernetes 申请 TCP 入口的 API。最终的用户体验是下载 SSL 证书、运行一条 mongosh 连接串即可完成接入。类似容器并置 连接串直连的接入模式在仓库其他文档中也有印证——例如 如何在 Kubernetes 中使用 Pulumi 部署 FerretDB 展示了通过FERRETDB_POSTGRESQL_URL环境变量将 FerretDB 容器指向 StackGres 管理的 PostgreSQL 集群并用mongosh mongodb://ferretdb:passwordhost:27017/ferretdb?authMechanismPLAIN完成连接。多实例与代理模式FerretDB 还支持多种运行模式默认的normal模式由 FerretDB 独立处理请求proxy模式将请求转发到另一个 MongoDB 兼容数据库diff-normal与diff-proxy模式同时将请求转发给两个数据库并记录差异常用于兼容性测试与调试。这一设计为Postgres 一库多用的场景提供了灵活的接入形态。一库通吃面临的现实挑战访谈中 Tembo 团队也坦诚地指出了让Postgres 万能论落地需要克服的挑战可扩展性是基础而非全部Postgres 生来为可扩展而设计潜力明确但要把潜力变成生产力仍需要针对具体工作负载的优化配置——这正是 Stacks 存在的意义需要与其他数据库进行系统对比要向用户证明 Postgres 及其扩展生态足以覆盖大多数用例这需要大量可验证的对比证据运维门槛扩展的发现、组合与配置仍不简单需要社区层面的解决方案来降低门槛。结论FerretDB 是一库通吃拼图中的关键一块围绕 PostgreSQL 的开源理念催生了源源不断的创新整个生态提供了把想法落地所需的各个部件。FerretDB 正是其中连接文档数据库工作负载与 PostgreSQL 的桥梁通过给 PostgreSQL 环境增加 MongoDB 兼容性团队无需更换数据库即可服务原本依赖 MongoDB 驱动与工具的应用既保留开源自由度又规避供应商锁定。访谈双方共同的判断是让工具足够简单开发者才会愿意在不同用例中使用它们社区的方向建议会持续塑造项目演进。正如 Tembo 团队所期望的未来 FerretDB 与 Postgres 的深度协作如针对 MongoDB 替代体验优化 Postgres 配置、共享最佳实践会进一步推动PostgreSQL 成为一库通吃数据库这一愿景的实现。补充背景Tembo面向构建一切数据服务的 Postgres 开发者平台通过 Stacks预构建 Postgres 配置让开发者无需复杂构建或额外数据团队即可快速创建专用数据服务。FerretDB构建于 PostgreSQL 之上的真正开源 MongoDB 替代方案允许开发者将 MongoDB 驱动无缝用于 PostgreSQL 后端并支持 MongoDB 工具、驱动、UI 与查询语言。FerretDB 与 MongoDB Inc. 无任何隶属或关联关系。想深入了解 FerretDB 的架构与使用可继续阅读 README.md、配置文档 以及 Pulumi 部署实战。赞分享后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载相关推荐DocumentDB与FerretDB集成构建完整的文档数据库生态DocumentDB与FerretDB集成构建完整的文档数据库生态 DocumentDB作为基于PostgreSQL的文档数据库通过与FerretDB的深度【亲测免费】 FerretDB一个高性能、开源的PostgreSQL兼容数据库FerretDB一个高性能、开源的PostgreSQL兼容数据库 简介 是一款创新的数据库系统它完全兼容 PostgreSQL 的协议和 SQL 查询语言后端数据库文档数据库FerretDB 与 HashiCorp Vault 集成实战为 MongoDB 兼容数据库动态颁发凭据FerretDB 与 HashiCorp Vault 集成实战为 MongoDB 兼容数据库动态颁发凭据 无论应用如何健壮只要数据库凭据database后端数据库文档数据库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门