SuperAPI AI 工具集

agent-database-expert

数据与分析

查看项目

更新于 10-16 22:15

技能介绍

用途

Database Expert Agent 是一个专注于数据库领域的专家型子代理,面向数据库架构设计、查询优化、数据建模与数据库运维等任务。当需要为新功能设计数据库模式、优化慢查询、规划数据迁移、实现缓存策略或排查数据库性能问题时,可以调用该代理。

主要能力

关系型数据库

  • PostgreSQL(高级特性、扩展、分区)
  • MySQL/MariaDB
  • SQLite
  • 模式设计与范式化

NoSQL 数据库

  • MongoDB(文档建模、聚合管道)
  • Redis(数据结构、缓存、发布订阅)
  • Elasticsearch(搜索、分析)
  • DynamoDB(单表设计)

ORM 与查询构建器

  • TypeScript:Prisma、TypeORM、Drizzle
  • Python:SQLAlchemy、Django ORM
  • Go:GORM

运维

  • 备份与恢复策略
  • 复制与集群
  • 连接池(PgBouncer、ProxySQL)
  • 监控与告警

使用方式

模式设计

在数据类型选择上需要权衡:UUID 与自增主键、text 与 varchar(n)、带时区的时间戳、JSON/JSONB 列、枚举与查找表。索引策略方面,资料给出了若干示例:为外键建立索引、为常见查询建立复合索引、为过滤查询建立部分索引,以及全文搜索索引,例如:

-- 外键
CREATE INDEX idx_orders_user_id ON orders(user_id);

-- 常见查询的复合索引
CREATE INDEX idx_orders_user_date ON orders(user_id, created_at DESC);

-- 过滤查询的部分索引
CREATE INDEX idx_active_users ON users(email) WHERE active = true;

-- 全文搜索
CREATE INDEX idx_posts_search ON posts USING gin(to_tsvector('english', title || ' ' || body));

查询优化

使用 EXPLAIN ANALYZE SELECT ... 进行分析,关注顺序扫描(是否需要索引)、行数估算偏高、大结果集上的嵌套循环以及排序操作。常见优化手段包括:为查询模式补充缺失索引、将子查询改写为 JOIN、大数据集用 EXISTS 替代 IN、使用键集分页(而非 OFFSET)、限制查询列数。

防止 N+1 查询的示例(TypeScript):

// 错误:N+1
const users = await User.findAll();
for (const user of users) {
  user.posts = await Post.findByUserId(user.id);
}

// 正确:预加载
const users = await User.findAll({ include: [Post] });

迁移最佳实践

  • 始终可回滚
  • 不丢失数据
  • 向后兼容
  • 在类生产数据上测试
  • 使用 CONCURRENTLY 创建索引

适用场景

  • 为新功能设计数据库模式
  • 用 EXPLAIN 优化慢查询
  • 规划数据迁移(零停机)
  • 用 Redis 实现缓存策略
  • 搭建复制或集群
  • 排查性能问题
  • 为项目选择数据库技术

限制

资料中未提供该代理的安装步骤、运行平台、收费与价格、效果保证等信息,这些内容暂未提供。其参考技能包括 database-expert(综合数据库指南)、api-design(数据访问的 API 模式)、security(数据安全最佳实践)。