首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >105K stars 的 Postgres Firebase:Supabase 把开源工业级组件拼成事实标准

105K stars 的 Postgres Firebase:Supabase 把开源工业级组件拼成事实标准

作者头像
智能时代蛮子
发布2026-07-06 11:26:11
发布2026-07-06 11:26:11
30
举报

GitHub: https://github.com/supabase/supabase

一句话总结

Supabase 不是另一个 BaaS,而是把 Postgres 30 年的工程沉淀(RLS、pg_catalog、logical replication、pg_cron)当作 Lego 块,与 PostgREST、GoTrue、Deno Edge Functions 等开源组件组合,得到的「可独立运行又彼此 10x 放大」的开源 Firebase 替代品。

值得关注的理由

  • 可独立运行的设计哲学:每个组件都「能脱离 Supabase 独立工作」,跟 Firebase 的「绑死闭源」根本对立——你随时 pg_dump 迁走。这是它值得研究的核心设计取舍。
  • Postgres 当作单一权威数据源:Auth 用户、Storage 文件元数据、Realtime 事件流都存 Postgres,packages/pg-meta 把 pg_catalog 系统表 join 出 TS 类型——开源界罕见的「schema-driven 类型化」实现。
  • AI 时代抢占卡位:内置 pgvector、Edge Functions(Deno)、ai-commands SchemaBuilder 强类型化 OpenAI 输出——三件套一起做,让 Postgres 同时充当关系库 + 向量库 + AI 后端。

项目展示

Supabase Dashboard
Supabase Dashboard

Studio Dashboard:SQL Editor / Table Editor / Auth / Storage / Edge Functions 五大核心模块的整合入口

Supabase Dashboard light
Supabase Dashboard light

浅色模式 Studio 截屏:左侧导航 + 中间 Table Editor

Supabase Dashboard dark
Supabase Dashboard dark

深色模式 Studio 截屏:项目级监控面板 + Realtime 频道管理

项目画像

维度

数据

GitHub

https://github.com/supabase/supabase

Star / Fork

105,418 / 12,967

代码行数

1,359,208(TSX 34.2% + TypeScript 22.0% + JS 2.8% = TS 系 ~59%)

文件数

9,707(含 384 个 JSON 锁文件/配置)

项目年龄

80.8 个月(2019-10-12 至今)

开发阶段

密集开发(最近 365 天 5,422 commits,2026 年再次提速到 500+/月)

贡献模式

公司主导 + 社区广泛参与(2,016 贡献者;Top 10 占 46.8%,前两名 19.9%)

热度定位

大众热门 / 行业事实标准

许可证

Apache 2.0

Latest tag

v1.26.05(仅 54 tag;后端核心服务拆分到独立仓库各自打 tag)

质量评级

代码良好 / 文档优秀 / 测试基本 / CI 完善

作者视角:为什么存在这个项目

创始人/作者背景

  • Paul Copplestone(CEO,"kiwicopple"):新西兰开发者,前 Bitfount 工程师;早期 Firebase 重度用户,被 NoSQL 与 vendor lock-in 困住后转向 Postgres。
  • Ant Wilson(CTO):英国 Postgres 顾问,企业级 PG 部署专家。
  • 公司 Supabase Inc.:YC S20 毕业,已完成 Series B/C 融资(公司估值报告累计融资 ~$116M),全员远程。
  • 背景如何塑造项目:Paul 的「Firebase DX vs Postgres 力量」痛点 + Ant 的 Postgres 深度积累 → 直接催生「开源 Firebase 替代」定位 + Postgres-first 架构选择。

问题判断

Firebase 是单一厂商闭源产品;单独用 Postgres 需要自己拼 REST / Auth / Realtime / Storage;自托管 BaaS(Appwrite / Pocketbase)跑在 MySQL / MariaDB / SQLite 上——丢掉了关系型 + 30 年 PG 生态。Supabase 的判断:Postgres 已经够强(RLS、logical replication、pg_stat、pg_catalog),缺的只是「让它们像 Firebase 一样被按 API 调用」的薄薄一层。

