mcpField
D
database-design-patterns

database-design-patterns

github.com/nickcrew数据与数据库6290 次安装18 周前更新
代码仓库

关于 database-design-patterns

面向开发者的数据库设计指导技能,涵盖关系型与 NoSQL 系统的模式和持久化层设计。内容按主题整理,涉及数据建模、查询性能、扩展与一致性决策。

主要功能

  1. 01模式与数据建模指导
  2. 02ACID、BASE 和 CAP 概念
  3. 03索引与查询优化
  4. 04分区、分片与复制
  5. 05缓存和连接池实践
  6. 06按主题组织的参考文件

适用场景

  1. 01为新应用设计模式
  2. 02排查慢查询和索引问题
  3. 03规划数据库扩展与复制
  4. 04选择一致性和持久化策略

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nickcrew/claude-cortex --skill database-design-patterns

安装后在 Claude Code 中输入/database-design-patterns确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
core-principles.md
indexing-strategies.md
partitioning-patterns.md
query-optimization.md
replication-patterns.md
schema-design-patterns.md

详细介绍

数据库设计模式

为设计可扩展的数据库架构、优化查询性能,以及在关系型和 NoSQL 数据库中实现稳健的数据持久化层提供专家指导。

何时使用此技能

  • 为新应用设计数据库架构
  • 优化慢查询和数据库性能
  • 在规范化与反规范化策略之间进行选择
  • 实现分区、分片或复制策略
  • 在不同数据库技术之间迁移(SQL 转 NoSQL,或反之)
  • 针对高可用性和灾难恢复进行设计
  • 实现缓存策略和只读副本
  • 对数据库进行水平或垂直扩展
  • 确保分布式系统中的数据一致性

核心概念

数据建模

设计能够反映业务领域、访问模式和一致性要求的架构。根据工作负载特征,在规范化(数据完整性)与反规范化(读取性能)之间取得平衡。

ACID 与 BASE
  • ACID(关系型):原子性、一致性、隔离性、持久性——提供强保证
  • BASE(NoSQL):基本可用、软状态、最终一致——更加灵活
CAP 定理

分布式系统只能在以下三者中选择两项:一致性、可用性、分区容错性。

多语言持久化

针对不同用例使用合适的数据库:PostgreSQL 用于事务,MongoDB 用于文档,Redis 用于缓存,Elasticsearch 用于搜索,Cassandra 用于时间序列,Neo4j 用于图数据。

快速参考

任务加载参考资料
数据库核心原则(ACID、BASE、CAP)skills/database-design-patterns/references/core-principles.md
架构模式(规范化、星型架构、文档)skills/database-design-patterns/references/schema-design-patterns.md
索引类型和策略(B-tree、哈希、覆盖索引)skills/database-design-patterns/references/indexing-strategies.md
分区和分片方法skills/database-design-patterns/references/partitioning-patterns.md
复制模式(主副本、多主)skills/database-design-patterns/references/replication-patterns.md
查询优化和缓存skills/database-design-patterns/references/query-optimization.md

工作流

阶段 1:需求分析
  1. 识别访问模式(读密集型还是写密集型)
  2. 确定一致性要求(强一致性还是最终一致性)
  3. 估算数据量和增长率
  4. 定义 SLA 要求(延迟、可用性)
阶段 2:架构设计
  1. 对实体及其关系建模
  2. 根据工作负载选择规范化程度
  3. 针对查询模式进行设计,而不只是考虑存储
  4. 考虑数据分布策略(分区/分片)
阶段 3:性能优化
  1. 分析查询执行计划(EXPLAIN ANALYZE)
  2. 为频繁执行的查询添加索引
  3. 在适当场景实现缓存
  4. 配置连接池
  5. 监控并迭代优化
阶段 4:扩展策略
  1. 使用只读副本扩展读取能力
  2. 考虑为大型表(>100M 行)进行分区
  3. 为水平扩展规划分片策略
  4. 通过复制实现高可用性

常见错误

过度规范化:过多的联接会拖慢读取速度。对于读密集型工作负载,应进行反规范化。

缺少索引:分析查询模式,并为频繁出现在 WHERE/JOIN 子句中的列添加索引。

索引类型错误:使用复合索引时,应采用正确的列顺序(先等值条件,再范围条件)。

忽视复制延迟:使用读后写模式处理最终一致性。

分区键不当:选择能够均匀分布数据且与查询模式相匹配的键。

N+1 查询:使用 JOIN 或批量加载,而不是在循环中逐条查询。

低效分页:对于大型数据集,使用键集分页代替 OFFSET。

连接耗尽:根据工作负载配置合适规模的连接池。

最佳实践

  1. 根据访问模式建模 - 围绕数据的查询方式设计架构
  2. 有策略地建立索引 - 为经常查询的列建立索引,避免过度索引
  3. 对大型表进行分区 - 用于超过 1 亿行的表或时序数据
  4. 通过复制扩展读取能力 - 使用主从复制扩展读取能力,使用多主复制实现地理分布
  5. 优化查询 - 分析执行计划,避免 N+1 问题,使用合适的分页方式
  6. 缓存热点数据 - 在应用层进行缓存,并设置合适的 TTL
  7. 使用连接池 - 根据工作负载设置连接池大小
  8. 持续监控 - 跟踪查询性能、索引使用情况和复制延迟
  9. 为增长做好规划 - 按当前负载的 3 倍进行设计
  10. 谨慎选择一致性级别 - 根据业务需求选择一致性级别

资源

书籍:

  • 《Designing Data-Intensive Applications》(Kleppmann)
  • 《High Performance MySQL》(Schwartz)

网站:

  • use-the-index-luke.com
  • PostgreSQL 文档
  • MongoDB 文档

工具:

  • EXPLAIN ANALYZE
  • pg_stat_statements
  • Percona Toolkit
  • pt-query-digest

评论

支持 Markdown