NoSQL Postgres:使用FerretDB为您的Supabase项目添加MongoDB兼容性

NoSQL Postgres:使用FerretDB为您的Supabase项目添加MongoDB兼容性

💡 原文英文,约800词,阅读约需3分钟。
📝

内容提要

FerretDB是一个开源文档数据库,兼容MongoDB,支持Postgres和SQLite等后端。通过Docker本地运行FerretDB,开发者可以使用MongoDB的功能和命令。文章介绍了环境变量的设置、文档的插入与更新,以及如何将FerretDB部署到Fly.io以供生产使用,从而在Supabase项目中轻松集成MongoDB功能,避免供应商锁定。

🔎

延伸解读

FerretDB 如何桥接 MongoDB 与 Postgres

FerretDB 作为中间层,将 MongoDB 的文档操作转换为对 Postgres 的 SQL 查询。它把每个集合存储为 ferretdb 模式下的表,文档以 JSONB 格式保存。这意味着你可以在 Supabase 的 Postgres 数据库上直接使用 MongoDB 的语法和工具,而无需改变底层数据存储。这种设计既保留了 MongoDB 的开发体验,又利用了 Postgres 的可靠性和 Supabase 的生态。

本地测试与生产部署的差异

文章演示了通过 Docker 在本地运行 FerretDB,并使用 mongosh 进行连接和操作。本地测试时,连接字符串指向 127.0.0.1。而生产部署到 Fly.io 时,需要创建 fly.toml 配置文件,设置环境变量 FERRETDB_POSTGRESQL_URL,并分配一个专用的 IPv4 地址。部署后,将连接字符串中的 127.0.0.1 替换为该 IP 地址即可。注意,分配 IPv4 是付费功能,但可以在计费周期结束前释放以避免费用。

在 Supabase 中查看 FerretDB 数据

由于 FerretDB 将数据存储在 Postgres 的 ferretdb 模式中,你可以直接在 Supabase 仪表板的表编辑器里查看这些数据。每个文档对应表中的一行,内容以 JSONB 格式呈现。这为开发者提供了便利:既可以使用 MongoDB 的 API 进行读写,又可以通过 Supabase 的界面直观地检查数据,方便调试和验证。

避免供应商锁定的实际意义

FerretDB 允许你在 Postgres 上运行 MongoDB 工作负载,这意味着你不再被锁定在特定的 MongoDB 托管服务中。你可以自由选择 Postgres 作为后端,并利用 Supabase 提供的数据库管理、认证、存储等功能。同时,由于数据存储在标准的 Postgres 中,你可以使用 SQL 进行复杂查询或与其他工具集成,保持对数据架构的完全控制。

❓

Q&A

FerretDB是什么?

FerretDB是一个开源文档数据库,兼容MongoDB,支持Postgres和SQLite等后端。

如何在本地使用Docker运行FerretDB?

可以通过Docker运行FerretDB,只需设置FERRETDB_POSTGRESQL_URL环境变量并运行相应的Docker命令。

如何将FerretDB部署到Fly.io?

创建fly.toml文件并设置相关配置,然后使用flyctl命令进行部署。

FerretDB如何与Supabase项目集成?

FerretDB允许在Supabase项目中轻松集成MongoDB功能,避免供应商锁定。

如何使用mongosh测试FerretDB的连接?

可以通过mongosh连接到FerretDB,使用MongoDB URI进行测试。

FerretDB支持哪些MongoDB操作?

FerretDB支持多种MongoDB操作,包括插入、更新和查询文档。

🏷️

标签

➡️

继续阅读