跳到主要内容

PG 模式概述

PG 模式 是云开发环境的一种新模式,采用 Postgres-Native 架构。创建云开发环境时选择 PostgreSQL 数据库,环境即自动以 PG 模式运行——以 PostgreSQL 作为基础设施层的统一底座,主要表现为:

  • 身份认证:用户数据存储在 PostgreSQL 的 auth schema 中,可在 SQL 中读取当前用户身份
  • 云存储:文件元数据保存在 PostgreSQL 的 storage schema,访问权限由 RLS 策略驱动
  • PostgreSQL 数据库:提供开箱即用的 PostgreSQL 实例,支持完整 SQL 能力,并基于 PostgREST 自动暴露 RESTful API
  • 权限体系:采用 表级权限(GRANT)+ 行级权限(RLS Policy) 的双层权限模型,统一使用 anon / authenticated / service_role 三种数据库角色进行鉴权,详见 架构与权限模型数据权限管理RLS 权限模式库
  • 业务数据:可继续使用文档型数据库,也可使用 PostgreSQL 实例存储关系型数据,并通过 RLS 策略进行权限管控;如需快速上手,可阅读 快速体验实战教程

与传统模式相比,最大的差异不是"数据库变了",而是基础设施层从分散的子系统变为以 PostgreSQL 为底座的统一运行时;因此它更适合需要强结构化建模、关联查询、事务一致性以及精细化行级权限的场景。

体验通知

CloudBase PG 模式环境已开放体验,欢迎试用。如需创建体验环境,请联系云开发团队。功能正在持续迭代完善,正式发布时间请关注官方公告。

仅新环境支持

PG 模式仅新建环境支持,存量传统模式环境不支持升级。如需使用相关能力,请新建环境并选择 PostgreSQL 数据库

为什么称为 PG 模式?

PG 模式不是简单地"在原有环境里多加一个 PostgreSQL 实例"。如上所述,它会同时改变数据库访问、权限模型、身份认证、云存储和访问角色等基础能力:PostgreSQL 不只是 SQL 数据库,而是身份、存储、权限和业务数据访问的统一运行时底座。

正是因为这些"环境基础能力"都因 PostgreSQL 的引入而被重构,我们将其命名为 PG 模式(采用 Postgres-Native 架构),以便于与云开发的传统运行模式进行区分,并突出 PostgreSQL 作为整个环境运行时第一公民的地位。

整体架构

PG 模式下,客户端请求经过统一的鉴权与策略校验链路落到数据库:

客户端(Web / 小程序 / 云函数)
│ Authorization: Bearer <Token>
│ (Publishable Key / access_token / API Key)

CloudBase 网关
│ 解析 JWT → 设置 role + request.jwt.claims

PostgREST(自动 RESTful API)

PostgreSQL
├─ 第一层:表级权限检查(GRANT ... TO <role>)
├─ 第二层:RLS Policy 过滤(USING / WITH CHECK)
└─ schemas:
├─ auth 账号系统(users 等)
├─ storage 云存储元数据(buckets / objects)
└─ public 业务表

双重锁定原则:只有表级 GRANT 与 RLS Policy 都通过,操作才会成功。任一层拒绝均返回权限错误。

核心能力

能力说明
完整 SQL 支持表、视图、外键、索引、事务、触发器、存储过程、CTE、窗口函数等 PostgreSQL 原生能力
PostgREST RESTful API基于表结构自动生成 RESTful 接口,支持筛选、排序、分页、关联查询、RPC 调用
双层权限模型表级 GRANT + 行级 RLS,权限即 SQL,与业务查询同语言同语义
与云存储联动云存储文件读写权限统一由 RLS 控制,与数据表权限体系完全一致
与身份认证联动账号数据存于数据库的 auth schema,可通过 JWT claims 在 SQL 中直接获取当前用户身份
丰富扩展生态预装或可用的扩展包括 pgvector(向量检索)、vectorscale(DiskANN 向量索引)、tencentdb_ai(腾讯云 AI)、zhparser / pg_jieba(中文分词)、TimescaleDB(时序)、Apache AGE(图)、PL/V8(JavaScript 存储过程)等

适用场景

以下场景推荐优先选择 PG 模式:

  • 需要复杂关联查询、事务一致性的业务系统
  • 需要精细到行级别的数据权限控制(如多租户、SaaS 应用)
  • 希望通过标准 REST API 对接前端、第三方系统或低代码平台
  • 需要使用 SQL 生态(如 pgvector 做向量检索、pg_jieba 做中文全文搜索)的 AI / 搜索应用
  • 希望让 AI 编码助手(Cursor、CodeBuddy、Claude Code 等)更流畅地完成全栈开发——权限即 SQL,AI 理解无需切换上下文

下一步