Supabase Studio 新增 AI 助手,支持自然语言生成 SQL 语句和用户模拟功能。大幅降低数据库开发成本。
在上一次 Launch Week 中,我们在 Supabase Studio 的 SQL Editor 里推出了 text-to-sql 功能。这是我们迈向完整 AI Assistant 的第一步。
今天,我们正式推出 Supabase Assistant——一个内置于 dashboard 的 AI 助手;同时还带来了一些新功能,帮助你更快地将想法变为生产环境中的产品。
先来快速俯瞰一下:
我们很高兴通过全新的 Supabase Assistant,进一步扩展 Studio 的 AI 能力。
开发者告诉我们,SQL Editor 中的 text-to-sql 功能显著提升了他们的开发速度,也提高了他们的 SQL 能力。当 AI 与 Postgres 这类基于 schema 的数据库结合时,会展现出极强的能力:它可以从 schema 中推断出大量上下文,而数据库也能为生成的代码提供更严格的约束和保障。之前发布的功能进一步坚定了我们的判断:AI 将成为未来数据库开发的关键组成部分。
今天,我们开始在 Row Level Security Editor 中推出 Assistant 支持,并且很快会将它扩展到 Studio 的其他区域,包括 Table Editor、Postgres Functions、Serverless Functions 等。
我们先从 Row Level Security 说起。
在我们收到的所有功能请求中——而且数量确实很多——让 Row Level Security Policies 更容易编写,一直是最常见的诉求之一。
Row Level Security(RLS)是 Postgres 提供的一项功能,可以对数据库访问进行细粒度控制。RLS 虽然强大,但编写 Policies 往往很麻烦。今天,我们推出由 AI 驱动的 RLS Editor,让安全策略的编写变得简单。
新版 RLS Editor 将 SQL 放在最核心的位置。我们希望开发者能够充分发挥 Postgres 的全部潜力,而不是把它抽象隐藏起来。这个 Editor 实际上包含两种工具:
Assistant 已经过专门调优,可以生成适用于 Row Level Security 的 SQL,让你能够快速、轻松地按照自己的需求配置 Policies。
我们探索过多种 RLS Editor 的实现方式和设计方案。如今这种以 SQL 为先、AI 从旁协助的方式,正是我们一直在寻找的解决方案。现在,你可以通过 Feature Previews 启用新版 RLS Editor,稍后我们会进一步介绍 Feature Previews。我们非常期待听到你的反馈。
你可能从未想过,但 Studio 连接数据库的方式,其实和其他 Postgres client 完全一样。
它使用默认的 Postgres role,也就是 postgres。postgres role 的作用类似于你的 service role key,拥有数据库的管理员权限。它具备管理员级别的读写权限,并且可以绕过 Row Level Security。
如果你使用过我们的 client libs,应该会熟悉 anon 和 service_role API keys。这些 key 实际上会解析为 Postgres roles,对应的名称同样是 anon 和 service_role。这些 key 本质上是包含 Postgres role 的 JWT tokens:
如果能够在 Studio 中使用与你的应用相同的 Postgres roles 来运行查询,会怎么样?如果 Studio 可以假装使用另一个 role,而不是默认的 postgres role,又会怎么样?从今天开始,你可以这样做了:
你可以使用新的 Role 下拉菜单,为 Studio 中的查询选择不同的 Postgres role。这是一项非常强大的工具,可以用来测试 Row Level Security Policies,并确定每个 role 能够访问哪些数据。
我们来构建一个 Twitter/X clone 作为示例。在 Twitter clone 中,你可以:
tweets table,其中包含 user_id 和 content 等 columns。下面是我们的 tweets table。请观察切换 roles 时,table 会如何响应:
当我们使用 postgres role 查询时,可以看到全部数据。当我们使用 anon role 查询时,则不会返回任何数据。这很合理,因为我们还没有创建允许 anon 访问这张 table 的 Policy。
Role 下拉菜单还解锁了另一项实用能力:与 Supabase Auth 结合后,它甚至可以模拟不同的用户。
还记得前面提到的 API keys 吗?它们可以包含一个额外字段:sub。这个字段表示用户的 ID。当你使用 authenticated role 时,sub 字段就是当前登录应用的用户 ID:
我们可以在 Studio 中通过“铸造”一个包含该用户 ID 的 JWT,再使用这个 JWT 运行查询,从而模拟该用户。
在编写一条允许用户查看自己 tweets 的 RLS Policy 后,我们来看看实际效果。在这里,我们可以选择 authenticated role,然后选择某个特定用户,只查看这个用户发布的 tweets。下面是该用户的全部 tweets:
此时,Table Editor 正在模拟我们的用户。
你可以模拟项目中的任意用户,并完全以他们看到数据的方式进行查看。RLS Policies 中的任何条件,都会自动反映在这里的 table 中。
你可以直接在 Studio 中创建 RLS Policies,并测试它们是否完全按照预期工作。
这项能力并不局限于 Table Editor。我们还为 SQL Editor 和 GraphiQL 添加了 Roles 支持。让我们在 SQL Editor 中尝试查询自己发布的 tweets 列表,重复一遍前面的操作:
将这项功能与新版 RLS Editor 结合后,你只需几分钟,就能使用真实数据编写并测试 RLS Policies。这让 RLS Policies 的编写过程变得快得多,也简单得多。如果你有任何反馈,我们非常期待听到。
Supabase Realtime 非常适合用来构建协作应用。你可以通过 websockets 接收数据库变更,存储并同步用户在线状态数据,还可以通过“channels”向 clients 广播任意数据。
今天,我们推出 Realtime Inspector,让你能够直接在 Studio 中轻松完成 Realtime 的原型设计、检查和调试。你可以使用 Realtime Inspector 查看 channels 中发送和接收的消息,还可以按照消息类型进行过滤,包括 presence、broadcast 和 database changes。
当然,我们也在这里加入了 Roles 下拉菜单。你可以按照 role 查看事件,并像在 Table Editor 和 SQL Editor 中一样模拟用户。
如果你正在使用 Realtime,一定会发现新版 Inspector 非常实用。欢迎将你的任何反馈发送给我们。
今天,我们还推出了 Feature Previews,这是我们用来展示新功能的工具。在正式向所有用户开放之前,我们会先以 Preview 的形式发布 beta 功能。你可以查看当前可供预览的功能列表,每项功能都附有截图和简短说明,同时还包含一个 GitHub Discussion 入口,用于提交反馈。
我们希望通过 Feature Previews 实现几个目标:
我们越能快速地根据你的反馈进行迭代,就越能更快地将功能正式开放给所有用户。
虽然我们将这些功能视为 beta 版本,但请相信,我们始终极其重视你的安全、隐私和数据完整性。所有进入 Preview 阶段的功能都会围绕这些方面进行测试,并且只有当功能进入适合收集 UX/UI 反馈的阶段时,我们才会发布。
你可以在左下角的用户头像菜单中找到 Feature Preview:
目前有两项功能处于 Preview 阶段:
前面介绍过的新版 RLS Assistant:
以及重新设计的 API 侧边面板:
我们会持续密切关注 GitHub Discussions,并回复你的反馈。
在这次更新中,我们大幅提升了你使用 Supabase 时的体验。
Row Level Security Policies:借助全新的 Assistant,我们让 Row Level Security Policies 的创建变得前所未有地简单。这项功能大幅简化了为数据定义细粒度访问权限的过程。
Row Level Security Policies:借助全新的 Assistant,我们让 Row Level Security Policies 的创建变得前所未有地简单。这项功能大幅简化了为数据定义细粒度访问权限的过程。
Postgres Roles 与 User Impersonation:全新的 Roles 选择器允许你直接在 Studio 中直观查看安全策略产生的影响。你可以看到不同 roles 如何与你的数据交互,为测试访问控制提供了一项强大的工具。
Postgres Roles 与 User Impersonation:全新的 Roles 选择器允许你直接在 Studio 中直观查看安全策略产生的影响。你可以看到不同 roles 如何与你的数据交互,为测试访问控制提供了一项强大的工具。
Realtime Inspector:借助 Realtime Inspector,你可以对 Realtime 消息进行原型设计、检查和调试。对于使用 Supabase Realtime 的开发者来说,这项工具会非常实用。
Realtime Inspector:借助 Realtime Inspector,你可以对 Realtime 消息进行原型设计、检查和调试。对于使用 Supabase Realtime 的开发者来说,这项工具会非常实用。
Feature Previews:我们推出了 Feature Previews,以 beta 形式向你提供新的工具和功能,让你更容易提交反馈,并参与塑造产品的开发过程。
Feature Previews:我们推出了 Feature Previews,以 beta 形式向你提供新的工具和功能,让你更容易提交反馈,并参与塑造产品的开发过程。
这些更新体现了我们对 SQL-first 方法和以用户为中心的开发理念的坚持。我们期待收到你的反馈。在继续努力让 Supabase 变得更快、更易用的同时,我们也希望帮助你更快地将自己的想法带到真实世界中。