Supabase 全栈开发实战:从云服务到本地部署
Supabase 是一个开源的后端服务框架,基于强大的 PostgreSQL 数据库,封装了用户认证、文件存储、可视化的运维面板等功能,为开发者提供了一整套开箱即用的后端基础设施。它在 GitHub 上拥有极高的关注度,是许多现代应用的首选后端方案。
总的来说,Supabase 提供了三大部分的能力:后端基础设施、前端 SDK 以及免费的云服务。在后端,它提供数据库、文件存储、边缘函数和用户鉴权;在前端,通过客户端 SDK,可以将 React、Vue 甚至移动端应用轻松接入后端。
作为一个完全开源免费的项目,我们可以使用源代码或 Docker 镜像自行部署完整实例。如果希望快速上手,官方提供的云服务版本只需注册账户即可获得免费实例。
数据库核心
访问 Supabase 官网并登录,创建一个组织(Organization),选择免费计划(Plan)。接着创建项目(Project),设置密码并选择区域,即可拥有一个完整的 PostgreSQL 数据库实例。
在左侧的 Table Editor 中,可以创建数据表、添加字段、编辑和删除记录。切换到 SQL Editor,可以直接编写和执行 SQL 语句。在 Database 菜单下,可以看到 Schema、表、函数、触发器、枚举、插件等基础功能。其中 Publications 支持实时监控,可将表的修改信息以 WebSocket 形式推送出去。
插件扩展
PostgreSQL 的强大之处在于其丰富的插件生态。例如 PostGIS 插件,安装后即可让数据库具备存储地理位置信息的能力,相当于一个高性能的地理信息系统。
开启插件后,可以创建包含几何类型的表:
CREATE TABLE city_map (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
geom GEOMETRY
);
插入测试数据时,可以使用 PostGIS 提供的函数:
INSERT INTO city_map (name, geom) VALUES
('人民公园', ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326)),
('护城河', ST_GeomFromText('LINESTRING(-5 5, 15 5)', 4326)),
('电话亭', ST_GeomFromText('POINT(12 8)', 4326));
查询时可直接调用插件函数计算面积或距离:
SELECT name, ST_Area(geom) FROM city_map WHERE name = '人民公园';
数据库连接
除了网页操作,Supabase 还支持远程连接。点击 Connect 按钮获取连接地址,可接入任意数据库客户端(如 DBeaver)或后端代码。
连接模式主要有三种:
- Direct Connection:直连模式,性能最好但不支持 IPv4。
- Session Pooler:会话池模式,支持 IPv4,适合大多数场景。
- Transaction Pooler:事务池模式,由 Supabase 自动维护连接池,特别适合无状态服务或边缘函数,按需启动无需长时间维持连接。

