Supabase 教程:用 RLS 为 Flutter 聊天应用做授权
Supabase 发布 Flutter 教程第二部分,演示如何用 PostgreSQL 的 Row Level Security(RLS)为聊天应用加上授权,防止未授权读写数据库。教程在上一版实时聊天应用基础上新增 rooms 与 room_participants 表、create_new_room 数据库函数,并引入 flutter_bloc ^8.0.0 管理状态,实现 1 对 1 私聊。
Supabase 发布 Flutter 教程第二部分,演示如何用 PostgreSQL 的 Row Level Security(RLS)为聊天应用加上授权,防止未授权读写数据库。教程在上一版实时聊天应用基础上新增 rooms 与 room_participants 表、create_new_room 数据库函数,并引入 flutter_bloc ^8.0.0 管理状态,实现 1 对 1 私聊。
Neon 已支持 PostgreSQL 15,创建项目时可在 PostgreSQL v14 与 v15 之间选择版本。文章介绍了其如何用 Rust 代码支持多个 PostgreSQL 版本,供其他开发者参考。
Neon 宣布支持 PostgreSQL 15,该版本带来排序性能提升和预写日志(WAL)文件压缩等改进。用户可在 Neon 的 SQL Editor 中试用 SQL MERGE 等新功能。
Supabase 发布 supabase-flutter v1 稳定版,此前该 SDK 已推出开发者预览版并收集社区反馈。新版本聚焦开发体验,查询不再需要调用 .execute(),错误改为抛出而非返回,auth 方法命名更直观,onAuthStateChange 返回 stream。
Supabase 正式发布 supabase-js v2,此前 Launch Week 已放出候选版本,期间根据用户反馈更新了文档、示例和快速开始指南,并整理了迁移指南。v2 内置增强的 TypeScript 支持,可用 CLI 直接从数据库生成类型,同时修复了用户反馈最多的若干痛点。官方同时提供了与 v1 的差异说明、迁移指南、快速开始指南和示例。
Supabase 9 月集中清理积压,关闭超过 250 个 issue 和 50 个 Pull Request,并在 Product Hunt 上线了预构建 React 认证组件 Auth UI。
Supabase 与 Snaplet 开源了 postgres-wasm,一个在浏览器内运行的 PostgreSQL 服务器,支持状态持久化到浏览器、从 pg_dump 恢复以及从远程数据库做逻辑复制。
Supabase 发布 8 月 Beta 更新,Supabase CLI 升级至 v1.0 并支持生成 TypeScript 类型,同时推出 Management API Beta,可对接 Zapier、Terraform、Pulumi 等集成。
Supabase 发布 Vault,一个在数据库内管理密钥与加密的 Postgres 扩展,构建在 pgsodium 之上。
Supabase 在平台上发布 Postgres 扩展 pg_jsonschema,为 json 和 jsonb 数据类型增加 JSON Schema 校验支持。
推荐理由:在 Postgres 里用 check 约束加 JSON Schema 校验 json/jsonb,省掉为 webhook 数据建 5 张关联表的架构成本。
PostgREST v10 已发布,可通过 GitHub release 页面自行托管或下载可执行文件使用,Supabase 平台暂未上线,官方称将在接下来一个月内上线。
推荐理由:PostgREST v10 新增 EXPLAIN 执行计划与计算关系,自托管用户可先升级,Supabase 平台版要等一个月。
Supabase 为 Auth Helpers 新增 SvelteKit 支持,并将包名从 @supabase/supabase-auth-helpers 改为 @supabase/auth-helpers,版本号重置为 0.x 以下。库已迁入 monorepo,各框架包独立发布、只含相关依赖,官方同时提供了迁移指南,Remix 版本正在开发中。
Neon 分享了其 Serverless Postgres 服务背后的架构决策,核心思路是将存储与计算分离,这一设计在运营型数据库中最早由 AWS Aurora 引入。Neon 的目标是打造一个具备现代云原生架构的 Serverless Postgres 服务。
Neon 演示了如何用数据库分支在 Postgres 上运行 Prisma 迁移。其架构将存储与计算分离,从而支持 serverless Postgres,并能创建数据库分支。
Supabase 发布教程,介绍如何用开源可视化工具 Metabase 连接 Supabase 项目并生成图表。用户可通过 Docker 容器启动 Metabase,选择 PostgreSQL 并填入 Supabase 的数据库连接信息,即可查看表数据、使用 x-rays 自动洞察,或通过 SQL 查询自定义仪表盘。
Vercel 推出 Edge Middleware,让开发者用代码定义重写、重定向和请求头等路由规则,在 Edge Cache 之前运行,无需再依赖冗长配置文件。
Supabase 博客介绍一种用 PostgreSQL 行级安全(RLS)导出部分数据的方法:先建一个受限用户 exporter 并只授予 public schema 的 usage 和 profiles 表的 select 权限。
推荐理由:用 RLS 加受限用户跑 pg_dump,把生产库里的用户数据挡在本地开发环境之外。
Vercel 发布 Edge Runtime,一个基于 Web 标准、用 TypeScript 编写的轻量运行时,供框架作者(如 Next.js)集成而非直接用于应用代码。它是 Node.js API 的子集,兼容 WinterCG 标准,本地开发时会 polyfill Web API,生产环境则使用 JavaScript V8 引擎而非 Node.js,因此无法访问 Node.js API。
Neon 正式上线,提供基于存储与计算分离架构的 Serverless Postgres,目前已开放等待名单注册。服务仍处于等待名单限制阶段,团队正在逐步接入用户。
Supabase 发布 2022 年 5 月 Beta 更新,新增通配符重定向,支持 *.mydomain.com/welcome 这类域名,方便 Vercel、Netlify 等 Jamstack 平台的预览部署。
Mike Lyndon 正在用 Supabase 加速开发 AllPullTogether。该案例收录于 Supabase 官方客户案例库,与 Polymet、Lingo.dev、QA.tech、Lovable、Chatbase 等项目的实践并列展示。
Supabase 推出 Partner Gallery,集中展示与其集成的工具和认证专家,首批专家为英国应用开发机构 Morrow 和新加坡产品工作室 Quinence。
Supabase 发布 Realtime 第三个大版本,引入多租户以同时监听多个数据库,并采用分布式节点集群以提升资源利用率、容错能力和降低延迟。新版本在保留原有数据库变更监听功能的同时,开放 WebSocket 供开发者构建多人游戏和协作应用,新增 Presence(用户在线状态,由 CRDT 驱动)和 Broadcast(发送光标移动等临时事件)两项能力。
Supabase 发布 Enterprise 计划,同时把部分企业功能放进 Pro 档:合并 Pro 与 Pay as you go 计划,升级 Pro 后默认开启消费上限,单项目每月成本上限为 25 美元,超出后服务仍会继续运行并会直接联系用户。
推荐理由:Supabase 把企业级功能下放到 Pro 档并默认开启每月 25 美元消费上限,按用量付费的团队要重新核对账单预期。
Supabase 发布一套 150 行 SQL 的 Postgres 审计方案,用 JSONB 单表存储所有表的增删改历史,通过 audit.enable_tracking('public.members') 一行开启追踪,并用 BRIN 索引 ts、btree 索引 table_oid 和 record_id 支撑按时间范围和单行历史的快速查询。
推荐理由:用 150 行 SQL 给 Postgres 加审计表,写入低于每秒 1000 次时开销可忽略,可直接照抄或装扩展。
Supabase 开源了 pg_graphql,一个原生 PostgreSQL 扩展,把 GraphQL 的 schema 生成、查询解析和 resolver 全部放在数据库服务器内,不需要额外服务。
推荐理由:Supabase 把 GraphQL 能力做成 PostgreSQL 扩展开源,自托管项目可以省掉额外进程和内存开销。
Supabase 开源了原生 PostgreSQL 扩展 pg_graphql,可在数据库服务器内完成 GraphQL 的 schema 生成、查询解析与 resolver,无需外部服务。
Supabase 宣布 Realtime 现在会遵循 PostgreSQL 的 Row Level Security 策略,数据库变更只广播给有权限查看的用户,此前 Realtime 会把所有变更广播给所有客户端。
推荐理由:Realtime 现在按 RLS 策略逐用户过滤广播,用 Realtime 的要把客户端升到 v1.23.0 并检查策略性能。
Supabase 发布 Supabase Studio,把平台上使用的 Dashboard 开源,供本地开发和自托管使用。
推荐理由:Supabase 把平台同款 Dashboard 前端开源,自托管和本地开发可以直接用同一套代码管理数据库。
PostgreSQL 14 带来 JSON 下标访问、非连续多范围数据类型、查询流水线等新能力,开发者可用下标直接遍历 JSON 键值对取值,并用单条 insert 语句写入多个不连续数据范围。
PostgREST 9 发布,新增在嵌入表时做内连接的能力,用 !inner 关键字可基于嵌入表(如 users)的过滤条件筛选顶层表(如 messages)的行,适用于所有 Supabase 客户端库和各类操作符。
推荐理由:PostgREST 9 支持内连接过滤和单参数 POST,自建自定义 auth 函数的要在升级前改 current_setting 写法。
Supabase 将于 2021 年 11 月 29 日至 12 月 3 日举办 Launch Week III:假日特别版,连续五天每天发布一项新产品或功能。首日为 Community Day,随后依次发布 Supabase Studio 本地开发与自托管版本、Realtime Row Level Security,并宣布收购 Logflare,最后一天一次性公布五项更新。
Supabase 发布 2021 年 10 月 Beta 更新,新增 Slack、Spotify 和 MessageBird 电话登录三种 Auth 提供商,并支持在 Dashboard 中切换浏览任意数据库 schema、通过 API 访问已授权的 schema。
Replenysh 借助 Supabase Auth 在不到 24 小时内完成短信 OTP 登录实现,并在几周后把应用部署到应用商店。团队此前用 Haskell 服务端加 Heroku 上的 Postgres 自建 OTP 系统,因需要 Postgres 与 Row Level Security 而放弃 Firebase,最终从 Hacker News 了解到 Supabase 后完成迁移。
Supabase 发布 2021 年 9 月 Beta 更新,Dashboard 现支持自定义列类型、唯一约束和批量编辑列,并更新了网格以支持跨多个 schema 的关系。JavaScript 库新增 AbortController 支持,可中止长时间运行的查询。Auth 文档拆分为认证与授权两部分,Discord 社区已超 3500 名开发者,Twitter 粉丝达 16.5k。
Supabase 在 7 月举办第二次 Launch Week,上线基于短信的移动端登录(Twilio 集成),并新增 Twitch 登录及通过 API 生成邀请、恢复、确认和 magic link 的能力。
Supabase 宣布 Database Webhooks(原 Function Hooks)以 Alpha 形式向所有新项目开放,可监听表的 INSERT、UPDATE、DELETE 事件并异步触发外部 HTTP 函数,同时 Dashboard 新增原生 PostgreSQL Functions 编辑器和触发器管理界面。
推荐理由:Supabase 把 Database Webhooks 和 Postgres Functions 编辑器放进所有新项目的 Alpha,想接数据库变更触发外部 HTTP 的可以现在试,但别用在关键路径上。
Supabase 在 Dashboard 新增 Reports 板块,可查看一个月内的 Database、Auth、Storage API 请求量以及 CPU、内存两项实例健康指标,每个项目支持一份可配置报告。
Supabase Auth 发布 v2,新增手机号登录能力,用户可用短信一次性密码(OTP)登录,也可用手机号加密码组合登录,该功能对所有新建和已有的 Supabase 项目开放。
推荐理由:Supabase Auth 上线手机号 OTP 登录,用 Twilio 即可接入,做移动端登录的可以省掉自建短信验证流程。
Mobbin 从 Firebase 迁移到 Supabase,为其 20 万创作者用户解决认证问题。Firebase Authentication 无法自动合并同一邮箱的重复账号,用户难以升级付费账户,且每月 500 万次 API 请求带来的账单和性能问题日益突出。迁移后 Mobbin 借助基于 GoTrue 的认证和 Postgres 关系型数据库,显著降低了月度支出并提升了性能。