mcpField
M
moai-domain-database

moai-domain-database

github.com/modu-ai数据与数据库1.2k110 次安装今天更新
代码仓库

关于 moai-domain-database

面向数据建模与数据库运维团队的技能,覆盖关系型、文档型和内存数据库,并涉及查询优化、多数据库架构、迁移、扩展及云数据库模式。

主要功能

  1. 01PostgreSQL、MongoDB、Redis 和 Oracle 模式
  2. 02模式设计与查询优化
  3. 03多数据库架构与同步
  4. 04迁移、连接池与监控
  5. 05Neon、Supabase 和 Firestore 云数据库指南

适用场景

  1. 01设计数据库模式
  2. 02优化查询与索引
  3. 03构建多数据库系统
  4. 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 的云数据库平台选择与配置。

快速决策指南
需求平台
支持自动扩缩容的无服务器 PostgreSQLNeon
为 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 默认设置(移动端)。

评论

支持 Markdown