Supabase 是一个开源的后端服务框架,在强大的 PostgreSQL 数据库基础上,封装了用户认证、文件存储、可视化的运维面板等功能,为开发者提供了一整套开箱即用的后端基础设施。Supabase 提供了三大部分的能力:后端、前端与云服务。在后端提供数据库、文件存储、边缘函数、用户鉴权等;在前端方面,提供客户端 SDK,可将 React、Vue 甚至手机 APP 接入后端。
数据库核心
登录 Supabase 官网创建组织与项目,即可获得一个完整的 PostgreSQL 数据库实例。通过 Table Editor 可创建表、编辑数据;SQL Editor 支持直接编写 SQL 语句执行。Database 菜单包含 schema、表、函数、触发器、枚举、插件、索引等功能。
现代 Web 开发中,PostgreSQL 搭配插件可替代许多工具。例如安装 PostGIS 插件后,PostgreSQL 即可存储地理位置信息。创建表时可使用 GEOMETRY 类型存储坐标,并使用插件提供的函数计算面积或距离。
数据库连接
除了网页操作,Supabase 提供远程连接地址,可接入 DBeaver 等客户端或 Java、Python 后台代码。连接模式分为 Direct Connection(直连)和 Session Pooler(会话池)。直连不支持 IPv4,Session Pooler 支持 IPv4。Transaction Pooler 模式由 Supabase 维护连接池,适合无状态服务如边缘函数。
Supabase SDK
Supabase SDK 允许前端框架用少量代码接入后端。以 Vue 项目为例,安装 @supabase/supabase-js 后,使用 API Key 初始化客户端。虽然将 API Key 放在前端看似不安全,但配合 RLS(行级安全策略)可保障数据安全。
用户注册与登录非常简单:
const supabase = createClient(supabaseUrl, supabaseKey);
await supabase.auth.signUp({ email: '[email protected]', password: 'password' });
用户登录后,系统返回 session 及用户信息。
RLS 行级安全策略
RLS 约束了哪行数据可以被哪些用户修改或读取。创建业务表时需启用 RLS,并配置策略。例如,设置策略使登录用户只能读取属于自己的数据(匹配 user_id)。
若未配置 RLS,通过 SDK 查询将返回空数据,只有后台或直连数据库才能访问。RLS 同样适用于写入操作,防止用户插入他人数据。
文件存储
Storage 功能用于存放文件,支持 S3 协议。创建存储桶后可上传下载文件。存储桶也可配置安全措施,例如限制用户只能操作与自己 ID 同名的文件夹。前端通过 SDK 可直接对存储桶进行操作,违反策略会返回 403 错误。
边缘函数与实时推送
Edge Function 类似 Cloudflare Worker,支持运行服务端逻辑。RealTime 功能可监听数据库变化,通过 WebSocket 推送消息到客户端,实现弹窗提醒等场景。
MCP
MCP 功能允许将 AI 工具连接到 Supabase,让 AI 获得操作数据库的能力。
本地部署指引
Supabase 支持 Docker 自托管。克隆官方仓库,复制 docker 目录文件,配置 .env 文件(注意修改端口),执行 docker compose up -d 启动所有组件。本地部署后,只需替换 SDK 中的 URL 和 API Key 即可正常使用全部功能。源代码采用 Apache 2.0 协议,免费自由商用。


