SuperAPI AI 工具集

postgresql

数据与分析

查看项目

更新于 10-15 22:38

技能介绍

用途:面向使用 PostgreSQL 的工程团队,提供多租户数据库设计与运维的最佳实践参考,覆盖 RLS 行级安全、Schema 设计、Alembic 迁移、异步 SQLAlchemy 与查询优化。

主要能力:

  1. RLS 多租户:租户范围查询必须设置 RLS 上下文,且须与查询在同一事务内;禁止租户 ID 回退,缺失即快速失败;异步框架下只做异步访问。上下文设置方式:SET LOCAL app.current_tenant_id = '<tenant_uuid>';
  2. 策略与建表检查:启用行级安全并创建隔离策略,例如 ALTER TABLE some_table ENABLE ROW LEVEL SECURITY; 与 CREATE POLICY some_table_tenant_isolation ON some_table USING (tenant_id = current_setting('app.current_tenant_id', true)::uuid); 租户 ID 用 UUID,外键 ON DELETE CASCADE,显式建索引(PostgreSQL 不自动索引外键列),注意 UNIQUE 允许多个 NULL,除非用 PG15+ 的 NULLS NOT DISTINCT。
  3. 常见失败模式:先查询后设置 SET LOCAL、跨会话设置上下文、在预期事务范围之外查询。
  4. Alembic 迁移清单:改 Schema、建索引、启用 RLS 并调整策略、增加隔离验证测试、提供真实 downgrade。
  5. 隔离测试:管理员会话(绕过 RLS)造数据,再用 RLS 会话分别以租户 A、B 断言可见性;A 只能看到 A 数据,B 看不到 A 数据。
  6. 破坏性操作安全:DELETE 必须带精确 WHERE;TRUNCATE/DROP 需明确确认;执行前确认目标、先 SELECT 或计数并展示结果、再请求最终确认。
  7. 版本说明:PostgreSQL 19 处于 Beta 3(2026-08-13),预计 2026 年 9/10 月 GA,细节可能变化;当前稳定线为 18.6。19 主要变化含 REPACK / REPACK CONCURRENTLY 取代 VACUUM FULL 与 CLUSTER、并行 autovacuum、逻辑复制序列、SQL/PGQ 属性图、GROUP BY ALL、FOR PORTION OF、在线校验和开关;18 有 18 项不兼容变化需规划,如强制 standard_conforming_strings、移除 RADIUS、默认关闭 jit、默认 default_toast_compression 改为 lz4、max_locks_per_transaction 默认 128 且尺寸计算变化。18.4 为安全与健壮性补丁,现有 18.x 集群无需 dump/restore,强化了启动包解析、备份工具与逻辑复制路径,并修复 MERGE、非确定性排序规则、生成列等计划器/执行器问题。

适用场景:多租户 SaaS 数据库设计、迁移评审、RLS 隔离测试、异步 ORM 访问、查询优化与版本升级准备。

限制:资料未提供具体安装命令或价格信息;RLS 策略需按实际表结构调整,破坏性操作须严格遵守确认流程。