关于 moai-domain-database
面向数据建模与数据库运维团队的技能,覆盖关系型、文档型和内存数据库,并涉及查询优化、多数据库架构、迁移、扩展及云数据库模式。
主要功能
- 01PostgreSQL、MongoDB、Redis 和 Oracle 模式
- 02模式设计与查询优化
- 03多数据库架构与同步
- 04迁移、连接池与监控
- 05Neon、Supabase 和 Firestore 云数据库指南
适用场景
- 01设计数据库模式
- 02优化查询与索引
- 03构建多数据库系统
- 04选择云数据库平台
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ modu-ai/ moai-adk --skill moai-domain-database安装后在 Claude Code 中输入/moai-domain-database确认已加载。
详细介绍
数据库领域专家
快速参考
企业级数据库专业知识——涵盖 PostgreSQL、MongoDB、Redis、Oracle 的全面数据库模式与实现,以及适用于可扩展现代应用的高级数据管理。
核心能力:
- PostgreSQL:高级关系型模式、优化与扩展
- MongoDB:文档建模、聚合与 NoSQL 性能调优
- Redis:内存缓存、实时分析与分布式系统
- Oracle:企业级模式、PL/SQL、分区与层次查询
- 多数据库:混合架构与数据集成模式
- 性能:查询优化、索引策略与扩展
- 运维:连接管理、迁移与监控
适用场景:
- 设计数据库架构和数据模型
- 实施缓存策略并优化性能
- 构建可扩展的数据架构
- 使用多数据库系统
- 优化数据库查询与性能
实施指南
快速入门工作流
数据库栈初始化:
创建一个 DatabaseManager 实例并配置多个数据库连接。配置 PostgreSQL,设置连接字符串、20 的连接池大小,并启用查询日志记录。配置 MongoDB,设置连接字符串、数据库名称,并启用分片。配置 Redis,设置连接字符串、50 的最大连接数,并启用集群。使用统一接口,跨所有数据库类型查询用户资料和分析数据。
单数据库操作:
使用迁移命令运行 PostgreSQL 架构迁移,并指定数据库类型和迁移文件路径。通过指定集合名称和管道 JSON 文件来执行 MongoDB 聚合管道。通过指定键模式和 TTL 值来预热 Redis 缓存。
核心组件
PostgreSQL 模块:
- 高级架构设计与约束
- 复杂查询优化与索引
- 窗口函数与 CTE
- 分区与物化视图
- 连接池与性能调优
MongoDB 模块:
- 文档建模与架构设计
- 用于分析的聚合管道
- 索引策略与性能
- 分片与扩展模式
- 数据一致性与验证
Redis 模块:
- 多层缓存策略
- 实时分析与计数
- 分布式锁与协调
- 发布/订阅消息与流
- 包括 HyperLogLog 和 Geo 在内的高级数据结构
Oracle 模块:
- 层次与递归查询模式(CONNECT BY)
- PL/SQL 过程、程序包与批处理操作
- 分区策略(范围、列表、哈希、复合)
- 企业级功能与语句缓存
- LOB 处理与大型数据处理
高级模式
多数据库架构
多语言持久化模式:
创建一个 DataRouter 类,用于初始化与 PostgreSQL、MongoDB、Redis 和 Oracle 的连接。实现 get_user_profile 方法,从 PostgreSQL 或 Oracle 获取结构化用户数据,从 MongoDB 获取灵活的资料数据,并从 Redis 获取实时状态,然后合并所有数据源。实现 update_user_data 方法,将结构化数据更新路由到 PostgreSQL/Oracle,将资料数据更新路由到 MongoDB,将实时数据更新路由到 Redis,随后使缓存失效。
数据同步:
创建一个 DataSyncManager 类,用于跨数据库同步用户数据。实现 sync_user_data 方法,从 PostgreSQL 获取用户,为 MongoDB 创建搜索文档,将其更新或插入到 MongoDB 搜索集合中,创建缓存数据,并设置 TTL 更新 Redis 缓存。
性能优化
查询性能分析:
对于 PostgreSQL,对查询执行 EXPLAIN ANALYZE BUFFERS,并使用 QueryAnalyzer 生成优化建议。对于 MongoDB,创建 AggregationOptimizer 来分析和优化聚合管道。对于 Redis,获取 info 指标,并使用 PerformanceAnalyzer 生成建议。
扩展策略:
通过提供副本连接 URL 来配置 PostgreSQL 只读副本。设置 MongoDB 分片,并指定分片键和分片数量。通过提供集群节点 URL 来配置 Redis 集群。
协同使用
互补技能:
- moai-domain-backend - API 集成和业务逻辑
- moai-foundation-core - 数据库迁移和架构管理
- moai-workflow-project - 数据库项目设置和配置
- moai-platform-supabase - Supabase 数据库集成模式
- moai-platform-neon - Neon 数据库集成模式
- moai-platform-firestore - Firestore 数据库集成模式
技术集成:
- SQLAlchemy、Mongoose 和 TypeORM 等 ORM 和 ODM
- 使用 PgBouncer 和连接池进行连接池管理
- Alembic、Flyway 和 Data Pump 等迁移工具
- 使用 pg_stat_statements、MongoDB Atlas 和 Oracle AWR 进行监控
- 使用 python-oracledb 连接 Oracle 并执行 PL/SQL
- 缓存失效和同步
技术栈
关系型数据库:
- PostgreSQL 14+ 作为主数据库
- MySQL 8.0+ 作为替代方案
- 使用 PgBouncer 和 SQLAlchemy 进行连接池管理
NoSQL 数据库:
- MongoDB 6.0+ 作为主文档存储
- 文档建模和验证
- 聚合框架
- 分片和复制
内存数据库:
- Redis 7.0+ 作为主缓存
- Redis Stack 提供高级功能
- 集群和高可用性
- 高级数据结构
企业级数据库:
- Oracle 19c+ / 21c+,用于企业工作负载
- python-oracledb(cx_Oracle 的后继版本)
- PL/SQL 过程和程序包
- 分区和高级分析
配套工具:
- Alembic 和 Flyway 等迁移工具
- 使用 Prometheus 和 Grafana 进行监控
- SQLAlchemy 和 Mongoose 等 ORM 和 ODM
- 连接管理工具
性能功能:
- 查询优化和分析
- 索引管理和策略
- 缓存层和失效处理
- 负载均衡和故障转移
资源
状态:已可用于生产环境
维护方:MoAI-ADK Database Team
常见借口
| 借口 | 事实 |
|---|---|
| “我不需要索引,表很小。” | 表会不断增长。在 1K 行时不起眼的缺失索引,到 1M 行时就会引发生产故障。 |
| “我之后再添加迁移。” | 不使用迁移的架构变更无法复现。每项变更都必须有可回滚的迁移脚本。 |
| “这个查询在开发环境中运行得很好。” | 开发数据库的数据集很小。生产环境中的查询计划在规模扩大后会大不相同。先执行 Explain analyze。 |
| “NoSQL 不需要架构设计。” | 无架构不等于无需设计。文档结构的决策会影响每个查询和索引。 |
| “我只添加一列,不会造成破坏性影响。” | 添加不带默认值的 NOT NULL 列会导致现有插入操作失败。添加列时需要默认值或通过迁移回填数据。 |
| “连接池由框架处理。” | 框架默认值适用范围较广。必须根据工作负载调整连接池大小、超时和空闲限制。 |
危险信号
- 提交架构变更时未附带对应的迁移文件
- 在生产代码中使用 SELECT *,而不是明确指定列名
- WHERE、JOIN 或 ORDER BY 子句使用的列没有索引
- 在源代码中硬编码连接字符串,而不是使用环境变量
- 事务范围涵盖面向用户的 HTTP 请求持续时间(导致锁长期占用)
- 涉及大型表的新查询没有 EXPLAIN ANALYZE 输出
验证
- 每项架构变更都有对应的迁移文件(展示迁移文件列表)
- 为频繁查询的列创建索引(展示索引定义)
- 针对使用代表性数据的新查询运行 EXPLAIN ANALYZE(展示输出)
- 从环境变量中读取连接凭据
- 事务范围尽可能小,且不跨越 I/O 等待
- 记录并测试备份和恢复流程
- 显式配置连接池大小和超时时间
云厂商指南(整合自 moai-platform-database-cloud)
Neon、Supabase 和 Firebase Firestore 的云数据库平台选择与配置。
快速决策指南
| 需求 | 平台 |
|---|---|
| 支持自动扩缩容的无服务器 PostgreSQL | Neon |
| 为 CI/CD 预览创建数据库分支 | Neon branching |
| 兼容边缘环境的连接池 | Neon + Neon Proxy |
| 用于 AI/ML 的向量搜索(pgvector) | Supabase |
| 面向多租户应用的行级安全 | Supabase RLS |
| 实时订阅 + 全栈 | Supabase |
| 移动优先并支持离线同步 | Firebase Firestore |
| 跨平台(iOS/Android/Web) | Firebase Firestore |
Neon(无服务器 PostgreSQL)
主要功能:自动扩缩容计算、缩容至零、数据库分支、pg_bouncer 连接池。
设置:
npm install @neondatabase/serverless
# Connection string: postgresql://user:[email protected]/dbname?sslmode=require
分支工作流:为每个 PR 创建一个分支(neonctl branches create --name pr-123),运行迁移、测试,并在合并后删除。空闲时零成本。
Supabase(PostgreSQL 16)
主要功能:pgvector、行级安全、实时订阅、内置身份验证/存储。
RLS 策略模式:
CREATE POLICY "users_own_data" ON items
FOR ALL USING (auth.uid() = user_id);
pgvector 搜索:SELECT * FROM embeddings ORDER BY embedding <-> $1 LIMIT 10;
Firebase Firestore(NoSQL)
主要功能:实时同步、离线缓存、安全规则、移动 SDK。
安全规则模式:
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
离线持久化:通过 enableIndexedDbPersistence(db)(Web)启用,或使用 SDK 默认设置(移动端)。