Works with the AI tools you already use
Database Design Engine
DB type routing, selection decision tree, relational/NoSQL design, performance optimization, 2026 trends.
Free
See it in action
You say
Help with database
Your agent does
Database Design Engine
Structured analysis with routing and next steps.
About this skill
数据库设计决策引擎
专家级数据库选型与设计指导,助你做出最优技术决策
📋 技能概述
本技能为开发者提供全链路数据库设计决策支持,从选型评估到具体设计实现,涵盖关系型、NoSQL、NewSQL 及新兴数据库类型。
适用场景:新项目数据库选型、现有架构优化、技术债务重构、性能瓶颈诊断
1️⃣ 数据库类型路由
1.1 七大数据库类型速查
| 类型 | 代表产品 | 核心优势 | 最佳场景 | |------|---------|---------|---------| | 关系型 (RDBMS) | PostgreSQL, MySQL, Oracle, SQL Server | ACID、SQL成熟、生态完善 | 事务核心系统、金融、ERP、核心业务 | | 文档型 (Document) | MongoDB, Couchbase | 灵活Schema、高扩展性 | 内容管理、用户画像、日志系统 | | 键值 (Key-Value) | Redis, DynamoDB, etcd | 超高读写、低延迟 | 缓存、会话存储、配置中心、队列 | | 图数据库 (Graph) | Neo4j, TigerGraph, Neptune | 关系遍历高效 | 社交网络、推荐系统、反欺诈、知识图谱 | | 时序数据库 (TSDB) | InfluxDB, TimescaleDB, TDengine | 时序压缩、高效聚合 | IoT传感器、监控指标、金融K线、运维监控 | | 搜索引擎 (Search) | Elasticsearch, OpenSearch, Meilisearch | 全文检索、复杂聚合 | 日志分析、全文搜索、分析报表 | | 列式存储 (Columnar) | ClickHouse, Apache Druid, Cassandra | 列压缩、OLAP高效 | 数据仓库、实时分析、BI报表 |
1.2 类型选择决策矩阵
2️⃣ 选型决策树
2.1 四维度评估模型
2.2 决策树核心路径
2.3 2026年选型推荐图谱
3️⃣ 关系型数据库设计
3.1 ER建模规范
实体识别原则
- 每个实体对应一个业务对象
- 实体名使用名词,单数形式
- 主键必须有明确的业务含义或使用代理键
关系类型 | 关系 | 含义 | 示例 | ER表示 | |------|------|------|--------| | 1:1 | 一对一 | 用户-账户 | ○──○ | | 1:N | 一对多 | 部门-员工 | ○──← | | N:M | 多对多 | 学生-课程 | ←──→ |
ER图示例:电商订单系统
3.2 范式化设计
三范式定义
| 范式 | 要求 | 示例 | |------|------|------| | 1NF | 原子性:字段不可再分 | ❌ 电话:13812345678,010-123 ❌ → ✅ 电话:13812345678, 区号:010 | | 2NF | 完全函数依赖:非主键字段完全依赖主键 | 学生成绩表(学号,课程号,学生名,成绩) → 学生名只依赖学号,非完全依赖 | | 3NF | 传递依赖:非主键字段不依赖其他非主键 | 订单表(订单号,商品ID,商品类别,商品名称) → 消除商品类别→商品ID的传递依赖 |
范式选择决策
3.3 反范式化策略
常用反范式技术 | 技术 | 做法 | 适用场景 | 风险 | |------|------|---------|------| | 列冗余 | 将常用字段复制到多表 | 用户名在订单表中重复存储 | 更新时需同步 | | 表合并 | 预JOIN成宽表 | 固定关联的统计报表 | 数据膨胀 | | 派生字段 | 冗余计算结果 | 订单总额、评分均分 | 值可能过期 | | 预聚合 | 存储汇总结果 | 日报表、月报表 | 实时性差 |
反范式化执行清单
- [ ] 确认数据更新频率 < 1%/天
- [ ] 评估存储成本增加(通常10-30%)
- [ ] 建立数据同步机制(触发器/定时任务/CDC)
- [ ] 设计数据一致性校验脚本
3.4 索引策略
索引类型选择
| 类型 | 语法示例 | 适用场景 | 开销 |
|------|---------|---------|------|
| B-Tree (默认) | INDEX idx_a(a) | 范围查询、排序、等值查询 | 写入+15%,存储+30% |
| 复合索引 | INDEX idx_a_b(a,b) | 多条件查询 | 遵循最左前缀原则 |
| 唯一索引 | UNIQUE INDEX idx_u(a) | 唯一性约束 | 写入+10% |
| 全文索引 | FULLTEXT INDEX ft(title,content) | 文本搜索 | 存储+50%,写入+30% |
| 哈希索引 | INDEX idx_h(a) USING HASH | 等值查询,范围查询差 | 内存消耗大 |
| 空间索引 | SPATIAL INDEX sp(geom) | GIS查询 | 存储+20% |
复合索引最左前缀原则
索引设计决策流程
3.5 分库分表策略
分片策略选择
| 策略 | 原理 | 优点 | 缺点 | 适用场景 |
|------|------|------|------|---------|
| 哈希分片 | shard = hash(key) % n | 数据均匀 | 范围查询困难 | ID为主键 |
| 范围分片 | 按ID区间或时间分片 | 范围查询友好 | 热点问题 | 时序数据 |
| 目录分片 | 映射表记录分片位置 | 灵活 | 单点查询 | 异构数据 |
| 复合分片 | 哈希+时间组合 | 均衡+局部有序 | 复杂度高 | 超大规模 |
分库分表决策树
分片键选择标准
- 高基数:至少有 > 1000 个不同值
- 均匀分布:避免数据倾斜导致热点
- 查询亲合:大多数查询包含分片键
- 稳定低频:避免更新导致数据迁移
常用分片键推荐 | 业务场景 | 推荐分片键 | 备选分片键 | |---------|-----------|-----------| | 电商-多商户 | tenant_id | user_id | | 社交-用户数据 | user_id | region_id | | 物联网-设备数据 | device_id | timestamp | | 金融-交易记录 | user_id | merchant_id | | 日志系统 | timestamp | source_id |
4️⃣ NoSQL 设计
4.1 文档模型设计
Schema-less vs Schema-on-Read
文档设计三原则
-
数据内聚原则:相关数据应存储在同一文档
-
文档大小限制:单文档建议 < 16KB
- 超过1MB需考虑拆分
- MongoDB硬限制 16MB
-
避免深层嵌套:嵌套层级 ≤ 3层
4.2 嵌入 vs 引用
决策矩阵 | 因素 | 嵌入 (Embed) | 引用 (Reference) | |------|-------------|------------------| | 数据关系 | 1:1, 1:N (子文档少) | 1:N (子文档多), N:M | | 查询模式 | 整体读取 | 独立访问子文档 | | 更新频率 | 子文档更新不频繁 | 频繁独立更新 | | 数据一致性 | 需强一致 | 可最终一致 | | 文档大小 | < 16KB | 不限 |
4.3 分片键选择 (MongoDB)
选择标准 | 标准 | 要求 | 风险 | |------|------|------| | 基数 (Cardinality) | 高基数,>数据量/100 | 低基数导致分布不均 | | 频率 (Frequency) | 值分布均匀 | 热点键导致单分片压力 | | 非升序 | 避免单调递增写入 | 写热点集中在最后chunk | | 查询包含 | 常见查询都包含此字段 | 广播查询性能差 |
5️⃣ 性能优化
5.1 慢查询分析
MySQL慢查询诊断流程
关键指标解读 | 指标 | 健康值 | 警告值 | 优化方向 | |------|--------|--------|---------| | Rows_examined | < 1000 | > 10000 | 增加索引 | | Rows_sent | < 100 | > 1000 | 减少返回量 | | Duration | < 100ms | > 1000ms | 优化执行计划 | | Using_filesort | 不应出现 | 出现即优化 | 添加ORDER BY索引 |
5.2 索引优化实战
优化检查清单
索引优化决策表 | 问题 | 症状 | 解决方案 | |------|------|---------| | 全表扫描 | type=ALL | 添加WHERE条件索引 | | 索引失效 | Using filesort | 添加排序列到索引 | | 低选择性 | 索引区分度低 | 联合索引或换个字段 | | 过时统计 | 执行计划不准 | ANALYZE TABLE | | 索引过多 | 写入性能下降 | 删除无用索引 |
5.3 缓存策略
缓存架构设计
缓存策略选择 | 策略 | 描述 | TTL | 数据一致性 | 适用场景 | |------|------|-----|-----------|---------| | Cache-Aside | 应用自主管理缓存 | 中等 | 最终一致 | 通用场景 | | Read-Through | 缓存自动加载 | 可配置 | 读取一致 | 简化应用 | | Write-Through | 同步写缓存+DB | 中等 | 强一致 | 写少读多 | | Write-Behind | 异步写DB | 短 | 可能丢数据 | 高写入 | | TTL过期 | 定时过期 | 短 | 弱一致 | 实时性要求低 |
5.4 读写分离
架构模式
6️⃣ 2026年趋势
6.1 向量数据库
定位:AI时代的必备组件,存储和检索高维向量
代表产品对比 | 产品 | 特点 | 适用场景 | 选型建议 | |------|------|---------|---------| | Milvus | 开源、功能全面、性能强 | 企业级生产 | 首选 | | Pinecone | 全托管、零运维 | 快速上线 | SaaS优先 | | Qdrant | Rust实现、API友好 | 中小规模 | 个人/小团队 | | Weaviate | 原生多模态 | 图文混合 | 多模态需求 | | pgvector | PG扩展 | 已有PG栈 | 轻量需求 |
6.2 Serverless数据库
核心价值:按需扩缩容,零运维成本
产品矩阵 | 产品 | 类型 | 亮点 | 限制 | |------|------|------|------| | PlanetScale (MySQL) | 分支式Serverless | Git式分支、工作流 | 无触发器 | | Neon (PostgreSQL) | 分支式Serverless | 秒级分支、按量计费 | 弱约束 | | Turso (libSQL) | 边缘嵌入式 | 嵌入式、多区域 | 生态较新 | | Upstash (Redis) | Serverless Redis | 按请求计费 | 无持久化需求 |
6.3 AI辅助数据库优化
AIOps数据库趋势 | 方向 | 工具/能力 | 价值 | |------|----------|------| | 智能索引推荐 | TiDB Dashboard、DBAHelper | 自动分析工作负载推荐索引 | | 自适应索引 | AI4DB Research | 动态创建/删除索引 | | 查询优化 | 阿里云DAS、腾讯云CDB | 自动SQL调优 | | 异常检测 | 预测性容量规划 | 提前发现瓶颈 | | 自然语言查询 | ChatSQL、Text2SQL | 降低SQL门槛 |
7️⃣ 质量门控清单
P0 - 必须项 (上线前必须通过)
-
[ ] 数据完整性
- [ ] 主键唯一性约束已设置
- [ ] 外键关系正确(级联策略已定义)
- [ ] 必填字段非空约束已设置
- [ ] 边界值/范围约束已验证
-
[ ] 索引完整性
- [ ] 所有WHERE条件字段有索引支持
- [ ] 所有ORDER BY字段有索引支持
- [ ] 无冗余索引
- [ ] 索引大小可控(单表索引数 < 8)
-
[ ] 查询性能
- [ ] 核心查询响应时间 < 100ms
- [ ] 无全表扫描(除小表)
- [ ] EXPLAIN执行计划已审查
- [ ] 连接池配置合理
-
[ ] 备份恢复
- [ ] 备份策略已制定(RPO < 1小时)
- [ ] 恢复流程已演练
- [ ] 备份可正常恢复
P1 - 重要项 (建议在上线前完成)
-
[ ] 容量规划
- [ ] 未来3年数据增长预估
- [ ] 存储空间充足
- [ ] 分库分表方案已规划
-
[ ] 安全加固
- [ ] 敏感字段加密(AES-256)
- [ ] SQL注入防护
- [ ] 最小权限原则(应用账户限制DELETE/DROP)
- [ ] 审计日志已开启
P2 - 优化项 (可在上线后持续改进)
- [ ] 性能优化
- [ ] 查询缓存策略已制定
- [ ] 热点数据已识别并优化
- [ ] 批量操作优化
8️⃣ 常见错误模式
错误1: 过度设计索引
症状: 写入性能差,索引比数据还大
原因:
- 认为"索引越多查询越快"
- 未定期清理无用索引
- 复合索引设计不当
解决方案:
错误2: 滥用外键约束
症状: 高并发写入死锁,水平扩展困难
原因:
- 关系型数据库习惯性加外键
- 未评估级联删除/更新的性能影响
解决方案:
错误3: 忽视数据类型选择
症状: 存储膨胀,查询变慢,精度问题
原因:
- VARCHAR(255) 万能字段
- DECIMAL vs FLOAT 混用
- DATETIME vs TIMESTAMP 不分
解决方案: | 场景 | 推荐类型 | 存储节省 | |------|---------|---------| | IP地址存储 | VARBINARY(16) | 50% | | 金额计算 | DECIMAL(18,2) | 精确 | | 布尔标志 | TINYINT(1) | 1字节 | | 状态枚举 | ENUM/TINYINT | 小且快 | | 时间戳 | TIMESTAMP(UTC) | 4字节 |
9️⃣ 扩展代码库
9.1 数据库设计代码生成器
9.2 数据库性能监控工具
🔟 扩展数据表格
10.1 数据库选型完整对比表 (2026年Q1)
| 数据库 | 类型 | 厂商 | 适用场景 | 开源 | 分布式 | 成熟度 | 学习曲线 | 推荐度 | |--------|------|------|---------|------|--------|--------|----------|--------| | 关系型 | | | | | | | | | | PostgreSQL 16+ | 关系型 | 社区 | 通用OLTP/复杂查询 | ✅ | ❌(需扩展) | ⭐⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐⭐ | | MySQL 8.0/8.4 | 关系型 | Oracle→MariaDB | Web应用/OLTP | ✅ | ❌(需中间件) | ⭐⭐⭐⭐⭐ | 低 | ⭐⭐⭐⭐ | | TiDB 7.x | NewSQL | PingCAP | HTAP/水平扩展 | ✅ | ✅ | ⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐ | | CockroachDB | NewSQL | CockroachLabs | 全球部署/强一致 | ✅ | ✅ | ⭐⭐⭐⭐ | 高 | ⭐⭐⭐ | | SingleStore | NewSQL | SingleStore | 分析+事务 | 部分 | ✅ | ⭐⭐⭐ | 中等 | ⭐⭐⭐ | | 文档型 | | | | | | | | | | MongoDB 7.0 | 文档型 | MongoDB | 内容管理/灵活Schema | ✅ | ✅ | ⭐⭐⭐⭐⭐ | 低 | ⭐⭐⭐⭐ | | Couchbase 7 | 文档型 | Couchbase | 移动/边缘/缓存 | 部分 | ✅ | ⭐⭐⭐⭐ | 中等 | ⭐⭐⭐ | | 键值型 | | | | | | | | | | Redis 7 | 键值型 | Redis Inc | 缓存/会话/队列 | ✅ | ✅(集群) | ⭐⭐⭐⭐⭐ | 低 | ⭐⭐⭐⭐⭐ | | etcd 3.5 | 键值型 | CNCF | 配置中心/服务发现 | ✅ | ✅ | ⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐ | | DynamoDB | 键值型 | AWS | Serverless/无限扩展 | ❌ | ✅ | ⭐⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐ | | 时序型 | | | | | | | | | | InfluxDB 2.7 | 时序型 | InfluxData | IoT/监控指标 | ✅ | ✅(集群) | ⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐ | | TDengine 3.0 | 时序型 | 涛思数据 | IoT/车联网 | ✅ | ✅ | ⭐⭐⭐⭐ | 低 | ⭐⭐⭐⭐ | | TimescaleDB 2.12 | 时序型 | Timescale | 时序+关系 | ✅ | ✅ | ⭐⭐⭐⭐ | 低 | ⭐⭐⭐⭐ | | 图数据库 | | | | | | | | | | Neo4j 5.x | 图数据库 | Neo4j | 社交/推荐/反欺诈 | ✅(社区) | ✅(集群) | ⭐⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐ | | TigerGraph 3.10 | 图数据库 | TigerGraph | 大规模图分析 | ❌ | ✅ | ⭐⭐⭐⭐ | 高 | ⭐⭐⭐ | | 搜索引擎 | | | | | | | | | | Elasticsearch 8.x | 搜索引擎 | Elastic | 日志/全文搜索 | ✅ | ✅ | ⭐⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐ | | Meilisearch 1.6 | 搜索引擎 | Meilisearch | 轻量级搜索 | ✅ | ❌ | ⭐⭐⭐ | 低 | ⭐⭐⭐⭐ | | 列式存储 | | | | | | | | | | ClickHouse 24.x | 列式存储 | ClickHouse | 数据仓库/实时分析 | ✅ | ✅ | ⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐⭐ | | Apache Druid | 列式存储 | Druid社区 | 实时OLAP | ✅ | ✅ | ⭐⭐⭐⭐ | 高 | ⭐⭐⭐⭐ | | 向量数据库 | | | | | | | | | | Milvus 2.4 | 向量存储 | Zilliz | AI向量检索 | ✅ | ✅ | ⭐⭐⭐⭐ | 中等 | ⭐⭐⭐⭐⭐ | | Pinecone | 向量存储 | Pinecone | Serverless向量 | ❌ | ✅ | ⭐⭐⭐⭐ | 低 | ⭐⭐⭐⭐ | | pgvector | 向量扩展 | PostgreSQL | 轻量向量检索 | ✅ | ✅(PG集群) | ⭐⭐⭐⭐ | 低 | ⭐⭐⭐⭐ |
10.2 数据库设计模式速查表
| 模式名称 | 适用场景 | 优点 | 缺点 | 实现示例 | |---------|---------|------|------|---------| | CQRS | 读写分离/复杂查询 | 解耦读写/性能优化 | 复杂度高 | 命令端写MySQL,查询端用ES | | 事件溯源 | 审计/历史追踪 | 完整历史/可重放 | 存储大/查询复杂 | 订单变更记录事件而非状态 | | 冷热分离 | 历史数据查询少 | 成本优化/性能提升 | 数据迁移复杂 | 近期数据存MySQL,历史存ClickHouse | | 读写分离 | 读多写少场景 | 扩展读能力/降低负载 | 数据延迟/一致性 | MySQL主从+ProxySQL | | 分库分表 | 超大规模数据 | 突破单机容量 | 跨库查询复杂 | ShardingSphere中间件 | | 多模数据库 | 混合负载 | 单一数据源 | 资源竞争 | MongoDB同时存储文档和向量 | | Lambda架构 | 批流一体 | 实时+历史兼顾 | 维护成本高 | Kafka+Flink+HBASE |
⑪ 数据库设计SOP流程
📚 参考资源
官方文档
- MySQL 8.4: [URL removed]
- PostgreSQL 16: [URL removed]
- MongoDB 7.0: [URL removed]
- Redis 7: [URL removed]
性能工具
- pt-query-digest: [URL removed]
- EXPLAIN ANALYZE: 各数据库内置
- slow_query_log: MySQL内置
设计模式
- Database of Databases: [URL removed]
- CAP Theorem Illustrated: [URL removed]
最后更新: 2026-01 版本: v1.0
How to install
Drop the file into your AI Agent. Works with Claude, Cursor, ChatGPT, and 20+ more.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill passes our trust checks below.
Security scanned
Passed our 8-point scan before listing
11 installs
Downloaded by developers to date
Free forever
No account required to browse
Trust & safety
Security scanned
Verified clean 2 months ago
- Free to download with an account