Supabase 是一个开源的后端即服务(Backend-as-a-Service,一种将服务器端功能封装成可直接调用的服务形式)平台,致力于让开发者在不维护服务器的情况下,快速构建具有数据库、身份认证、实时订阅和存储功能的应用。它基于 PostgreSQL 构建,将数据库操作封装为 REST API(一种基于 HTTP 协议的接口规范)和 Realtime 通道(支持客户端与服务端实时双向通信的机制),并提供开箱即用的用户认证系统。对 AI 从业者来说,Supabase 的价值在于:你不再需要自己搭建认证服务、手工处理数据库连接池(管理数据库连接复用的机制)或编写后台上传接口,可以直接将精力聚焦在模型与业务逻辑上。本篇攻略将带你从零配置项目、运行第一个查询开始,逐步深入核心能力拆解与生产部署要点,最后用对比表和面试题帮你建立系统认知,确保阅读后即可上手使用。

岗位关联

掌握 Supabase 意味着你拥有一个生产级、可自托管的 BaaS 底座:无论做 RAG 知识库、ChatGPT 插件后端还是多租户应用,都能大幅缩短从原型到上线的时间。

目录
  1. 为什么需要 Supabase:从自建后端到即取即用的 BaaS
  2. 安装与环境配置:3 步就绪
  3. 快速上手:15 分钟创建数据表并调用 API
  4. 核心能力详解:4 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
开源 Backend-as-a-Service(BaaS)平台
开发商
Supabase Inc.(美国,旧金山)
开源协议
Apache 2.0
GitHub Stars
无
主要语言
TypeScript、Go、Rust
当前版本
v2.x(2025.12 稳定版线)
安装方式
npm / 自托管 Docker(Supabase CLI)
下载地址
官方文档
上手难度
★★★☆☆(中等,需了解 SQL 与 HTTP 基础)
适合人群
全栈工程师、AI 应用开发者、RAG 系统构建者、移动端开发者
同类工具
Firebase、PocketBase、Directus
托管服务
supabase.com/dashboard(云服务,含免费额度)

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 Supabase:从自建后端到即取即用的 BaaS

传统后端开发中,一个典型的数据驱动应用需要你单独搭建 API 服务、设计鉴权逻辑并维护数据同步。技术选型可能涉及 Express(Node.js 的轻量 Web 框架)、Django(Python 的 Web 框架)以及独立的实时推送组件 Redis Pub/Sub 或 WebSocket 服务,不仅代码量大,还需要持续关注模块间如何安全打通。多个服务之间既要保证低延迟又要确保数据一致性,在生产环境还要处理横向扩容和连接池调优,开发周期往往被「基建」而不是「业务」拖长。

Supabase 用一个统一平台替代了上述多个组件的集合:PostgreSQL 数据库直接暴露为 REST API 和实时订阅通道,官方客户端(JavaScript / Dart / Python 等)封装了认证、查询与文件上传。你可以先写 SQL 再让 PostgREST(自动将 SQL 表转换为 RESTful API 的工具)生成接口,也可以跳过 SQL 直接在界面建表、绑定权限策略 RLS(Row Level Security,PostgreSQL 中可以按行控制访问权限的机制)。AI 工程师不用关心请求路由和登录态管理,而是直接围绕向量数据、嵌入(Embedding)函数和用户表建模。

与 Firebase 相比,Supabase 的差异在于它开放与数据独立性:你拥有完整的数据库连接串,可以用任何 PostgreSQL 生态工具;还支持自定义 Docker 镜像自托管,规避了供应商锁定风险。而从身份认证到数据存储,Supabase 又比自建方案提供了更平滑的一体化体验。本质上它把「后端发布」压缩为「建表 + 配策略」,为 AI 应用的 MVVM MVP 原型快速验证铺平了道路。

安装与环境配置:3 步就绪