解法哲学(官方四大原则)

  1. Isolation(隔离):每个组件可独立运行("Can a user run this product with nothing but a Postgres database?" 是组件入选试金石)。
  2. Integration(集成):组件必须能「10x 放大」其他产品的能力。
  3. Extensibility(可扩展):偏好 primitives 而非 niche features("Less, but better")。
  4. Portability(可移植):偏好 pg_dump / CSV 等标准,避免 lock-in。

明确不做什么:不重写 Postgres;不做 NoSQL;不绑死任何前端框架;不藏 API(PostgREST 就是公开规范);不绑死云(self-host 是头等公民)。

战略意图

Open-core 模式:核心产品完全开源 + 自托管完整可用;云上增值(Log Drains、Read Replicas、Point-in-time Recovery、每日 Backups、Compute Add-ons)。Managed Cloud(Free/Pro/Team/Enterprise 四档)是营收主力;开源是获客漏斗。Studio Dashboard 完全开源——是建立信任的关键。

核心价值提炼

创新之处(按新颖度 × 实用性排序)

  1. Postgres pg_catalog 当作 ORM metadata(novelty 4 / practicality 5):packages/pg-meta/src/sql/tables.tspg_class / pg_constraint / pg_index / pg_policy join 起来,输出 TS 类型。Studio UI 完全是这个 schema 的可视化。取代 Prisma / Drizzle 的自有元数据层——schema 即类型。
  2. Storage 权限统一走 Postgres RLS(4/5):apps/studio/components/interfaces/Storage/StoragePolicies/PolicyDefinition.tsx 让用户在 UI 写 USING / WITH CHECK 表达式,底层就是 PG policy,policy 里直接调 auth.uid()。Policy Editor 把 RLS 暴露成表单——开源界首例把「行级权限 + 文件权限」统一在 DB 层的产品。
  3. Compile-time safe SQL via tagged template(3/4):packages/pg-meta/src/pg-format.tssafeSql 是 tagged template literal,类型 SafeSqlFragment | UntrustedSqlFragment 在编译期区分;用户输入 SQL 必须显式 acceptUntrustedSql 才能拼接。Kysely / Drizzle 都未做到编译期区分。
  4. Postgres 多生态复用为 primitives(3/5):Realtime 用 logical replication、CRON 用 pg_cron、webhook 用 pg_net——这些 PG extension 直接当作 Supabase 功能暴露,不重写。
  5. SchemaBuilder + TS inference 把 OpenAI function calling 类型化(3/4):packages/ai-commands@serafin/schema-builder DSL 定义 JSON schema,typeof schema.T 自动生成 TS 类型——LLM 输出是编译期类型,零运行时 schema 同步成本。Prompt 中嵌入 Postgres 偏好("use bigint identity, prefer text over varchar")。
  6. Examples-as-Documentation(2/5):examples/user-management 提供 17 个前端框架变体(nextjs / nuxt3 / svelte / sveltekit / react / vue3 / flutter / swift 等),每个都是完整可跑子项目。这是降低 onboarding 成本的硬道理。

