mcpField
E
event-store-design

event-store-design

github.com/wshobson数据与数据库41.9k11.0k 次安装2 周前更新
代码仓库

关于 event-store-design

为事件溯源应用提供事件存储设计指南,面向规划或实现事件存储的开发者。内容涵盖架构、技术选型、要求与实践建议,并提供详细模板和示例的引用路径。

主要功能

  1. 01事件存储架构与要求
  2. 02事件存储技术对比
  3. 03事件版本与幂等性建议
  4. 04模式设计和扩展指导
  5. 05详细模板与示例参考

适用场景

  1. 01为事件溯源系统选择存储技术
  2. 02设计事件流和存储模式
  3. 03优化事件写入与检索
  4. 04规划事件存储扩展

安装

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

$npx skills add https://github.com/wshobson/agents --skill event-store-design

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

附带文件references/details.md

详细介绍

事件存储设计

为事件溯源应用设计事件存储的全面指南。

何时使用本技能

  • 设计事件溯源基础设施
  • 在事件存储技术之间进行选择
  • 实现自定义事件存储
  • 优化事件存储与检索
  • 设置事件存储 schema
  • 规划事件存储的扩展

核心概念

1. 事件存储架构
┌─────────────────────────────────────────────────────┐
│                    Event Store                       │
├─────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │
│  │   Stream 1   │  │   Stream 2   │  │   Stream 3   │ │
│  │ (Aggregate)  │  │ (Aggregate)  │  │ (Aggregate)  │ │
│  ├─────────────┤  ├─────────────┤  ├─────────────┤ │
│  │ Event 1     │  │ Event 1     │  │ Event 1     │ │
│  │ Event 2     │  │ Event 2     │  │ Event 2     │ │
│  │ Event 3     │  │ ...         │  │ Event 3     │ │
│  │ ...         │  │             │  │ Event 4     │ │
│  └─────────────┘  └─────────────┘  └─────────────┘ │
├─────────────────────────────────────────────────────┤
│  Global Position: 1 → 2 → 3 → 4 → 5 → 6 → ...     │
└─────────────────────────────────────────────────────┘
2. 事件存储需求
需求描述
仅追加事件不可变,只能追加
有序按流排序和全局排序
带版本乐观并发控制
订阅实时事件通知
幂等安全处理重复写入

技术对比

技术最适合局限
EventStoreDB纯事件溯源单一用途
PostgreSQL现有 Postgres 技术栈需要手动实现
Kafka高吞吐流式处理不适合按流查询
DynamoDB无服务器、AWS 原生查询限制
Marten.NET 生态.NET 专用

模板和详细示例

完整模板库和详细示例位于 references/details.md。需要具体模板时请阅读该文件。

最佳实践

推荐做法
  • 使用包含聚合类型的事件流 ID - Order-{uuid}
  • 包含关联/因果关系 ID - 用于追踪
  • 从第一天起就对事件进行版本管理 - 为 schema 演进做好规划
  • 实现幂等性 - 使用事件 ID 进行去重
  • 适当建立索引 - 针对你的查询模式
避免做法
  • 不要更新或删除事件 - 它们是不可变的事实
  • 不要存储大负载 - 保持事件小巧
  • 不要跳过乐观并发 - 防止数据损坏
  • 不要忽视背压 - 处理缓慢的消费者

评论

支持 Markdown