编程 Supabase深度解析:101K Star开源版Firebase,一个周末搞定百万并发后端

2026-04-26 10:50:15 +0800 CST views 7

Supabase 深度解析:101K Star 开源版 Firebase,一个周末搞定百万并发后端

后端开发最痛苦的事是什么?不是写代码,是搭基础设施——数据库、认证、实时推送、文件存储、API 网关……每一样都得从零配置。Supabase 就是来终结这种痛苦的:它用企业级开源工具重新实现了 Firebase 的全部能力,基于 PostgreSQL,完全开源,一个周末就能搭出扛住百万并发的应用。

一、为什么需要 Supabase?

Firebase 够好用,但它有三个硬伤:

  1. 厂商锁定——数据锁在 Google 云上,想迁移?祝你好运
  2. 不透明——黑盒架构,出了问题只能等 Google 修
  3. NoSQL 限制——Firestore 的查询能力和关系模型比,差了好几条街

Supabase 的核心思路:用 PostgreSQL 替代 Firestore,用开源组件替代 Google 私有服务,给你 Firebase 的开发体验,但不锁死你。

二、项目概览

项目详情
GitHubsupabase/supabase
Stars101K+
主语言TypeScript
协议Apache 2.0
官网supabase.com

Supabase 由 Paul Copplestone 和 Ant Wilson 于 2020 年创立,目前已获得超过 1.16 亿美元融资,是全球最火的开源 BaaS(Backend as a Service)平台。

三、核心架构:8 层组件如何协同

Supabase 不是单体应用,而是由 8 个开源组件精密编排的架构:

┌─────────────────────────────────────────┐
│              Kong (API Gateway)          │
├──────┬──────┬──────┬──────┬─────────────┤
│GoTrue│Postg │Real- │Storage│pg_graphql  │
│(认证) │REST  │time  │(存储) │(GraphQL)   │
│      │(REST │(实时) │      │            │
│      │ API) │      │      │            │
├──────┴──────┴──────┴──────┴─────────────┤
│           PostgreSQL (核心)              │
├─────────────────────────────────────────┤
│      postgres-meta (数据库管理)          │
└─────────────────────────────────────────┘

关键设计决策:PostgreSQL 是唯一的 Source of Truth。所有组件都围绕 Postgres 构建,数据只存一份,不存在同步问题。

3.1 PostgreSQL——一切的基础

30+ 年历史的企业级关系数据库,Supabase 给你的是专用实例(不是共享的),完整 SQL 权限,支持扩展:

  • pg_graphql——直接从数据库暴露 GraphQL API
  • pgvector——向量搜索,AI 应用的标配
  • PostGIS——地理空间查询
  • Row Level Security(RLS)——行级权限控制,安全 granularity 直接到行

3.2 PostgREST——零代码 REST API

数据库建好表,REST API 自动生成。不需要写一行后端代码:

