一天一个开源项目(第54篇):Supabase - 开源的 Postgres 开发平台,Firebase 替代方案

引言

"The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications."

这是「一天一个开源项目」系列的第 54 篇文章。今天介绍的项目是 SupabaseGitHub)。

想用 Firebase 的体验,但不想被供应商锁定?Supabase 是开源的 Postgres 开发平台 ,用企业级开源工具实现 Firebase 的典型能力:托管 Postgres 数据库认证与授权自动生成 REST/GraphQL APIRealtime 订阅Edge Functions文件存储AI 向量工具。可云端托管,也可自托管。

你将学到什么

  • Supabase 的核心能力与定位
  • 技术架构:Postgres、PostgREST、GoTrue、Realtime、Storage 等
  • 多语言客户端支持
  • 与 Firebase 的对比
  • 快速开始:云端与自托管

前置知识

  • 对数据库、API、认证有基本了解
  • 了解 Postgres 或 SQL 更佳(可选)

项目背景

项目简介

Supabase 是开源的 Postgres 开发平台,目标是提供类似 Firebase 的开发体验,但基于企业级开源组件。若已有 MIT、Apache 2 等开源协议的工具,优先采用;若没有则自行开发并开源。Supabase 不是 Firebase 的 1:1 映射,而是用开源工具实现类似体验。

团队

  • 团队 :Supabase(supabase.com
  • 理念:用开源工具构建 Firebase 式开发体验

项目数据


主要功能

核心能力

能力 说明
托管 Postgres 专用 Postgres 数据库,支持扩展(如 pgvector)
认证 GoTrue,JWT 认证,支持登录、注册、会话管理
自动 API PostgREST 提供 REST API;pg_graphql 提供 GraphQL API
Realtime 通过 WebSocket 订阅 Postgres 的插入、更新、删除
Edge Functions 基于 Deno 的 Serverless 函数
文件存储 S3 兼容存储,由 Postgres 管理权限
AI 向量 pgvector 等向量扩展,支持 Embeddings 与检索

使用场景

  1. Web/Mobile 应用:快速搭建后端、数据库、认证、文件存储
  2. 实时应用:聊天、协作、仪表盘等实时数据更新
  3. AI 应用:向量嵌入、RAG、语义检索
  4. Firebase 迁移:从 Firebase 迁移到开源、可自托管方案

快速开始

云端托管

bash 复制代码
# 1. 在 supabase.com 创建项目
# 2. 安装客户端
npm install @supabase/supabase-js

# 3. 在代码中使用
import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  'https://your-project.supabase.co',
  'your-anon-key'
)

// 查询数据
const { data } = await supabase.from('posts').select('*')

// 认证
await supabase.auth.signInWithPassword({ email, password })

// Realtime 订阅
supabase.channel('posts').on('postgres_changes', { event: '*', schema: 'public', table: 'posts' }, (payload) => console.log(payload)).subscribe()

自托管

bash 复制代码
# 使用 Docker Compose
git clone https://github.com/supabase/supabase
cd supabase/docker
cp .env.example .env
docker compose up -d

技术架构

组件 作用
Postgres 主数据库,30+ 年稳定发展
Realtime Elixir 服务,监听 Postgres 变更,通过 WebSocket 推送
PostgREST 将 Postgres 转为 REST API
GoTrue JWT 认证 API
Storage S3 兼容文件存储,权限由 Postgres 控制
pg_graphql Postgres 扩展,提供 GraphQL API
postgres-meta REST API,管理 Postgres(表、角色、查询等)
Kong API 网关

客户端支持

官方:JavaScript/TypeScript、Flutter、Swift、Python

社区:C#、Go、Java、Kotlin、Ruby、Rust、Godot (GDScript)

项目优势

对比项 Supabase Firebase 自建后端
数据库 Postgres Firestore / Realtime DB 自选
开源 视架构而定
自托管 支持
API 生成 自动 REST/GraphQL 自动 需手动
Realtime 通过 Postgres 原生 需自建
供应商锁定

项目详细剖析

工作原理

Supabase 由多个开源组件组合而成。Postgres 通过内置复制功能输出变更;Realtime 监听这些变更,转为 JSON,通过 WebSocket 推送给已授权客户端。PostgREST 根据 schema 自动生成 REST API;GoTrue 处理认证并签发 JWT。

目录结构

bash 复制代码
supabase/
├── apps/           # Studio、文档等应用
├── packages/       # 客户端库、工具
├── docker/         # 自托管 Docker 配置
├── supabase/       # CLI、迁移等
├── examples/       # 示例项目
└── ...

自托管

通过 Docker Compose 可完整自托管所有服务,包括 Postgres、Auth、Realtime、Storage、API 等,适合本地开发或私有部署。


项目地址与资源

官方资源

适用人群

  • 需要快速搭建后端的 Web/Mobile 开发者
  • 希望从 Firebase 迁移到开源、可自托管方案
  • 需要 Realtime 的实时应用
  • 需要向量嵌入的 AI 应用
  • 偏好 Postgres 的团队

欢迎来我中的个人主页找到更多有用的知识和有趣的产品

相关推荐
程序员阿黄6 小时前
基于 Django 与 Vue 3 的智能实验室预约系统设计与实现
后端·python·mysql·django·vue·毕设
光影少年6 小时前
Koa 为什么使用洋葱模型
后端·node.js·koa
用户298698530146 小时前
Python 如何实现 Word 与 RTF 文档互转
后端·python·api
打工仔折腾 AI6 小时前
用 Shell 脚本自动部署 mysqld_exporter 并接入 Prometheus 远程抓取
人工智能·后端·python·性能优化·ai agent 实战
毅炼6 小时前
不写多语言 SDK,怎么让 Python、Go、Node 服务接入注册中心?
java·后端·系统架构·gateway
Methy6 小时前
IoTHub半个月崩了五次?都是裸rethrow惹的祸
服务器·c++·后端
我不会起名字3227 小时前
一天一道力扣Hot100(36):深度优先算法---组合总和
数据结构·c++·后端·python·算法·go
回家路上绕了弯7 小时前
AI 编程助手为什么反复读取同一份上下文?如何减少无效重复
后端
Lost of 程序猿7 小时前
用 Quartz.NET 优雅地处理 .NET 定时任务:从选型到 Docker 部署全记录
后端·c#·asp.net
名字还没想好☜7 小时前
Spring Boot 优雅停机实战:等在途请求处理完再退出,配合 K8s preStop 别丢请求
java·后端·spring