用途:为事件溯源(Event Sourcing)应用设计并实现事件存储,适用于搭建事件溯源基础设施、选择事件存储技术、实现自定义事件存储、优化事件存储与检索、设置事件存储模式以及规划扩展。
主要能力:介绍事件存储架构(按聚合划分的流、全局位置顺序);列出核心需求:仅追加、按流与全局有序、带版本、支持订阅、幂等。提供技术选型对比:EventStoreDB 适合纯事件溯源但用途单一;PostgreSQL 适合已有 Postgres 栈但需手动实现;Kafka 适合高吞吐流式但不适合按流查询;DynamoDB 适合无服务器 AWS 原生但有查询限制;Marten 适合 .NET 生态。
使用方式:给出四类模板。PostgreSQL 模板包含 events、snapshots、subscription_checkpoints 表及索引,并提供 Python 实现(append_events 带乐观并发、read_stream、read_all、subscribe 与检查点)。EventStoreDB 模板使用 esdbclient,演示 append_to_stream、get_stream、subscribe_to_all 及 $ce-Category 投影。DynamoDB 模板使用 boto3,以 PK/SK 与 GSI 实现按流读取和全局排序。
最佳实践:流 ID 包含聚合类型(如 Order-{uuid});包含 correlation/causation ID;从第一天起对事件版本化;用事件 ID 实现幂等去重;按查询模式建索引。避免更新或删除事件、存储大负载、跳过乐观并发、忽略背压。
限制:资料未提供具体收费、价格、平台支持范围或性能基准;各技术适用性仅为对比性描述,实际选型需结合自身场景评估。