mcpField
D
data-systems-architecture

data-systems-architecture

github.com/ratacat数据与数据库5866 次安装37 周前更新
代码仓库

关于 data-systems-architecture

为数据系统设计提供参考的技能,整理分布式系统、PostgreSQL 与查询优化知识。通过按问题导航的参考文档,帮助设计数据模型、索引、扩展和事务方案。

主要功能

  1. 01数据系统架构原则
  2. 02数据建模与存储引擎参考
  3. 03索引与查询优化指导
  4. 04扩展与复制策略
  5. 05事务并发与应用集成指导

适用场景

  1. 01规划新数据库或模式
  2. 02评估规范化与反规范化取舍
  3. 03诊断慢查询和索引需求
  4. 04处理并发、扩展或 ORM 问题

安装

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

$npx skills add https://github.com/ratacat/claude-skills --skill data-systems-architecture

安装后在 Claude Code 中输入/data-systems-architecture确认已加载。

包含的文件

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

01-foundational-principles.md
02-data-modeling.md
03-storage-engines.md
04-indexing.md
05-scaling-patterns.md
06-transactions-concurrency.md
07-application-integration.md

详细介绍

数据系统架构

概述

核心原则: 良好的数据系统架构需要在可靠性(故障情况下仍能正确运行)、可扩展性(平稳应对增长)和可维护性(随着时间推移仍能高效地进行变更)之间取得平衡。每项架构决策都涉及这些方面之间的权衡。

本技能综合了三部基础著作中的知识:

  • Designing Data-Intensive Applications(Kleppmann)——分布式系统、存储引擎、扩展
  • The Art of PostgreSQL(Fontaine)——PostgreSQL 特定模式、将 SQL 视为编程语言
  • PostgreSQL Query Optimization(Dombrovskaya 等)——执行计划、性能调优

适用场景

症状从这里开始
设计新的数据库/模式01-foundational-principles.md
规范化与反规范化决策02-data-modeling.md
需要了解 OLTP 与 OLAP03-storage-engines.md
查询缓慢、索引选择04-indexing.md
规划增长、只读副本05-scaling-patterns.md
竞态条件、死锁、隔离问题06-transactions-concurrency.md
N+1 查询、ORM 问题、应用集成07-application-integration.md

导航

参考文件(按需加载)
01-foundational-principles.md    - Reliability/Scalability/Maintainability, load parameters
02-data-modeling.md              - Normalization, denormalization, schema design patterns
03-storage-engines.md            - B-trees, LSM-trees, OLTP vs OLAP, PostgreSQL internals
04-indexing.md                   - Index types, compound indexes, covering indexes, maintenance
05-scaling-patterns.md           - Replication, partitioning, sharding strategies
06-transactions-concurrency.md   - ACID, isolation levels, MVCC, locking patterns
07-application-integration.md    - ORM pitfalls, N+1, business logic placement, batch processing

快速决策框架

New system design?
├─ Yes → Read 01, then 02 for data model
└─ No → What's the problem?
         ├─ "Queries are slow" → Read 04 (indexing) + 03 (storage patterns)
         ├─ "Data is inconsistent" → Read 02 (modeling) + 06 (transactions)
         ├─ "Can't handle the load" → Read 05 (scaling) + 03 (OLTP vs OLAP)
         ├─ "App makes too many queries" → Read 07 (N+1, ORM patterns)
         └─ "Race conditions/deadlocks" → Read 06 (concurrency)

核心概念(速查)

三大支柱
关注点定义关键问题
可靠性系统在故障情况下仍能正确运行出现故障时会怎样?
可扩展性平稳应对增长负载增长 10 倍会是什么情况?
可维护性易于运维和演进新工程师能理解它吗?
数据模型选择
模型最适合避免使用的情况
关系型多对多关系、联接、一致性高度层次化的数据、频繁变更模式
文档型自包含文档、树结构需要联接、多对多关系
图高度关联的数据、递归查询简单的 CRUD、无需遍历关系
OLTP 与 OLAP
方面OLTPOLAP
查询模式点查找、少量行聚合、大量行
优化方式为 WHERE 中使用的内容都创建索引减少索引,全表扫描也可以
存储方式面向行可考虑面向列
索引类型速查
类型用例PostgreSQL
B-tree相等、范围、排序默认类型,适用于大多数查询
Hash仅相等精确匹配更快
GIN数组、JSONB、全文搜索@>、@@ 运算符
GiST几何类型、范围类型PostGIS、最近邻
BRIN大型、自然有序的表时序数据
隔离级别
级别防止的问题PostgreSQL 默认值?
Read Committed脏读是
Repeatable Read+ 不可重复读否
Serializable所有异常否(使用 SSI)

设计检查清单

完成数据架构设计前:

  • 已识别负载参数(读写比、数据量、延迟要求)
  • 已选择合适的数据模型(关系型/文档型/图混合?)
  • 先规范化至 3NF,仅在有测量结果支持时才进行反规范化
  • 根据实际查询模式设计索引(而非假设的模式)
  • 已考虑增长 10 倍的情景
  • 已确定隔离级别要求
  • 已明确业务逻辑所在位置(应用端、数据库端或两者)
  • 已规划运维工作(备份、监控、迁移)

参考资料

  • Kleppmann, M. Designing Data-Intensive Applications(O'Reilly,2017)
  • Fontaine, D. The Art of PostgreSQL(第 2 版,2020)
  • Dombrovskaya, H., Novikov, B., Bailliekova, A. PostgreSQL Query Optimization(Apress,2021)

评论

支持 Markdown