Supabase 的使用分两条路径:云端计划(直接在 supabase.com 创建项目)与本地开发(通过 CLI 在 Docker 中运行,生产可选自托管)。这里推荐本地先行,避免多项目互相干扰。

步骤一:安装 Supabase CLI

需先安装 Docker(桌面版或引擎均可),然后通过 Homebrew 安装 CLI:

步骤二:登录并初始化项目

在你的应用目录中运行以下命令,它会创建 supabase/ 配置目录,并生成 config.toml 与本地迁移文件:

supabase start 会基于 Docker 启动本地栈(Studio 控制台、Auth、PostgREST、Realtime、Storage),首次运行需拉取镜像。启动成功后,输出日志中会显示本地 API URL http://localhost:54321 与默认 anon 公钥。在浏览器打开控制台,可执行 SQL、浏览表结构和观看 API 文档。

步骤三:验证环境并创建首个表

通过 supabase status 查看服务列表与密钥,并在 SQL Editor 中运行建表语句:

bash5 行
# macOS 安装brew install supabase/tap/supabase # 其他平台(基于 npm)npm install -g supabase
bash3 行
supabase loginsupabase initsupabase start
sql6 行
create table books (  id bigint generated always as identity primary key,  title text not null,  author text,  created_at timestamptz default now());

快速上手:15 分钟创建数据表并调用 API

思路:用 PostgREST 把上一步创建的 books 表自动暴露为 Web API。你要做的只是配置好匿名权限,然后客户端就能直接查询。这里以 JavaScript(Vite 项目)为例:

1. 在项目目录安装 @supabase/supabase-js:npm i @supabase/supabase-js