可复用的模式与技巧

  • Postgres pg_catalog 当 ORM metadata 输出 TS 类型:取代 Prisma / Drizzle 自有元数据层;schema 即类型(packages/pg-meta/src/sql/*.ts
  • Tagged Template SQL 防注入 + 编译期类型:packages/pg-meta/src/pg-format.tssafeSql / rawSql / acceptUntrustedSql
  • SchemaBuilder DSL → JSON Schema + 推断 TS 类型:packages/ai-commands/src/sql/functions.ts
  • UI 双层设计:packages/ui(atomic 组件) + packages/ui-patterns(composite 复合模式)
  • Compose overlay:docker/docker-compose.yml 基础 + docker-compose.{caddy,envoy,logs,nginx,rustfs,s3}.yml 场景化
  • RLS + Storage 权限统一:policy 表达式 = 文件读写权限
  • Examples-as-Docs:每语言/框架一个完整可跑子项目
  • Braintrust Evals 集成:AI 输出自动评分入 Braintrust 防止 regression(apps/studio/evals/ + .github/workflows/braintrust-evals.yml

关键设计决策(trade-off 分析)

决策

取舍

适用场景

Postgres 作为单一权威数据源 + 一切组件复用 PG 生态

所有组件可用性绑死 Postgres;连接池压力大(→ Supavisor 存在的原因)

任何用 Postgres 的项目都可借鉴「元数据也存 PG」

Studio 用 Next.js + Valtio store + React Query 双轨

双状态源导致同步复杂度上升(SQL Editor README 自己列出 4 处待重构)

SQL 编辑器场景专属,但「乐观更新 client store + 服务端数据 React Query」通用

SQL Template 用 tagged template literal (safeSql)

多一层抽象;新人 onboarding 成本;IDE 跳转不如 .sql 文件直接

任何需要「参数化 SQL + 编译期检查」的项目

Storage Policy Editor 复用 RLS

RLS 学习曲线比 IAM 陡;性能与 policy 数量相关

任何「DB + 对象存储」需要权限统一的产品

Examples-as-Documentation(82 个子目录)

维护负担重(每个框架升级要同步);比 docs 更容易过时

SDK / BaaS 产品降低 onboarding 成本

Self-hosted 用 docker-compose + 多个 overlay

overlay 多了维护负担;compose schema 与 managed cloud 有 drift(issue #26785 / #16857 反映自托管是当前痛点)

「compose 主文件 + overlay」拆分对任何复杂本地栈通用

竞品格局与定位

竞品对比矩阵

维度

Supabase

Firebase

Appwrite

Pocketbase

Hasura

Stars

105K

闭源

56K

~45K

~30K

数据库

Postgres

Firestore (NoSQL)

MariaDB

SQLite

Postgres(无 DB 层)

自托管

✅ 完整可用

❌ 基本不可行

✅ 简单

✅ 单二进制

关系型 + 生态

✅ PostGIS / pgvector / TimescaleDB

客户端 SDK 数量

9 语言

顶级

28+

Go / JS

GraphQL 客户端

Auth / Storage / Realtime / Functions 全套

仅 Auth + DB + 文件

❌ 仅 GraphQL 网关

多区域 / 企业级 IAM

✅ BigQuery 集成

一般

差异化护城河

  • 生态护城河:最大 Postgres BaaS,9 个客户端 SDK 语言;NextAuth / Clerk / shadcn 等默认集成
  • 信任护城河:Studio 完全开源 + 自托管完整;vs Firebase 闭源是核心信任差异
  • 转换成本护城河:RLS policy 一旦写好迁移成本高(policy 表达式是项目级业务资产)

竞争风险

  • Neon + Hasura + Clerk + UploadThing 的「best-of-breed 组合」:理论上的解构者(每个组件都比 Supabase 内置的强,但需要自己拼)
  • Pocketbase 在简单场景:单二进制 + 零依赖,对小型项目/IoT/原型是直接替代
  • Appwrite 在数据库无关需求下:28+ SDK + MongoDB 支持,是 Supabase 的相邻替代
  • AI 时代 vector DB(Turbopuffer / Qdrant):pgvector 在极端规模可能被独立向量库替代

生态定位

「Postgres 时代的 Firebase」——把 Postgres 当事实标准的 BaaS 入口。开放核心(open core)+ 云增值。在数据基础设施层与 Neon / PlanetScale / TimescaleDB 同台竞争 BaaS 层。

套利机会分析

  • 信息差:❌ 不被低估——已是 Postgres BaaS 事实标准、105K stars;属于「已验证的成熟产品深度解读」型选题
  • 技术借鉴(✅ 核心价值):
  • pg_catalog 当 ORM metadata:任何用 PG 的项目都可放弃 Prisma/Drizzle 自有元数据层
  • Compile-time safe SQL:Kysely / Drizzle 都未做到的编译期区分
  • SchemaBuilder + TS inference 强类型化 LLM 输出:任何 AI function calling 项目通用
  • RLS 即权限层:DB + 对象存储需要统一权限时的范式
  • Examples-as-Docs:SDK / BaaS 产品降低 onboarding 的硬道理
  • 生态位:✅ 「Postgres 之上的 BaaS」已是事实标准;细分位「可自托管的 enterprise Postgres BaaS」仍有空间(vs Firebase 闭源)
  • 趋势判断:✅ 2026 年 commit 提速(500+/月),AI / 向量 / Edge Functions 三件套卡位好;比 Firebase 强在 AI 时代 PG 生态(pgvector)vs Firestore 局限

风险与不足

  • 自托管 DX 是当前最大痛点:Top issues 高度集中(#26785 Kong 日志、#16857 Storage 上传、#40985 Auth 安全 API 重构);compose overlay 维护负担重,与 managed cloud 有 drift
  • Studio 复杂度极高:数个 package.json + 混合 Next.js + TanStack Router + Vite;重构成本高
  • 测试覆盖率无强制阈值:仅基本覆盖;Braintrust Evals 覆盖 AI 输出;SQL Editor 核心流程有测试但整体覆盖率不显式
  • 错误处理「一般」:console.error 守卫而非统一 error boundary;缺 Result / Either 类型化错误流;运行时错误大多 throw + 上层 catch toast
  • monorepo 路径历史复杂:to-be-cleaned/Storage/ 旧路径已删除;studio/apps/studio/web/docs/apps/docs/ 重叠反映多次重构
  • AI 输出仍需二次校验:ai-commands 用 jsonrepair 兜底,prompt 越长 token 越多

行动建议

  • 如果你要用它:
  • ✅ 选它:Postgres-first 项目;可自托管 / 可迁移需求;AI / 向量场景;中小团队全栈 SaaS
  • ❌ 不选:极小项目(Pocketbase 更轻);Firebase 重度迁移成本高的现有项目;多数据库需求(Appwrite 支持 MongoDB)
  • 如果你要学它:重点关注
  • packages/pg-meta/src/sql/*.ts(pg_catalog-as-ORM 模式)
  • packages/pg-meta/src/pg-format.ts(safeSql 编译期防注入)
  • packages/ai-commands/src/sql/functions.ts(SchemaBuilder + TS inference)
  • apps/studio/components/interfaces/Storage/StoragePolicies/PolicyDefinition.tsx(RLS as Permission)
  • apps/studio/components/interfaces/SQLEditor/README.md(团队主动写的架构决策 + 技术债清单——金矿)
  • 如果你要 fork 它:
  • pg_catalog-as-ORM 模式做一个 Postgres 直连的 ORM 替代 Prisma / Drizzle
  • SchemaBuilder + TS inference 做一个 LLM function calling 的强类型化框架
  • RLS as Permission 模式做 DB + 对象存储统一的权限中间件

知识入口

资源

链接

DeepWiki

https://deepwiki.com/supabase/supabase(已收录,索引至 commit a5f4a59e,2026-04)

官方文档

https://supabase.com/docs

在线 Studio

https://supabase.com/dashboard

架构原理

https://supabase.com/docs/guides/getting-started/architecture

设计哲学

https://supabase.com/docs/guides/getting-started/architecture#principles

关联论文

无(工程产品,无学术输出)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能时代蛮子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一句话总结
  • 值得关注的理由
  • 项目展示
  • 项目画像
  • 作者视角:为什么存在这个项目
    • 创始人/作者背景
    • 问题判断
    • 解法哲学(官方四大原则)
    • 战略意图
  • 核心价值提炼
    • 创新之处(按新颖度 × 实用性排序)
    • 可复用的模式与技巧
    • 关键设计决策(trade-off 分析)
  • 竞品格局与定位
    • 竞品对比矩阵
    • 差异化护城河
    • 竞争风险
    • 生态定位
  • 套利机会分析
  • 风险与不足
  • 行动建议
    • 知识入口
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档