数据库
约 703 字大约 2 分钟
2025-08-11
概述
Evoliant 使用 PostgreSQL 17 作为主数据库系统,通过 Supabase 提供的托管服务进行管理。数据库采用现代化的设计模式,包含行级安全策略(RLS)、触发器、索引优化等特性。
文档结构
数据表文档
- 用户认证和信息模块 - 基于 auth.users 和元数据的用户信息系统
系统组件文档
- PGMQ 消息队列系统 - PostgreSQL 消息队列系统详细说明
语法参考
数据库架构
核心特性
- PostgreSQL 17:最新版本的开源关系型数据库
- 行级安全策略(RLS):细粒度的数据访问控制
- 自动触发器:数据变更的自动化处理
- 索引优化:高性能的查询支持
- 数据类型扩展:枚举类型和自定义类型
- PGMQ 消息队列:基于 PostgreSQL 的高性能消息队列系统
连接配置
[db]
port = 54322 # 本地数据库端口
shadow_port = 54320 # 影子数据库端口
major_version = 17 # PostgreSQL 主版本号数据库迁移
迁移文件结构
supabase/migrations/
├── <timestamp>_name.sql迁移管理命令
# 创建新迁移
npx supabase migration new <migration_name>
# 应用迁移到本地数据库
npx supabase db push
# 重置本地数据库
npx supabase db reset
# 生成类型定义
npx supabase gen types typescript --local开发环境
本地连接
# 数据库连接字符串
postgresql://postgres:postgres@127.0.0.1:54322/postgres
# 使用 psql 连接
psql "postgresql://postgres:postgres@127.0.0.1:54322/postgres"连接池配置
[db.pooler]
enabled = false
port = 54329
pool_mode = "transaction"
default_pool_size = 20
max_client_conn = 100安全配置
网络限制
[db.network_restrictions]
enabled = false
allowed_cidrs = ["0.0.0.0/0"] # 生产环境应限制 IP 范围
allowed_cidrs_v6 = ["::/0"] # 生产环境应限制 IPv6 范围访问控制原则
- 行级安全策略(RLS):表级别的访问控制
- 用户信息:基于 Supabase Auth 和用户元数据的访问控制
- 业务表:使用辅助函数进行基于角色的访问控制
- PGMQ 队列表:基于用户认证状态和角色的消息访问控制
- 角色权限管理:基于用户角色的数据访问控制
- PGMQ 消息队列安全:
- 认证用户可发送消息到所有队列
- 工作进程和系统服务可读取、处理和删除消息
- 基于队列类型的细粒度权限控制
- 审计日志:记录重要的数据变更操作
- 加密传输:使用 SSL/TLS 加密数据传输
RLS 策略覆盖范围
| 表/队列 | RLS 状态 | 策略类型 |
|---|---|---|
| auth.users | ✅ 启用 | Supabase Auth 内置 |
| 所有业务表 | ✅ 启用 | 基于辅助函数的用户角色验证 |
| pgmq.q_ai_tasks | ✅ 启用 | 基于认证状态 |
| pgmq.q_ai_tasks_dlq | ✅ 启用 | 基于认证状态 |
版权所有
版权归属:Evoliant
许可证:MIT