本章用一个贯穿性的示例应用,演示如何把前九章的能力组装成真实架构。本节先做「业务拆解」与「能力映射」——这是动手前最重要的设计环节。
为了覆盖尽可能多的能力,我们设想一个「智能知识协作平台」,它的核心功能包括:
这个应用几乎要用到 Supabase 的每一项能力,是绝佳的整合示例。
架构设计从数据建模开始(第 2 章)。识别核心实体:
关系一览:
把每个功能映射到 Supabase 的能力:
| 功能 | 用到的能力 | 关键设计 |
|---|---|---|
| 注册登录 | Auth(邮箱/OAuth) | 用户表自动管理 |
| 个人资料 | 业务表 + RLS | 用户详情表关联用户 id |
| 文档增删改查 | 数据表 + SQL + RLS | 文档表含 owner_id,策略按归属判断 |
| 文档协作 | Realtime(变更订阅 + 广播 + Presence) | 订阅文档变更、光标广播、在线状态 |
| 图片附件上传 | Storage(私有桶 + 签名 URL) | 路径编码文档/用户归属 |
| 语义搜索 | pgvector + 边缘函数 | 文档向量列,查询转向量检索 |
| 智能问答 | pgvector + 边缘函数 + 大模型 | RAG 流程 |
| 定时清理 | 边缘函数 + 定时任务 | Cron 触发清理过期草稿 |
| 数据快照 | 边缘函数 + Storage | 定时导出存档 |
这张映射表是架构设计的核心产出——它让你清楚「每个需求靠什么能力实现、怎么实现」。
从工程视角,整个应用可分为三层:
这种分层让前端尽量直连(高效、简单),把必须保密或需编排的逻辑交给边缘函数。
一个关键设计决策:某个操作让前端直连数据库,还是经由边缘函数?判断标准:
原则:能用 RLS + 直连解决的,绝不加函数。 只有需要服务端密钥或外部调用时,才经由边缘函数。
避免「所有请求都过函数」的反模式——那样既慢又贵,还抹杀了 Supabase 直连架构的优势。
架构不止于功能,还要考虑:
这些非功能需求往往决定了应用能否长期健康运行。
借鉴第 1 章的环境隔离理念:
架构设计的核心是「业务拆解 → 能力映射 → 分层组织 → 直连与函数取舍 → 非功能需求」。先把这套设计想清楚,再动手实现,能避免大量返工。下一节我们深入真实请求链路,看这些能力在实际运行中如何协作。