- URL: イミュータブルデータモデル - kawasima
- 著者: 川島義隆 (@kawasima)
いつ読むか?
- イミュータブルデータモデルを理解したいとき
- イミュータブルデータモデルの原典を参照したいとき
読書メモ
核心
UPDATE を排除してシステム複雑性を下げる設計手法
エンティティ分類
- リソース: 属性に日時を持たない(顧客、商品など)
- イベント: 行われた時刻を記録(注文、支払いなど)
イベント設計の原則
- 日時属性は1つだけ → INSERT ONLY を実現
- 複数日時が必要 → ロングタームイベントパターンで分割
リソース設計の原則
- 更新日時を持たせたくなったら → 隠れたイベントがある証拠
- 削除フラグ → 業務イベント(退会、廃止など)として抽出
避けるべきパターン
- 全テーブルに登録日時・更新日時を一律付与
- 「マスタ」「トランザクション」という曖昧な分類
- 削除フラグの多用
実践ポイント
- 非依存関係には交差エンティティを挿入して NULL を避ける
- 現在状態と変更履歴を明確に分離