RSS DEV 社区

Supabase 数据库函数指南——通过 RPC 和 PL/pgSQL 实现无服务器逻辑

Follow
Supabase 数据库函数将复杂的业务逻辑直接整合到 PostgreSQL 中,使 Flutter 应用能够通过 rpc() 调用这些函数,而无需部署边缘函数。这种方法具有多项优势:确保多表更新的原子性,通过减少网络往返次数提升性能,通过封装逻辑并遵循行级安全(RLS)增强安全性,同时通过消除 Deno 部署简化开发流程。 可以创建函数来执行各种任务,例如计算用户的连续打卡天数,该函数会遍历日志条目以确定连续活跃的天数。它们还可以返回表数据,例如排行榜函数,该函数查询用户积分并进行排名。此外,多表事务函数(如完成任务)允许跨多个表进行原子更新,确保数据一致性,并返回结构化的 JSON 响应。 SECURITY DEFINER 子句表示函数以其所有者的权限运行,可能会绕过行级安全(RLS),因此需谨慎使用。相比之下,SECURITY INVOKER 以调用者的权限运行函数,使其成为更安全的选择,因为行级安全(RLS)仍然适用。实际应用场景显示出显著的性能提升,有用户报告通过消除边缘函数的冷启动和 Deno 开销,仪表盘聚合的延迟降低了 40%。生产用例包括实时连续打卡计算、获取仪表盘摘要以及幂等地授予成就。数据库函数与边缘函数之间的选择,通常取决于具体的性能、安全和部署需求。
favicon
dev.to
Supabase Database Functions Guide — Serverless Logic with RPC and PL/pgSQL
Create attached notes ...