-- 在 SQL Editor 中执行
CREATE TABLE todos (
  id BIGSERIAL PRIMARY KEY,
  task TEXT NOT NULL,
  is_complete BOOLEAN DEFAULT FALSE,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

表创建完成后,立即获得:

  • GET /rest/v1/todos——查询
  • POST /rest/v1/todos——插入
  • PATCH /rest/v1/todos?id=eq.1——更新
  • DELETE /rest/v1/todos?id=eq.1——删除

支持过滤、排序、分页、联表查询,全部通过 URL 参数完成。

3.3 Realtime——WebSocket 实时订阅

基于 Elixir 构建的实时服务器,监听 PostgreSQL 的 logical replication,将数据库变更实时推送到客户端:

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(SUPABASE_URL, SUPABASE_KEY)

// 监听 todos 表的插入事件
supabase
  .channel('todos-changes')
  .on('postgres_changes', 
    { event: 'INSERT', schema: 'public', table: 'todos' },
    (payload) => console.log('新任务:', payload.new)
  )
  .subscribe()

三种实时模式:

  • Broadcast——客户端间直接广播
  • Presence——在线状态追踪(谁在线)
  • Postgres Changes——数据库变更推送

3.4 GoTrue——JWT 认证体系

支持邮箱/密码、手机号 OTP、以及 GitHub、Google、Apple 等 30+ 种 OAuth 登录。基于 JWT,无状态,天然适合分布式场景。

// GitHub 登录,一行搞定
const { data, error } = await supabase.auth.signInWithOAuth({
  provider: 'github'
})

3.5 Edge Functions——Deno 边缘计算

基于 Deno 运行时的 Serverless 函数,部署到全球边缘节点,冷启动 < 5ms:

// functions/hello/index.ts
Deno.serve(async (req) => {
  const data = { message: 'Hello from Edge!' }
  return new Response(JSON.stringify(data), {
    headers: { 'Content-Type': 'application/json' }
  })
})

3.6 Storage——S3 兼容文件存储

RESTful API 管理文件,权限由 PostgreSQL RLS 控制。支持图片变换(缩放、裁剪、格式转换),CDN 加速分发。

3.7 向量与 AI——pgvector

Supabase 内置 pgvector 扩展,直接在数据库中存储和搜索向量嵌入:

-- 创建向量列
ALTER TABLE documents ADD COLUMN embedding vector(1536);

-- 向量相似度搜索
SELECT content, embedding <=> '[0.01, 0.02, ...]'::vector AS distance
FROM documents
ORDER BY distance
LIMIT 10;

RAG 应用、语义搜索,不需要额外的向量数据库。

四、快速上手:5 分钟搭建完整后端

4.1 创建项目

# 安装 CLI
npm install -g supabase

# 登录
supabase login

# 初始化项目
supabase init

# 启动本地开发环境(需要 Docker)
supabase start

本地启动后你会得到:

  • PostgreSQL:postgresql://postgres:postgres@localhost:54322/postgres
  • API:http://localhost:54321
  • Studio:http://localhost:54323

4.2 前端集成

npm install @supabase/supabase-js
import { createClient } from '@supabase/supabase-js'

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

// 增
const { data, error } = await supabase
  .from('todos')
  .insert({ task: '学习 Supabase' })

// 查
const { data: todos } = await supabase
  .from('todos')
  .select('*')
  .eq('is_complete', false)
  .order('created_at', { ascending: false })

// 改
await supabase
  .from('todos')
  .update({ is_complete: true })
  .eq('id', 1)

// 删
await supabase
  .from('todos')
  .delete()
  .eq('id', 1)

4.3 自托管部署

不想用云服务?Docker 一把梭:

# 克隆仓库
git clone --depth 1 https://github.com/supabase/supabase

# 复制环境变量
cd supabase/docker
cp .env.example .env

# 启动所有服务
docker compose up -d

五、免费套餐够用吗?

资源免费额度
数据库500MB
文件存储1GB
带宽5GB/月
月活用户50,000
API 请求无限
Edge Function 调用500K/月

对个人项目和 MVP 来说绰绰有余。Pro 套餐 $25/月起,数据库扩到 8GB,适合生产环境。

六、与 Firebase 正面 PK

维度SupabaseFirebase
数据库PostgreSQL(关系型)Firestore(NoSQL)
开源✅ 完全开源❌ 闭源
自托管✅ 支持❌ 不支持
查询能力SQL 全功能受限的 NoSQL 查询
实时推送✅ WebSocket✅ WebSocket
边缘函数Deno(TypeScript)Node.js
向量/AI✅ pgvector 内置❌ 需额外集成
数据迁移SQL 导出,随时走导出困难
定价免费起步,Pro $25/月按用量计费,可能失控

Supabase 的短板:离线支持不如 Firebase 完善,Firestore 的离线同步机制更成熟。如果你的应用重度依赖离线场景,需要额外处理。

七、百万并发的底气从哪来?

"一个周末搞定百万并发"不是吹的,底气来自三个层面:

  1. PostgreSQL 本身的并发能力——经过 30 年打磨,pg 的连接池、查询优化、索引机制都是顶级水准
  2. 连接池设计——Supabase 使用 PgBouncer 做连接池,一个 Postgres 进程服务数千并发连接
  3. 边缘架构——Edge Functions 部署到全球 30+ 节点,API 网关 Kong 做负载均衡

实际场景中,合理配置的 Supabase 实例轻松应对 10 万+ QPS。配合读副本和分区表,百万级并发完全可行。

八、总结

Supabase 用一句话概括:Firebase 的开发体验 + PostgreSQL 的工程能力 + 开源的自主权

它特别适合:

  • 前端/全栈开发者想快速搭建后端
  • 创业团队做 MVP,不想在基础设施上烧时间
  • 对数据主权有要求,需要自托管的团队
  • AI 应用开发者,需要向量搜索 + 传统数据库一体化

101K Star 不是虚的——这是开发者用脚投票的结果。


参考链接

复制全文 生成海报 开源 后端 PostgreSQL Firebase BaaS AI

推荐文章

PHP设计模式:单例模式
2024-11-18 18:31:43 +0800 CST
网络数据抓取神器 Pipet
2024-11-19 05:43:20 +0800 CST
Go配置镜像源代理
2024-11-19 09:10:35 +0800 CST
前端开发中常用的设计模式
2024-11-19 07:38:07 +0800 CST
CSS 媒体查询
2024-11-18 13:42:46 +0800 CST
一个简单的打字机效果的实现
2024-11-19 04:47:27 +0800 CST
Web 端 Office 文件预览工具库
2024-11-18 22:19:16 +0800 CST
Git 常用命令详解
2024-11-18 16:57:24 +0800 CST
MySQL 主从同步一致性详解
2024-11-19 02:49:19 +0800 CST
如何在Vue3中定义一个组件?
2024-11-17 04:15:09 +0800 CST
html一份退出酒场的告知书
2024-11-18 18:14:45 +0800 CST
程序员茄子在线接单