いつ読むか?

  • Event Sourcing のストレージのスキーマ例として

読書メモ

概要

DynamoDBでイベントソーシングを実現するための2テーブル構成(Journal + Snapshot)

Journalテーブル

  • イベントを時系列で保存
  • pkey: 集約種別名-hash(集約ID) % シャードサイズ で分散書き込み
  • skey: 集約種別名-集約ID-シーケンス番号

Snapshotテーブル

  • 集約の状態を保存してリプレイを高速化
  • skey=0 に最新スナップショットを保持
  • version 属性で楽観的ロック

重要ポイント

  • JournalとSnapshotは同一トランザクションで書き込み
  • スナップショット以降のイベントを適用して最新状態を復元