2. 创建 .env 文件,填入从 supabase status 获取的 URL 与 anon key(示例中 http://localhost:54321)

3. 在 main.js 中初始化客户端并查询:

  • const supabase = createClient(SUPABASE_URL, SUPABASE_KEY)
  • 执行 const { data, error } = await supabase.from('books').select('*')

4. 插入一条测试数据:await supabase.from('books').insert({ title: 'RAG 实战', author: '张三' })

运行后你会看到插入与查询结果。进阶技巧:表结构变动后,在 Supabase Studio 中启用 Realtime 发布就能实时监听变更,前端自动订阅 channel 即可。后续接入 AI 的步骤是:借助 pgvector 扩展建立 embeddings 列,用 supabase-js 的 rpc() 方法调用数据库函数完成向量搜索。

js21 行
// 可直接运行的 Node 或 Vite 内代码import { createClient } from '@supabase/supabase-js' const supabase = createClient(  'http://localhost:54321',  process.env.SUPABASE_KEY) async function main() {  const { data, error } = await supabase    .from('books')    .insert({ title: 'AI Engineering', author: 'Chip Huyen' })    .select()   if (error) throw error  console.log('插入成功:', data)  const { data: list } = await supabase.from('books').select('*')  console.log('当前表数据:', list)} main()

核心能力详解:4 大支柱

支柱一:PostgreSQL 数据库与 PostgREST API。 Supabase 的第一个支柱是数据库。所有表在「表编辑器」中创建或直接通过 SQL 创建,PostgREST 会同步为每张表生成标准 REST 端点(集合与单条记录)。查询支持过滤、排序、分页和嵌套资源,客户端无需编写后端路由。同时,你拥有原生 PostgreSQL 连接串,也可以使用 psql 等专业工具进行复杂查询,这让数据分析与报表开发毫无隔阂。

支柱二:Authentication 身份认证。 Supabase Auth 支持常见登录方式(邮箱/密码、OTP、OAuth 第三方)。它直接依赖数据库表 auth.users,并内置了行级安全策略生成器——你在控制台配置 RLS 策略,API 层就会自动校验登录态。对 AI 应用,这解决了用户数据隔离的关键问题:不同用户只能访问自己的知识库、会话记录,无需编写中间件。

支柱三:Realtime 实时订阅。 Realtime 基于 PostgreSQL 逻辑复制或 WebSocket 实现,支持行级变更(INSERT / UPDATE / DELETE)广播,也支持 Presence 自定义事件(用于在线状态检测与协同)。在这之上演进出的 Broadcast 功能可让客户端直接互发消息而不落库。RAG 场景里它常用于待处理文档的状态刷新,或让前端在后台任务完成时收到通知。

支柱四:Edge Functions 与 Storage。 Edge Functions 基于 Deno,实现边缘 JavaScript/TypeScript 函数的托管执行,延迟低且免运维;Storage 提供对象存储(图片、视频、PDF),与 RLS 策略集成,允许开发者按数据表级别控制文件读取权限。两者与 Supabase 的数据库、Auth 组合,足够支撑一个轻量级 AI 中间层——如代理 LLM 调用、保存中间结果或对上传文档做预解析。

生产部署与监控:从上线到运维

方式一:使用 Supabase 云平台。 在 supabase.com 创建项目后,你需要把 anon key 换成 service_role key 移到服务端调用,将项目从免费区升级为 Pro 计划以获得每日备份、7 天日志保留与多区域选择。云平台的横向扩容由官方负责,你只需要关注连接池大小与数据库负载。生产环境建议开启「连接池」(pgBouncer,一种为 PostgreSQL 提供连接池与复用的中间件),并把 Supavisor 作为连接代理,防止计算实例耗尽连接数。

方式二:自托管(Docker / Kubernetes)。 使用 Supabase CLI 可以在自己的 VPS 上启动整套服务,或用官方 Helm Chart(Kubernetes 应用打包格式)部署到 K8s。自托管让你保留完整数据和网络控制权,但你需要自行处理 PostgreSQL 备份、日志收集(Prometheus + Grafana)、自动扩缩容与安全补丁升级。这也适合对数据合规有强要求的内部 AI 平台。注意自托管不是简单跑一个容器,监控 Cassandra(Realtime)与 Postgres 的状态是常被低估的工作量。

可观测性。 云平台提供内置的 API 监控仪表盘,展示请求速率、错误率与延迟。「查询性能」页显示慢查询记录,日志浏览器可以按级别搜索和过滤。自托管方案一般用 exporter(如 postgres_exporter)结合 Prometheus 抓取指标。Supabase 也支持你接入 OpenTelemetry(一种可观测性标准框架),把尾部迁移追踪(如 Edge Function 的执行链路)下发到外部 APM(应用性能监控平台)。底线是至少做到连接池水位、数据增长速度、备份成功三个指标的周度巡检。

<p class=“para-label“>避坑清单:</p><ul class=”dash-list”><li>把 anon key 当读写密钥用:anon key 默认受 RLS 限制,若要绕过 RLS 必须使用 service_role key,但后者不可暴露在前端,否则等于公开数据库权限——请将 service_role key 严格放入服务端环境变量。</li><li>建表后忘记启用 RLS:默认所有表都禁用行级安全,意味着任何人用 anon key 都能全表访问。每次新建表后应在 SQL Editor 执行 alter table ... enable row level security 并编写策略。</li><li>本地与云端的迁移不同步:长期使用在线 SQL Editor 建表再复制到本地迁移文件,容易造成回滚冲突。应引入 supabase db diff 自动生成迁移,保持 schema 以文件为唯一真相。</li><li>Realtime 表未开启复制:如果开启流式订阅后数据库变更不推送,往往是因为没有在「Publication」中把目标表加进复制集。</li><li>连接池使用量打满后服务不可用:免费版对连接数有限,生产请通过 Supavisor 连接,或配置客户端「连接池大小」并对长时间事务做超时限制。</li></ul>

维度SupabaseFirebasePocketBaseDirectus
定位开源 BaaS(Postgres 底座)商业化 BaaS(NoSQL 主导)开源单文件 BaaS(Go 编写)开源数据资产 / 无头 CMS(BaaS 简化)
编排范式SQL + REST + RealtimeNoSQL 文档 + SDK 直连REST + 内置 Admin 面板REST / GraphQL + Admin App
类型约束强类型(Postgres SQL 模式)弱类型(文档结构自由)松散(近似文档但基于 SQLite)强类型(随数据库结构)
学习曲线中:需要一点 SQL 基础低:JSON 直觉,无 Schema低:配置极少较低:界面友好但 API 需二次包装
生态集成丰富(Postgres 生态、pgvector、dbt)广(GCP + Firebase 全家桶)较小(社区插件)一般(偏内容 / 运营场景)
生产部署云托管或自托管(K8s / Docker)仅云(GCP 锁定)单二进制,易部署到任意 VMDocker 化部署,支持反向代理
LicenseApache 2.0闭源(免费档有限额)MITGPLv3(商用需注意)
适合谁需要 SQL 灵活性和开源可控的 AI 应用/ RAG 团队无后端经验、快速验证移动端想法轻量级内部工具、小团队快速内测内容管理快速后台、基于现有库做前端展示

选型建议:若你的项目需要向量检索、复杂 SQL 分析或数据所有权,Supabase 是首选;如果只是简单的移动 App 原型且不介意云绑定,Firebase 上手更快;PocketBase 适合中小型内部工具的极简部署;Directus 更适合已有数据库与 CMS 后台需求而非面向用户的实时后端。

版本迭代

Supabase 自 2020 年公开预览后持续迭代:v1.0 在 2024 年 4 月推出,标志着平台 API 稳定并进入生产可用;v2.0 于 2025 年 2 月发布,围绕多区域部署、连接池重构(Supavisor)与更细粒度安全控制展开。整体演进方向是「核心服务模块化、边缘能力增强、降低自托管门槛」。

版本时间变化提升
v1.02024-04正式 GA 稳定版承诺向后兼容 API,引入数据库分支(Branching)用于预览环境,Auth 支持多因素认证(MFA)
v1.1 ~ v1.92024-05 至 2025-01渐进式功能增强增加实时订阅增强(Realtime Broadcast)、Postgres 17 支持、存储文件智能转换与图片缩略图处理
v2.02025-02多区域部署与可观测性重做将 Supavisor 作为默认连接代理,新增日志管道导出(Logflare),强化了平台级的 OpenTelemetry 支持
v2.1 ~ v2.42025-03 至 2025-08安全与开发者体验引入 Edge Functions 的本地缓存特性、数据库自定义类型(Composite Type)UI 管理、发布严格密钥管理策略
v2.52025-10性能调优与生态扩展支持 Postgres 18(Beta)、增强 WAL(预写日志)增量备份,并优化了 Realtime 横向扩展的通道分配

AI 应用场景

场景一:构建 AI 知识库后端的 RAG 管道

阶段:RAG 管道构建 / 文档智能

解决的问题:传统方法需要自行管理向量数据库(如 Pinecone、Milvus),同时还要搭建文档上传接口和鉴权服务;Supabase 将 PostgreSQL 与 pgvector(Postgres 的向量检索扩展)集成,在一个数据库内同时存储文档原文、切片和向量嵌入,并通过 RLS 让每个用户只能看到自己的数据。结合 Supabase Storage 进行文件上传,预处理时触发 Edge Function 调用 Embedding 服务写入向量字段,查询时直接用 RPC 调用排最邻近搜索函数即可完成召回。

具体案例:某 AI 公司的知识库服务迁移到 Supabase 后,将原 Elasticsearch 存储替换为 pgvector 向量列,单条表查询延迟保持在 20ms 以内;新员工入职文档的内网助手无需再维护两套数据(源文件与切片),通过「一张表 + 一个存储桶」就同时管理了正文、切片、向量和来源链接,开发周期缩短 50%。

场景二:ChatGPT 插件或大模型 Agent 的对话状态存储

阶段:Agent 编排 / 会话管理

解决的问题:大模型本身是无状态的,Agent 应用需要持久化历史会话、上下文 token 消耗情况、用户偏好等数据。用自建 Redis 还需要额外开发序列化规则;Supabase 的表 + JSONB(Postgres 中存储 JSON 文档的类型)直接用来存会话树,实时订阅让多端对话记录即时同步。Auth 可以处理单点登录,并利用 RLS 做到细粒度权限控制(比如用户只能读写自己的 session)。

具体案例:某微信机器人接入 Supabase 保存每个用户的对话记录与意图标签后,用 Realtime 在前端即时展示「正在输入」状态。原来用 MongoDB 存储需要额外处理 Id 生成和分页逻辑,替换后涉及会话的代码量减少约 40%,错误率下降三分之二。

常见误区

误区那我直接用阿里云 RDS / Neon 不就行了?Supabase 只是套了层壳的数据库,我连接串一拿自己写 API 不也能用吗?

正解Supabase 的价值在于「数据库 + 自动 API + 认证 + 存储 + 实时」的一体化。你拿到 connection string 只能用 SQL 查询,但 PostgREST 已经为你处理了 HTTP 接口、过滤语法、缓存头与权限注入。通过 RLS 的封装,客户端可以直接安全地对表进行受限的增删改查,而不必经过业务后端。若只把 Supabase 当数据库维护,等于放弃了它一半的能力,自建一层「胶水 API」反而制造额外的安全面和延迟。

为何常见:官方文档常把 PostgreSQL 作为卖点,很多用户被「Postgres」这个关键词吸引,而没注意到 PostgREST 和 Auth 的集成深度才是真正的效率来源。

误区既然浏览器里要发请求,我直接把 anon key 写在环境变量里(或打包进前端代码)没问题吧?它看起来像是 API 密钥。

正解anon key 是设计用于客户端的,但并不意味着你可以不加保护地开放数据库。它默认只能访问启用了 RLS 的表,且所有策略必须仔细定义。一旦你用 service_role key 做了数据修改(绕过 RLS),并把它意外发送到浏览器,攻击者将拿到全库权限。正确做法:前端使用 anon key;后端管理端只使用 service_role key 且仅存储在服务器。所有新表必须手动开启 RLS 并编写策略,没有「默认安全」。

为何常见:许多从 Firebase 转过来的开发者习惯了 Firebase 的规则语法,没有认识到 Postgres 的 RLS 需要主动显式配置与测试,导致弱权限配置被忽略。

误区我在本地 `supabase start` 里测试了几张表,想直接在生产环境也「同步」一下,是不是用 `supabase db push` 就行?

正解supabase db push 只推送迁移文件,而不会把你的「本地数据」推到云端。核心是用迁移文件管理 schema 变更:如果你直接在 SQL Editor 里手改生产库,本地没有对应迁移文件,下一次 db pull 或重新初始化就会冲突。正确的开发流是:修改本地 → 用 supabase db diff 生成迁移 → 评审 → supabase db push 到云。对于生产数据,应使用备份恢复或采用数据迁移脚本,而不是用 push 命令混入。

为何常见:类比 git 工作流时,容易把「代码提交」与「数据操作」混淆;本地与云端共享同一套密钥与项目命名,让人误以为环境也无缝一致。

误区我需要一个后端推消息给前端的功能,Supabase 有 Realtime,可以直接当作 WebSocket 消息中间件用吧?我啥都能往里塞。

正解Realtime 的核心是「数据库行变更事件」,即在表产生 Insert/Update/Delete 时广播给订阅者。如果用它传递与数据库无关的临时信号,会引入不必要的落库、挑战分区设计,降低扩展性。Supabase 提供 Broadcast 与 Presence 来覆盖非持久化的在线事件,但仍有其边界(如高吞吐、多租户大规模房间分配)。真正需要复杂 pub/sub 或大量实时消息时,应引入专业消息系统(如 Ably、Socket.io 集群)并将 Supabase 作为业务数据源。

为何常见:开发者把它当作通用基础设施,未阅读官方文档中「什么时候不使用 Realtime」的章节,等到压测数据量上升时才发现设计瓶颈。

误区官方说 `supabase start` 能在本地一键拉起所有组件,那我把它放到一台 4C8G 的 VPS 上跑起来,不就有免费的生产环境了吗?

正解supabase start 面向本地开发,生产自托管面对着完全不同的运维复杂度:Postgres 的高可用(Patroni,一种 PostgreSQL 高可用方案)、备份策略(PITR,基于时间点恢复)、对象存储的横向扩展、Realtime 节点间的通道同步、自动续期证书、版本升级与回滚都需要搭建。官方提供的 docker-compose 可以做小规模部署,但你需要做好监控和故障转移。建议优先尝试云平台,把自托管留给有 K8s 运维能力的团队,否则因备份缺失或升级失败导致事故的风险远高于省下的云费用。

为何常见:不少团队被「开源 + Docker」的快捷性吸引,忽略了 Supabase 是一个多组件系统(Postgres、GoTrue、PostgREST、Realtime、Storage、Logflare),每个组件都有独立生命周期和系统要求。

面试题

Q1. 在 Supabase 中,用于控制行级数据访问的核心机制是?

单选题 · easy

  • A.API Key
  • B.Row Level Security← 正确答案
  • C.JWT 解码
  • D.Data Masking

答案:B。RLS(Row Level Security)是 PostgreSQL 提供的行级安全机制,Supabase 通过它在数据库层控制用户能读取或修改哪些行。API Key 只负责标识请求者身份,而 JWT 解码在身份的验证层完成,它们为 RLS 提供上下文,但核心授权是 RLS 本身。

Q2. Supabase 中 anon key 与 service_role key 的主要区别是什么?

单选题 · mid

  • A.anon key 只能读,service_role key 只能写
  • B.anon key 受 RLS 限制,service_role key 默认绕过 RLS← 正确答案
  • C.anon key 用于客户端,service_role key 也应用于客户端以加速
  • D.两者权限完全相同,只是字符串长度不同

答案:B。anon key 用于客户端请求,必须遵守 RLS 策略;service_role key 有较高权限,会绕过 RLS,适合在受信任的服务器环境中使用。若把 service_role key 暴露给前端,用户能力将会被扩大至全库,因此应严格保密,而不是追求「加速」。

Q3. 要在 Supabase 中获取某个表的 REST API 映射,它默认基于哪种机制自动生成?

单选题 · easy

  • A.GraphQL schema
  • B.PostgREST← 正确答案
  • C.Prisma Client
  • D.tRPC

答案:B。Supabase 使用 PostgREST 将 PostgreSQL 数据库模式自动转换为 RESTful API。你只需要在数据库中建表,API 端点就会同步生成,而无需手动编写路由代码。GraphQL 需要额外扩展,Prisma 与 tRPC 不是其内置生成器。

Q4. 以下哪些是 Supabase 提供的核心服务?

多选题 · mid

  • A.Authentication← 正确答案
  • B.Realtime← 正确答案
  • C.Edge Functions← 正确答案
  • D.MLflow

答案:ABC。Supabase 包含数据库、Auth(认证)、Realtime(实时订阅)、Storage(存储)和 Edge Functions(边缘函数)。MLflow 是机器学习生命周期管理平台,与 Supabase 无关。

Q5. 在 Supabase 中启用 Realtime 后,客户端仍收不到表的变更事件,最可能的原因是什么?

单选题 · hard

  • A.表的数据量太大导致订阅超时
  • B.表未加入数据库 Publication 的复制集← 正确答案
  • C.客户端未使用 service_role key
  • D.表没有主键

答案:B。Supabase Realtime 基于 PostgreSQL 逻辑复制实现,若要订阅某个表的变更,必须先将该表加入 supabase_realtime publication(或相关复制集合)。数据量、密钥类型都不是直接原因。没有主键会使个别操作受限制,但不会导致整个事件推送失效。

Q6. 在 Supabase 中调用存储在数据库中的函数通常使用哪个客户端方法?

单选题 · mid

  • A.supabase.from('functions').select('*')
  • B.supabase.rpc('function_name', params)← 正确答案
  • C.supabase.functions.invoke('function_name')
  • D.supabase.db.execute('SELECT * FROM function_name')

答案:B。supabase.rpc() 是官方客户端用于调用 PostgreSQL 中自定义函数的统一接口。选项 A 是把函数当表查询,选项 C 是调用 Edge Functions 的方法,选项 D 不是官方 API 的一部分。若要使用 pgvector 相似性搜索或自定义 SQL 逻辑,就应使用 rpc。

Q7. Edge Functions 与数据库函数(RPC)的主要差异在于?

单选题 · mid

  • A.Edge Functions 只处理 HTTP 请求,数据库函数只处理 SQL
  • B.Edge Functions 在边缘环境运行 JS/TS;RPC 在数据库内部执行 SQL 逻辑← 正确答案
  • C.Edge Functions 支持 SQL 语句,RPC 支持 WebSocket
  • D.没有本质区别,只是命名不同

答案:B。Edge Functions 基于 Deno,在全局网络边缘节点运行 JavaScript/TypeScript 逻辑,适合做鉴权、代理和响应处理;RPC 则是数据库内用 SQL/PL/pgSQL 实现的函数,适合在数据附近做计算和推理,如向量检索。二者是不同层级的计算单元。

Q8. Supabase 支持哪些查询数据的方式?

多选题 · easy

  • A.通过 REST API 进行 CRUD← 正确答案
  • B.通过 PostgREST 的过滤和排序语法← 正确答案
  • C.直接使用 PostgreSQL 原生连接串(如 psql)← 正确答案
  • D.只能使用 Dashboard 的表编辑器操作

答案:ABC。Supabase 提供多接口:REST API 适合客户端与应用调用;PostgREST 支持高级过滤、嵌套选择等;同时因其底层是 Postgres,你也可以直接使用连接串和 SQL 工具进行管理。表编辑器是 GUI 辅助工具,并非唯一或必需的数据访问途径。

Q9. 自托管 Supabase 生产环境时,哪个组件需要特别关注高可用与备份?

单选题 · hard

  • A.Studio(控制台 UI)
  • B.PostgreSQL 数据库← 正确答案
  • C.Supabase CLI
  • D.Storage 的 CDN 缓存

答案:B。数据库是整个系统的状态中心与瓶颈,任何服务间事件传递、权限校验都依赖它。生产环境必须配置 PostgreSQL 的高可用(如 Patroni、流复制)和定期备份(如 PITR、基础备份),否则单点故障会直接导致全栈不可用。Studio 或 CLI 只是工具,Storage 的 CDN 缓存是可容忍降级的。

Q10. 以下哪个说法符合 Supabase 对多人协作开发模型的推荐?

单选题 · mid

  • A.所有成员直接在云端 SQL Editor 修改表结构,再用 db push 覆盖
  • B.使用本地迁移文件并通过版本控制跟踪 schema 变更,再推送到远端← 正确答案
  • C.只在本地建表,生产库手动同步脚本
  • D.完全不使用迁移,直接连数据库修改

答案:B。Supabase 官方推荐将 schema 变更以迁移文件形式纳入 git,通过本地 supabase db diff 生成与实际改动一致的迁移,再经 db push 或 CI/CD 发布到云端。这样可以确保多环境一致性和回滚能力。直接操作云端编辑器容易造成环境漂移,而手动同步脚本的方式容易出现遗漏。

参考来源